Mysql数据库知识点总结

数据库

数据库优点:

数据库是按照特定的格式存储到文件中,通过SQL语句可以方便的对大量的数据进行增删改查操作,数据库是对大量的信息进行管理的高效的解决方案.

数据的存储的方式:

1.数据保存在内存中优点:内存速度快,确定:断电,程序退出就没有,价格高。

2.数据保存在普通文件优点:永久保存 缺点:查询,增加,删除比较麻烦。

3.数据保存在数据库优点:永久保存,通过SQL语句比较方便操作数据库。

DOS命令

DOS命令方式启动步骤:net stop mysql

控制台连接数据库:登录 mysql -uroot -proot

SQL通用的语法:

DDL:数据定义语言,定义database,table等等

DML:数据操作语言,增,删,改数据。

DQL:数据查询语句,查询数据的。

 

Select语句:    

Select指定查询那些列的数据.

*号代表查询所有的列.

From指定查询那张表.

DISTINCT可选,指点显示结果,是否剔除重复数据.

where子句:进行过滤查询.

Like语句:%代表零个或多个任意字符_代表一个字符

Order by指定排序的列,Asc升序 Desc降序 这个语句应该位于Select语句结尾.

 


 

1.单条件查询

  • 运算符有:>, <, >=, <=, =, <>is null is not null

2.多条件查询

  • 连接符有:and(且), or(或), not(不否定语句)

3.范围查询

  • between 开始值 and 结束值,包含开始值和结束值。

  • in(值1,值2)

4.模糊查询

  • 语法:like '表达式' 在表达式里可以写

  • _: 一个任意字符。

  • %: 任意个任意字符。“%鲁%”查询包含鲁字的姓名

5.排序查询

  • 语法:order by 排序字段 排序规则,排序字段2

  • 则有:ASC:升序,从小到大 DESC:降:从大到小

6.聚合查询

  • 聚合函数:用于统计的,常用的聚合函数有;

  • count():统计数量

  • sum();求和

  • avg():求平均值

  • max():求最大值

  • min():求最小值

  • 注意:所有的聚合函数都会忽略null值

7.分组查询

  • 语法:group by 分组字段 having 分组后的过滤条件

  • 注意:select后边,只能跟分组的字段,或者聚合函数

  • where和having的区别:

  • where在分组前执行;having在分组后执行。

  • where过滤原始表的数据;having过滤分组后的数据

  • where里不要写聚合函数;having里可以写聚合函数。

8.分页查询

  • 语法:limit 起始索引。查询数量

9.综合查询

  • 练习1:

DCL:数据控制语言,DBA使用的,管理Mysql的权限,创建用户,授权管理。

TCL:事务管理语言,管理事务的。

约束

1.主键约束

主键:一张表的唯一标识,原则上:每张表必须有主键,且只能一个主键。

  • 主键约束

  • null约束

  • not null 约束

特点:被主键约束的字段,值必须是非空,唯一

语法:primary key

2.唯一约束

  • 效果:唯一约束的字段,值不能重复,但是可以为null

  • 语法:字段名 类型 unique

3.非空约束

  • 效果:非空约束的字段,值不能为null

  • 语法:字段名 类型 not null

4.默认值约束

  • 效果:默认值约束的字段,如果不指定值,取默认值(如果指定null值。值就是null,不取默认值)

  • 语法:字段名 类型 default 默认值

  • null 空值 not null 非空

5.外键约束

  • 效果:外键约束的字段,必须从指定表的主键中取值。

  • 目的:保证数据的一致性和完整性,避免脏数据。

  • 语法:

1.创建表时设置的外键:【constraint 约束名称】foreign key(主键字段) references 主表(主键)

2.已有表里设置外键:alter table 表名称 add [constraing 约束名称]foreign key(外键字段)references 主表(主键)

表关系

1.一对一关系

2.一对多

3.多对多

备份和恢复(了解)

  • 备份(dos命令):musqldump -u用户名 -p密码 数据库名称>E:\lu.sql

  • 恢复(sql语句):

  • 登录Mysql

  • 如果库不存在,就创建库;

  • 使用库

  • 执行SQL:source E:\lu.sql

多表查询

1.多表查询技巧:确定表,确定表之间的关联的条件,从关联条件中得到结果,进行筛选。统计,计算想要的结果。

2.内连接查询:查询必定有关联的数据。

3.外连接查询:查询一张表的全部数据,及另一张表的关联的数据。

4.子查询:查询的技巧,没有固定的语法。

范式

笛卡尔积现象

内连接

内链接的查询的效果:查询两张表之间必定有关联的数据

  • 显示内链接:

    select 字段 from 表1 inner join 表2 on 关联套 件 where 条件

  • 隐示内链接:

  • select 字段 from 表一,表二 where 关联条件 and 条件

  • 外连接

  • 左外连接

    查询左边的全部数据,以及右边的关联的数据

    select 字段 from 表一 left join 表二 on 关联条件 where 条件

  • 右外连接

    查询右边的全部数据,以及左表的关联数据

    select 字段 from 表一 right join 表二 on 表关联条件 where 条件

  • 子查询

  •  是一种查询的技巧,没有固定的语法,查询嵌套.

  • 子查询结果是一行一列:一个值

  • 子查询结果是多行一列:一个集合

  • 子查询结果是多行多列:一张虚拟表

事务(重点)

1.什么是事务

  • 什么是事务:数据库的概念,指 事务组成的一级操作单元,要么全部成功,要么全部失败。

  • 事务的作用:保证多个操作要么全部成功,要么全部失败。

  • 什么时候使用事务:多条DML语句执行时,要求都成功或都失败。事务无关查询操作

  • 事务的经典使用场景:张三要给李四转账100

    回滚事务:SQL语句

    • 开启事务

    • 执行SQL:张三扣钱100

    • 执行SQL:李四加钱100

    • 关闭事务:

      • 提交事务:SQL语句生效

 

2.事务管理

  • 数据准备

2.1手动提交事务管理

2.2自动提交的事务管理

  • 自动提交的开关设置和查询

  • 通过自动提交开关,进行事务管理

3.回滚点

  • 回滚点:事务里可以回滚到指定额回滚点,二不必回滚事务里所有的操作

4.事务特性和隔离级别

4.1事务的四大特性ACIL(面试题)

  • A:Atomicity,原子性。事务不可分割,即:事务里所有操作要成功,都成功;要失败,都失败。不可能成功一半

  • C: Consistency,一致性。事务提交前后,数据是完整一致的

  • I:Isolation,隔离性。多事务并发时,理论上事务应该是完全隔离,相互独立、互不影响的

  • D:Durability,持久性。事务一旦提交,数据变更就永久保存到磁盘文件上了。

4.2事务的隔离级别和并发问题

4.2.1事务并发问题

  • 脏读:一个事务里,读取到里另一个事务未提交的数据

  • 不可以重复:一个事务里,多次读取的数据不一致;受到了其他事务的update干扰

  • 虚度、幻读:一个事务里,多次读取的数据数量不一致;受到了其他事务的insert,delete干扰

4.2.2事务的隔离级别

隔离级别

脏读

不可重复读

虚读

read uncommitted

read committed

repeatable read

serializable

 

4.3事务的隔离级别效果的演示

  • 隔离级别的操作

4.3.1演示read uncommitted

  1. 开启两个连接:A(效果演示的事务)和B(干扰事务)

  2. 修改A的隔离级别:read uncomitted

  3. A和B都开启事务

  4. A查询tom的确定原始数据

  5. B修改tom的余额,但是不提交事务

  6. A在查询tom的余额

  7. 如果查询结果改变了,说明存在战脏读问题。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值