首先,新建测试表
表A:
表B:
一.连接查询
1.左外连接
left join即以左表记录为基础,左表记录完全显示,右表只显示满足条件的记录,记录不足的地方将显示null
SELECT* from A a LEFT JOIN B b ON a.ID=b.ID;
结果:
92语法:用+实现,+写在哪个表后面,那个表就是匹配表,此处左连接,A为基表,B为匹配表
SELECT* from A a,B b WHERE a.ID=b.ID(+);
2.右外连接
right join即以右表为基础,右表记录完全显示,左表只显示满足条件的记录,记录不足的地方将显示null
SELECT* from A a RIGHT JOIN B b ON a.ID=b.ID;
92语法:
SELECT* from A a,B b WHERE a.ID(+)=b.ID;
3.全外连接
full join 两表都不做限制,记录不足的地方都显示null
SELECT* from A a full join B b ON a.ID=b.ID;
4.内连接
join/inner join 只显示满足条件的结果,与多表查询结果一样
SELECT* from A a INNER JOIN B b ON a.ID=b.ID;
自然连接(natural join):也相当于内连接的一种,可以使用using子句选择需要用到的自然连接的列,使用using可以在多个列满足条件时选择
如:
表A:
表B:
SELECT* from A a natural join B b ;
5.自连接
只有一个表自己连接自己
新建EMP表:
需求:找出员工的管理者
分析:2是一个员工同时也是1的管理者,此时,需要用到自连接
SELECT EM.NAME employee,MAN.NAME manager from EMP em,EMP man WHERE EM.EMP_ID=MAN.MANAGER_ID;
二.多表查询
语法:
select t1.column1,t2.column2...from
t1,t2 where t1.column=t2.column;
在where子句中写入连接条件
SELECT* from A a,B b WHERE a.ID=b.ID;