🌺前言
介绍常见的几种sql多表查询
1.内连接
意义:代表查询两个表的交集
隐式写法 :
sql
select 字段列表 from 表1,表2 where 条件
select * from tb_emp,tb_dept where tb_emp.dept_id=tb_dept.id;
-- 如果表的名字很长 可以为表起别名
select * from tb_emp e, tb_dept d where e.dept_id=d.id;
显示写法:
sql
select 字段名称 from 表1 [inner] join 表2 on 连接条件
select * from tb_emp inner join tb_dept on tb_emp.dept_id=tb_dept.id;
select * from tb_emp e inner join tb_dept d on e.dept_id=d.id;
-- 上面的 inner可以省略。
select * from tb_emp e join tb_dept d on e.dept_id=d.id;
2.外连接
1. 左外链接
意义:查询左表全部数据以及交集
sql
select 字段名称 from 表1 left [outer] join 表2 on条件
//表1和两表交集
2. 右外链接
意义:查询右表全部数据以及交集
sql
select 字段名称 from 表1 right [outer] join 表2 on条件
//表2和两表交集
select * from tb_emp e left outer join tb_dept d on e.dept_id = d.id;
select * from tb_emp e left join tb_dept d on e.dept_id=d.id;
-- 2.查询dept表的所有数据,和对应的员工信息(右外连接)
select * from tb_emp e right join tb_dept d on e.dept_id=d.id;
3.自连接
1. 自己和自己相连接查询。
sql
select * from A表 join A表 on 连表条件
4.子查询
一个查询结果作为一个查询语句的条件 -- 查询市场部的员工信息----- -- 子查询返回的结果一列一条记录。 这个时候可以用=
sql
select * from tb_emp where dept_id=(select id from tb_dept where name='市场部')
sql
-- 查询市场部和研发部员工的信息。in
-- -- 查询市场部和研发部员工的信息。
-- a) 查询市场部和研发部的编号
select id from tb_dept where name in('市场部','研发部')
-- b) 再员工表中根据部门编号查询员工信息
select * from tb_emp where dept_id in (select id from tb_dept where name in('市场部','研发部'))
5.组合查询
多个查询的结果 组合到一起。
sql union sql --->把这两条sql查询的结果组合到一起。如果有重复记录则合并成一条。 sql union all sql--->把这两条sql查询的结果组合到一起。如果有重复记录,不合并。
注意: 这两条sql返回的字段必须一样。
sql
select name from tb_emp where salary>8000
UNION
select * from tb_emp where age>40;
目录
文章最后更新于 2024-08-30 16:51:54
作者:徐徐版权声明:转载请注明文章出处
留言

~~空空如也