1. 连接查询
连接查询是指通过两张或多张表的公共字段将它们连接起来,生成一个新的虚拟表。在SQL SERVER中,连接查询用于解决查询多张表中的数据,以满足业务需求。
1.1 内连接查询
内连接查询也称为等值连接查询,它只返回两个表中字段相等的行。内连接查询通常使用INNER JOIN
关键字实现。下面是一个内连接查询的例子:
SELECT *
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
解释:上面的代码查询了table1和table2两张表中所有字段,并且将它们连接起来。连接条件是table1.column_name
等于table2.column_name
。
1.2 外连接查询
外连接查询包括左外连接查询和右外连接查询。左外连接查询返回左表中的所有行,以及右表中与左表中的行匹配的行。右外连接查询返回右表中的所有行,以及左表中与右表中的行匹配的行。
在SQL SERVER中,左外连接使用LEFT JOIN
关键字实现,右外连接使用RIGHT JOIN
关键字实现。下面是一个左外连接查询的例子:
SELECT *
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
解释:上面的代码查询了table1和table2两张表中所有字段,并且将它们进行左外连接。连接条件是table1.column_name
等于table2.column_name
。
2. 合并查询
合并查询用于将两个或多个SELECT语句的结果合并成一个结果集。合并查询可用于从多个表中获取数据,并将它们组合成一个单一的结果集。在SQL SERVER中,合并查询使用UNION、UNION ALL、INTERSECT和EXCEPT关键字实现。
2.1 UNION查询
UNION查询用于合并两个或多个SELECT语句的结果,结果集中不包括重复的行。UNION查询语法如下:
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
解释:上面的代码使用UNION
关键字将table1和table2两个表中的列合并到一起,并去除了重复的数据。
2.2 UNION ALL查询
UNION ALL查询用于合并两个或多个SELECT语句的结果,结果集中包括重复的行。UNION ALL查询语法如下:
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
解释:上面的代码使用UNION ALL
关键字将table1和table2两个表中的列合并到一起,并保留了重复的数据。
2.3 INTERSECT查询
INTERSECT查询用于获取两个或多个SELECT语句结果的交集,结果集中只包含在所有语句中都出现的行。INTERSECT查询语法如下:
SELECT column_name(s) FROM table1
INTERSECT
SELECT column_name(s) FROM table2;
解释:上面的代码使用INTERSECT
关键字获取table1和table2两个表中列的交集。
2.4 EXCEPT查询
EXCEPT查询用于获取第一个SELECT语句结果中不包含在第二个SELECT语句结果中的行,结果集中只包含在第一个语句中出现但不在第二个语句中出现的行。EXCEPT查询语法如下:
SELECT column_name(s) FROM table1
EXCEPT
SELECT column_name(s) FROM table2;
解释:上面的代码使用EXCEPT
关键字获取table1和table2两个表中列的差集。