复杂查询
1、连接查询
a、内连接
特点:
两张表相匹配的显示,不匹配的不显示
格式一:
select 字段列表 from 表1,表2,……
where 表1.列=表2.列 and ……
格式二:
select 字段列表 from 表1 join 表2
on 表1.列=表2.列 join 表3
on……
例如:
select * from emp a,dept b
where a.deptno=b.deptno;
select * from emp join dept
on emp.deptno=dept.deptno;
显示在NEW YORK工作的员工的信息以及部门名称
select emp.* ,dname from emp,dept
where emp.deptno=dept.deptno and loc='NEW YORK';
select a.*,dname from emp a join dept b
on a.deptno=b.deptno and loc='NEW YORK';
----自连接(内连接的特殊形式)
显示跟SMITH在同一个部门的其他员工信息
select b.* from emp a,emp b
where a.ename='SMITH' and a.deptno=b.deptno
and b.ename!='SMITH'
b、外连接
1)左向外联接
特点:左表全部显示,右表只显示匹配的
格式1:
select 字段列表 from 表1,表2
where 表1.列=表2.列(+);
格式2:
select 字段列表 from 表1 left outer join 表2
on 表1.列=表2.列;
select * from emp,dept
where dept.deptno=emp.deptno(+);
select * from dept left outer join emp
on emp.deptno=dept.deptno;
2)右向外联接
特点:右表全部显示,左表只显示匹配的
格式1:
select 字段列表 from 表1,表2
where 表1.列(+)=表2.列;
格式2:
select 字段列表 from 表1 right outer join 表2
on 表1.列=表2.列;
select * from emp,dept
where emp.deptno(+)=dept.deptno;
select * from dept right outer join emp
on dept.deptno=emp.deptno;
3)完全外连接
特点:一张表全部显示,另一张表只显示匹配的
select 字段列表 from 表1 full join 表2
on 表1.列=表2.列;
例如:
select * from emp full join dept
on emp.deptno=dept.deptno;
1、连接查询
a、内连接
特点:
两张表相匹配的显示,不匹配的不显示
格式一:
select 字段列表 from 表1,表2,……
where 表1.列=表2.列 and ……
格式二:
select 字段列表 from 表1 join 表2
on 表1.列=表2.列 join 表3
on……
例如:
select * from emp a,dept b
where a.deptno=b.deptno;
select * from emp join dept
on emp.deptno=dept.deptno;
显示在NEW YORK工作的员工的信息以及部门名称
select emp.* ,dname from emp,dept
where emp.deptno=dept.deptno and loc='NEW YORK';
select a.*,dname from emp a join dept b
on a.deptno=b.deptno and loc='NEW YORK';
----自连接(内连接的特殊形式)
显示跟SMITH在同一个部门的其他员工信息
select b.* from emp a,emp b
where a.ename='SMITH' and a.deptno=b.deptno
and b.ename!='SMITH'
b、外连接
1)左向外联接
特点:左表全部显示,右表只显示匹配的
格式1:
select 字段列表 from 表1,表2
where 表1.列=表2.列(+);
格式2:
select 字段列表 from 表1 left outer join 表2
on 表1.列=表2.列;
select * from emp,dept
where dept.deptno=emp.deptno(+);
select * from dept left outer join emp
on emp.deptno=dept.deptno;
2)右向外联接
特点:右表全部显示,左表只显示匹配的
格式1:
select 字段列表 from 表1,表2
where 表1.列(+)=表2.列;
格式2:
select 字段列表 from 表1 right outer join 表2
on 表1.列=表2.列;
select * from emp,dept
where emp.deptno(+)=dept.deptno;
select * from dept right outer join emp
on dept.deptno=emp.deptno;
3)完全外连接
特点:一张表全部显示,另一张表只显示匹配的
select 字段列表 from 表1 full join 表2
on 表1.列=表2.列;
例如:
select * from emp full join dept
on emp.deptno=dept.deptno;