MySQL多表查询
MySQL多表查询
多表查询:
从多张表中查询数据
示例:
1 | select * from tb_emp,tb_dept where tb_emp.dept_id = tb_dept.id; |
内连接:
相当于查询A、B表交集部分的数据
-
隐式内连接:
1
select 字段列表 from 表1,表2 where 条件....;
示例:
1 | select tb_emp.name,tb_dept.name from tb_emp,tb_dept where tb_emp.dept_id = tb_dept.id; |
-
显式内连接:
1
select 字段列表 from 表1 [inner] join 表2 on 连接条件
示例:
1 | select tb_emp.name,tb_dept.name from tb_emp inner join tb_dept on tb_emp.dept_id=tb_dept.id; |
外连接:
-
左外连接:
查询左表所有数据(包括两张交集部分数据)
1
select 字段列表 from 表1 left [outer] join 表2 on 连接条件...;
示例:
1 | select tb_emp.name,tb_dept.name from tb_emp left join tb_dept on tb_emp.dept_id=tb_dept.id; |
-
右外连接:
查询右表所有数据(包括两张表交集部分数据)
1
select 字段列表 from 表1 right [outer] join 表2 on 连接条件....;
示例:
1 | select tb_emp.name,tb_dept.name from tb_emp right join tb_dept on tb_emp.dept_id = tb_dept.id; |
子查询:
SQL语句中嵌套select语句,称为嵌套查询,又称为子查询
形式:
select *from t1 where column1 = (select column1 from t2);
子查询外部的语句可以是insert / update / delete / select 的任何一个,最常见的是select.
-
标量子查询:
子查询返回的结果为单个值(数字、字符串、日期等),最简单的形式
-
常用的操作符:
= <> > >= < <=
1
2/*查询部门id为教研部的人员*/
select * from tb_emp where dept_id = (select id from tb_dept where name = '教研部');1
select * from tb_emp where entrydate>(select entrydate from tb_emp where name='方东白');
-
-
列子查询:
子查询返回的结果是一列(可以是多行)
-
常用的操作符:
in,not in等
1
select * from tb_emp where dept_id in (select id from tb_dept where name = '教研部' or name='咨询部');
-
-
行子查询
子查询返回的结果是一行(可以是多列)。
-
常用的操作符号:
=,<>,in,not,in
1
select *from tb_emp where(entrydate,job)=(select entrydate,job from tb_emp where name = '韦一笑');
-
-
表子查询:
子查询返回的结果是多行多列,常作为临时表
-
常用的操作符:
in
1
select e.*, d.name from (select * from tb_emp where entrydate > '2006-1-1') e ,tb_dept d where e.dept_id = d.id;
-
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 NING / MiRACLE!