Mysql 多表查询与事物

表关系

一对多

在多的里面建立外键与其连接

建立外键 constraint 外键名称 foreign key 外键列名 reference 主表名 主表列名

多对多

要建立三张表 至少包含两外键 对应关键两方的主键

一对一

在任意一方建立外键 关联对方主键 并设置唯一

笛卡尔积 集合所有表组合的情况

清除笛卡尔积方式 添加条件 添加外键列名= 主表 列名 id

内连接 用左边表去匹配右边表记录 从表.外键=主表.主键

隐式内连接

select 字段名 from 左表名 ,右表名 where 条件

显示内连接

select 字段名 from 左表 inner join 右表 on条件

内连接 查询步骤

1 确定查询哪些表

2 确定表连接的条件

3 确定查询的条件

4确定查询的字段

左外连接

select 字段名 from左表 left join 右表 on 条件

用左表记录去匹配右表记录 如果符合条件显示 否则显示null 可以理解为在内连接基础上左表信息全部显示

右外连接

select 字段名 from 左表 right join 右表 on 条件

用右表的记录匹配左表的记录 如果符合条件显示 否则显示null 可以理解为在内连接基础上右表信息全部显示

子查询

一个查询的结果作为另一个查询的条件

有查询嵌套的称为子查询

子查询需要带括号

子查询结果是单行单列

select 查询字段 from 表名 where 字段=(子查询)

子查询结果是单列 多行

select 查询字段 from 表名 where 字段 in (子查询)

子查询结果是多行多列

select 查询字段 (子查询) from 表名 where 条件

事物

事物 在开发中 处理业务 里面的sql语句 必须同时成功 事物执行是一个整体 所有sql必须成功 只要有一条异常 所有sql语句都要回滚 整个业务失败

开启事物 start transaction

提交事物 commit

回滚事物 rollback

事物的四大特性

   ACID

原子性(Atomicity) 每个事物都是一个整体 不可再分 要么同时执行成功 要么同时执行失败

一致性(Consistency) 事物在执行前后 数据库的状态保持一致 就好比转账 前后总金额必须保持一致

隔离性(Isolation) 事物与事物之间不应该互相影响 执行时保持隔离状态

持久性(Durability) 事物一旦执行成功 对数据库的修改是持久的 就算关机也是保存下来的

mysql数据库的四种隔离级别

1 读未提交 隔离级别 read uncommitted 脏读 不可重复读  读取到未提交的事物

2 读已提交  隔离级别 read committed 不可重复读 读已提交的事物

3 可重复读  隔离级别 repeatable read 可重复读

4 串行化  隔离级别 serializable 

前三个都会出现幻读

一个事务中两次读取的数量不一致 要求在一个事务中 多次读取的数量是一致的 这是insert和delete引发的问题

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值