多表查询
关系:
一对多,一对一,多对一
笛卡尔积
定义:
笛卡尔积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。
连接查询
内连接:
隐式内连接:
select ... from 表A ,表B where 条件
显式内连接:
select ... from 表A join 表B on 条件;
外连接:
左外连接:
select ... from 表A left join 表B on 条件;
右外连接:
select ... from 表A right join 表B on 条件;
自查询:
定义:
MySQL的自查询是指在一个表中通过自身的多次查询来处理数据。自查询通常使用别名来给表区分不同的实例。
select ... from 表A as a , 表A as b where 条件;
联合查询
定义:
顾名思义,将两条SQL语句联合为一条SQL语句,将两条SQL语句查询的结果拼在一起,相当于数学中的并集。
关键字:
union,union all
语法:
select * from 表A
union
select * from 表B;
select * from 表A
union all
select * from 表B;
区别:
union:会去掉重复的数据。
union all:直接将所有数据拼在一起,不存在去重操作。
子查询
定义:
SQL语句中嵌套select语句,又称嵌套查询,
分类:
根据select返回的数据,可分为,标量子查询,行子查询,列子查询,表子查询
标量子查询:select返回是一个数
行子查询:select返回是一列多行
列子查询:select返回是一行多列
表子查询:select返回是多行多列(一张表)