第一节 多表关系
1、一对多
2、多对多
3、一对一
第二节 多表查询概述
1、笛卡尔积:select * from A,B;
2、多表查询分类
第三节 内连接
1、内连接的结果集
2、语法
隐式内连接:SELECT 字段列表 FROM 表1 , 表2 WHERE 条件 ... ;
显式内连接:SELECT 字段列表 FROM 表1 [ INNER ] JOIN 表2 ON 连接条件 ... ;
第四节 外连接
1、语法
A、左外连接:SELECT 字段列表 FROM 表1 LEFT [ OUTER ] JOIN 表2 ON 条件 ... ; 【查询左表所有信息,也包括左右表交集信息】
B、右外连接:SELECT 字段列表 FROM 表1 RIGHT [ OUTER ] JOIN 表2 ON 条件 ... ; 【查询右表所有信息,也包括左右表交集信息】
第五节 自连接【自己连接自己】
1、语法:SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件 ... ; 【可以是内连接,也可以是外连接】
2、注意事项:在自连接查询中,必须要为表起别名,要不然我们不清楚所指定的条件、返回的字段,到底是哪一张表的字段。
3、联合查询【union】语法:就是把多次查询的结果合并起来,形成一个新的查询结果集
SELECT 字段列表 FROM 表A ... UNION [ ALL ] SELECT 字段列表 FROM 表B ....;
4、联合查询的注意点
对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
union all 会将全部的数据直接合并在一起,union会对合并之后的数据去重。
第六节 子查询
1、概念
A、SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。
B、语法:SELECT * FROM t1 WHERE column1 = ( SELECT column1 FROM t2 );【子查询外部的语句可以是INSERT/UPDATE/DELETE/SELECT的任何一个】
C、分类
2、标量子查询
A、标量子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询称为标量子查询。
B、常用的操作符:= <> > >= < <=
C、查询员工表中所有销售部的员工:select * from emp where dept_id = (select id from dept where name = '销售部');
3、列子查询
A、列子查询返回的结果是一列(可以是多行),这种子查询称为列子查询
B、常用操作符:IN、NOT IN、ANY、SOME、ALL
C、查询比财务部所有人工资都高的员工信息:
select * from emp where salary > all ( select salary from emp where dept_id =(select id from dept where name = '财务部') );
4、行子查询
A、子查询返回的结果是一行(可以是多列),这种子查询称为行子查询
B、常用的操作符:=、<>、IN、NOT IN
C、查询与“张无忌”的薪资及直属领导相同的员工信息
select * from emp where (salary,managerid) = (select salary, managerid from emp where name = '张无忌');
select * from emp where salary = 2000 and managerid = 1 等价于 select * from emp where (salary,managerid) = (2000,1);
5、表子查询
A、子查询返回的结果是多行多列,这种子查询称为表子查询
B、常用的操作符:IN
C、查询与“鹿杖客”,“宋远桥”的职位和薪资相同的员工信息
select * from emp where (job,salary) in ( select job, salary from emp where name ='鹿杖客' or name = '宋远桥' );
D、查询入职日期是“2006-01-01”之后的员工信息,及其部门信息
select e.*, d.* from (select * from emp where entrydate > '2006-01-01') e left join dept d on e.dept_id = d.id ;
第七节 总结
标签:salary,多表,--,30,查询,SELECT,where,select,emp From: https://www.cnblogs.com/Flower--Dance/p/16743692.html