一、外连接:
1、外连接概念:多表查询时,至少返回一个表里的所有记录,根据匹配条件有选择性的返回另一张表的记录(即两表交集的部分)
2、外连接分类及语法
1)左外连接
语法:SELECT <字段列表> FROM <表1> LEFT [OUTER] JOIN <表2> ON <连接条件>
2)右外连接
语法:SELECT <字段列表> FROM <表1> RIGHT [OUTER] JOIN <表2> ON <连接条件>
3、例:
1)在MyServer数据库查询所有员工,要求包含部门名称
A:使用左外连接
USE MyServer
GO
SELECT E.*,D.D_Name FROM Employee E
LEFT OUTER JOIN Department D ON E.D_Id=D.D_Id
GO
B:使用右外连接
USE MyServer
GO
SELECT E.*,D.D_Name FROM Department D
RIGHT JOIN Employee E ON E.D_Id=D.D_Id --OUTER可省略
GO
4、外连接的特点:
1)参与外连接的表有主从之分;
2)以主表的每行数所匹配从表的数据列,将符合条件的数据直接返回到结果集中,对哪些不符合条件的列,将被填上NULL值再返回到结果集中;
3)左连接与右连接可进行互换,只需变化表的位置即可,通常是用左连接更多。
二、自连接:
1、自连接概念:故名思义,就是自己跟自己进行连接,即可用内连接查询,也可用外连接查询,但表必须要使用别名。
2、语法:
1)内连接方式:
SELECT * FROM <表名1 AS 别名1>INNER JOIN <表名1 AS 别名2﹥ON <连接条件>...
2)外连接方式:
SELECT * FROM <表名1 AS 别名1> LEFT JOIN <表名1 AS 别名2﹥ON <连接条件>...
3、例:
1)查询员工表里员工对应的上司,包含员工姓名、上司姓名两字字段
USE MyServer
GO
SELECT A.E_Name 员工姓名,B.E_Name 上司姓名 FROM Employee A
JOIN Employee B ON A.E_Lea=B.E_Id
GO
2)查询员工表里所有员工对应的上司,包含员工姓名、上司姓名两字字段
USE MyServer
GO
SELECT A.E_Name 员工姓名,B.E_Name 上司姓名 FROM Employee A
LEFT JOIN Employee B ON A.E_Lea=B.E_Id
GO