介绍
多表查询就是同时查询两个或两个以上的表,因为有的时候用户在查看数据的时候,需要显示的数据来自多张表,多表查询有以下分类:
- 交叉连接查询:
select * from A,B;
- 内连接查询(使用的关键字inner join --inner可以省略)
#隐式内连接(SQL92标准)
select * from A,B where 条件;
#显示内连接(SQL99标准)
select * from A inner join B on 条件;
- 外连接查询(使用的关键字outer join --outer可以省略)
#左外连接
select * from A left outer join B on 条件;
#右外连接
select * from A right outer join B on 条件;
#满外连接
select * from A full outer join B on 条件;
- 子查询:select的嵌套
- 表自关联:将一张表当成多张表来用
注意: 外键约束对于多表查询并无影响
交叉连接查询
- 交叉连接查询返回被连接的两个表所有数据行的笛卡尔积
- 笛卡尔积可以理解为一张表的每一行去和另外一张表的任意一行进行匹配
- 假如A表有M行数据,B表有N行数据,则返回M*N行数据
- 笛卡尔积会产生很多冗余的数据,后期的其他查询可以在该集合的基础上进行条件筛选
#格式:
select * from 表1,表2,表3...;
#实现:
select * from dept,emp;
内连接查询
内连接查询求多张表的交集
#格式:
select * from A,B where 条件; --隐式内连接(SQL92标准)
select * from A inner join B on 条件; --显示内连接(SQL99标准)
#实现:
//查询每个部门的所属员工
select * from