深入浅出:使用MSSQL连接表

1. 引言

MSSQL是一个常用的关系型数据库管理系统。在数据分析过程中,经常需要将多个表连接起来进行查询和分析。本文将介绍MSSQL连接表的方法和相关操作。

2. 表的连接方式

2.1 内连接

内连接是连接符号为“JOIN”的连接方式。它的作用是返回两个表中共有的部分。在内连接时,还可以使用“ON”关键字来指定连接条件。

SELECT 表1.列1, 表2.列2

FROM 表1

INNER JOIN 表2

ON 表1.列 = 表2.列;

这里用到了“SELECT”关键字,表示查询某些列。其中,“表1.列1”和“表2.列2”是要查询的列名。在“FROM”后面指定要查询的表,这里分别为“表1”和“表2”。在“ON”后面指定连接条件,这里为“表1.列 = 表2.列”,表示连接两个表的共同列。

2.2 左连接

左连接是连接符号为“LEFT JOIN”的连接方式。它的作用是返回左侧表所有的行和右侧表符合条件的行,左侧表没有匹配行的列的值为NULL。

SELECT 表1.列1, 表2.列2

FROM 表1

LEFT JOIN 表2

ON 表1.列 = 表2.列;

这里的“LEFT JOIN”表示左连接。如果需要查询哪些行不在右侧表中,可以在查询的条件中使用“WHERE”。

2.3 右连接

右连接是连接符号为“RIGHT JOIN”的连接方式。它的作用与左连接类似,返回右侧表所有的行和左侧表符合条件的行,右侧表没有匹配行的列的值为NULL。

SELECT 表1.列1, 表2.列2

FROM 表1

RIGHT JOIN 表2

ON 表1.列 = 表2.列;

这里的“RIGHT JOIN”表示右连接。如果需要查询哪些行不在左侧表中,可以在查询的条件中使用“WHERE”。

3. 操作实例

3.1 创建表格

先创建两个简单的表,包含学生编号、姓名和成绩信息,每个表中包含4个学生信息(共有2个重复项)。

CREATE TABLE Table1

(ID INT PRIMARY KEY,

Name VARCHAR(50),

Grade INT);

CREATE TABLE Table2

(ID INT PRIMARY KEY,

Name VARCHAR(50),

Grade INT);

INSERT INTO Table1(ID, Name, Grade)

VALUES (1, 'Tom', 90),

(2, 'Jerry', 80),

(3, 'Lucy', 85),

(4, 'Mary', 70),

(2, 'Jerry', 80),

(3, 'Lucy', 85);

INSERT INTO Table2(ID, Name, Grade)

VALUES (1, 'Tom', 90),

(2, 'Jerry', 80),

(5, 'Ella', 83),

(6, 'Peter', 95),

(2, 'Jerry', 80),

(4, 'Mary', 70);

3.2 内连接

以内连接为例,先查询出共有的学生编号和姓名,以及他们在第一次考试和第二次考试(两个表)中的成绩。

SELECT Table1.ID, Table1.Name, Table1.Grade, Table2.Grade

FROM Table1

INNER JOIN Table2

ON Table1.ID = Table2.ID

AND Table1.Name = Table2.Name;

查询结果如下:

可以看到,共有4个学生编号和姓名相同,他们在两个表中的成绩也都被查询出来。

3.3 左连接

以左连接为例,查询出第一个表中的所有学生编号和姓名,以及他们在第二个表中的成绩。如果第二个表中没有对应的成绩,则显示为NULL。

SELECT Table1.ID, Table1.Name, Table2.Grade

FROM Table1

LEFT JOIN Table2

ON Table1.ID = Table2.ID

AND Table1.Name = Table2.Name;

查询结果如下:

可以看到,所有第一个表中的学生在第二个表中的成绩都被查询出来了,并且表格中当第一个表中的学生在第二个表中没有记录时,对应的成绩为NULL。

3.4 右连接

以右连接为例,查询出第二个表中的所有学生编号和姓名,以及他们在第一个表中的成绩。如果第一个表中没有对应的成绩,则显示为NULL。

SELECT Table1.ID, Table1.Name, Table2.Grade

FROM Table1

RIGHT JOIN Table2

ON Table1.ID = Table2.ID

AND Table1.Name = Table2.Name;

查询结果如下:

可以看到,所有第二个表中的学生在第一个表中的成绩都被查询出来了,并且表格中当第二个表中的学生在第一个表中没有记录时,对应的成绩为NULL。

4. 总结

本文介绍了MSSQL中三种不同连接方式,包括内连接、左连接和右连接。其中内连接返回共有的部分,左连接返回左侧表所有的行和右侧表符合条件的行,右连接返回右侧表所有的行和左侧表符合条件的行。这些连接方式是在数据分析和处理中非常重要的操作。

数据库标签