MySQL笔记——复合查询&内外连接

集合查询

 

子查询

 

单行子查询

select * from EMP WHERE deptno = (select deptno from EMP where ename='smith');

 

多行子查询

in:查询和10号部门的工作相同的雇员的名字,岗位,工资,部门号,但是不包含10自己的

select ename,job,sal,empno from emp where job in 
(select distinct job from emp where deptno=10) and deptno<>10;



all:显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号

select ename, sal, deptno from EMP where sal > all
(select sal from EMP where deptno=30);



any:显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号

select ename, sal, deptno from EMP where sal > any
(select sal from EMP where deptno=30);

 

 

合并查询

 

union:该操作符用于取得两个结果集的并集,当使用该操作符时,会自动去掉结果集中的重复行

 

union all:该操作符用于取得两个结果集的并集,当使用该操作符时,不会去掉结果集中的重复行

 

 

表的内连和外连

 

多表查询必须进行连接才能进行查询,不能直接使用where进行查询

 

内连接

 

select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件

前面学习的都是内连接

 

外连接

 

左外连接:如果联合查询,左侧的表完全显示我们就说是左外连接

select 字段名  from 表名1 left join 表名2 on 连接条件

 

右外连接:如果联合查询,右侧的表完全显示我们就说是右外连接

select 字段名  from 表名1 right join 表名2 on 连接条件

 

连接可以嵌套

eg:
select e.last_name, e.first_name, dm.dept_name

from (employees e left join dept_emp de on e.emp_no = de.emp_no)

left join departments dm on de.dept_no = dm.dept_no;

 

你可能感兴趣的:(MySQL)