专业编程基础技术教程

网站首页 > 基础教程 正文

SQL SERVER:多表查询之—外连接、自连接(21)

ccvgpt 2024-08-08 13:03:20 基础教程 14 ℃

一、外连接:

1、外连接概念:多表查询时,至少返回一个表里的所有记录,根据匹配条件有选择性的返回另一张表的记录(即两表交集的部分)

SQL SERVER:多表查询之—外连接、自连接(21)

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

Tags:

最近发表
标签列表