==>多表查询
1.1 内连接
查询的A 表 和 B 表交集部分的数据 。
隐式内连接:
select 字段列表 from 表1 , 表2 where 条件 ... ;
显式内连接:
select 字段列表 from 表1 [ inner ] join 表2 on 连接条件 ... ;
1.2 外连接
左外连接: 完全包含左表数据 (包含交集部分的数据)
select 字段列表 from 表1 left [ outer ] join 表2 on 条件 ... ;
右外连接: 完全包含右表数据 (包含交集部分的数据)
select 字段列表 from 表1 right [ outer ] join 表2 on 条件 ... ;
1.3 子查询
1). 概念
SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。
select * from ... where id = (select * from xxxx where name = "....")
2). 分类
根据子查询结果不同,分为:
1.标量子查询:单个值(数字、字符串、日期等)
常用的操作符:= <> > >= < <=
- 列子查询:返回的数据是一列,可以是多行
常用的操作符:IN 、NOT IN
3.行子查询:返回的数据是一行,可以是多列
常用的操作符:= 、<> 、IN 、NOT IN
4.表子查询:返回的数据多行多列, 通过用作临时表
常用的操作符:IN
==> 事务
1.概述
是一组操作, 这组操作要么全部成功, 要么全部失败 .
2. 操作
- 开启事务:start transaction; / begin ;
- 提交事务(成功时执行):commit ;
- 回滚事务(出错时执行):rollback ;
3. 四大特性 ACID
● 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
● 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
● 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
● 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。
小结:怎么做多表查询的需求?
1、要分析查询的数据涉及到哪些表
2、找出关联条件(外键=主键)去除无效笛卡尔数据+where其他额外的筛选条件
3、如果有分组,完成分组操作,有条件补充分组条件
4、找出需求中需要的数据放在(select)后
5、排序分页