emp15条记录,dept表4条记录
笛卡儿积emp每一条对应4条记录,60条记录
不区分主从表,与连接顺序无关,两张表均满足条件则出现在结果集中(交集)
寻找两表中字段名称相等的字段进行连接(等同于join,会去重)
有主从表之分,与连接顺序有关。左外连接,以左表为驱动表,匹配表依次查询,匹配表中找不到以null填充
同一个表里面的数据相关联
--查询所有的员工的姓名和上级领导的姓名 emp(内连接) --ename所有员工姓名,mgr领导编号empno员工编号 select e1.ename ename,e2.ename mgrname from emp e1,emp e2 where e1.mgr = e2.empno; select e1.ename ename ,e2.ename mgrname from emp e1 left join emp e2 on e1.mgr=e2.empno;子查询的结果返回一行
select dname from dept where deptno = (select deptno from emp where empno=7788)查询的结果返回一个集合
--查询工资大于2000的员工部门名称 select dname from dept where deptno = any(select deptno from emp where sal >2000); =ANY 含义就是in >any大于最小值 <any小于最小值 >all 大于最大值 <all 小于最小值1.IN:
主查询的条件字段和子查询返回字段必须一致。先执行子查询,将返回子查询的结果返回给主查询,再执行主查询
2.EXISTS:
主查询不需要出现条件字段,先执行主查询,主查询的表的字段传递给子查询,如果在子查询找到相应的结果,子查询为true,将该结果显示在结果显示在结果集中。where子查询为false,显示null;
1.UNION所有内容都查询,重复的只显示一次
select * from emp where deptno = 20 union select * from emp where sal > 2000;2.UNION ALL,显示所有内容包括重复的。