MySQL学习笔记-Part3
MySQL 学习笔记 Part3
学习链接来自黑马程序员: https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=22&share_source=copy_web&vd_source=c76bb3d6e0326c966bf1bf32db90eb22
函数
字符串函数
数值函数
例子
生成一个六位数的随机验证码
1 | -- 生成一个六位数的随机验证码 |
日期函数
流程函数
约束
例子
1 | create table user( |
我们并未设定id,id自动补充,为自增。
外键约束
用来让两张表之间的数据建立连接,从而保证数据的一致性和完整性。
外键删除更新行为
多表查询
一对多
一对多:建立一个外键约束即可。
多对多
多对多:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键。
1 | -- 多对多 ---------------- |
一对一
一般用来单表拆分。
实现:在任意一方加入外键,关联另一方主键,并且设置外键唯一(UNIQUE)。
多表查询分类
- 内连接:查询A、B交集部分数据。
- 左外连接:查询左表所有数据,以及两张表交集数据。
- 右外连接:查询右表所有数据,以及两张表交集数据。
- 自连接:当前表与自身的连接查询,自连接必须使用表别名。
内连接
1 | -- 1. 查询每一个员工的姓名 , 及关联的部门的名称 (隐式内连接实现) |
外连接
1 | -- 外连接演示 |
自连接
需要把表看成两张表。
1 | -- 自连接 |
联合查询
子查询
列子查询
行子查询
子查询返回的结果是一行,可以是多列。
例子
1 | -- 行子查询 |
表子查询
子查询返回的结果是多行多列。
也就是说,把查询到的结果当作一个表,再联合查找。
事务
事务是一组操作的集合,即这些操作要么同时成功、要么同时失败。
事务操作
流程:
- select @@autocommit; 查询提交方式,默认自动提交,为1。
- set @@autocommit = 0; 设置提交方式为手动。
- start transaction 或 begin; 开启事务
- commit; 提交事务
- rollback; 回滚事务
事务四大特性
- 原子性(Atomicity ):一个事务是一个不可再分割的整体,要么全部成功,要么全部失败
- 一致性(Consistency ):一个事务可以让数据从一种一致状态切换到另一种一致性状态
- 隔离性(Isolution ):一个事务不受其他事务的影响,并且多个事务彼此隔离
- 持久性(Durability ):一个事务一旦被提交,在数据库中的改变就是永久的,提交后就不能再回滚
事务并发存在的问题
- 脏读
- 不可重复读
- 幻读
类似于计组的 读后写、写后读、 写后写 问题。
事务的隔离级别
数据库事务的隔离级别有4个,由低到高依次为Read uncommitted(未授权读取、读未提交)、Read committed(授权读取、读提交)、Repeatable read(可重复读取)、Serializable(序列化),这四个级别可以逐个解决脏读、不可重复读、幻象读这几类问题。
1 | -- 查看事务隔离级别 |