![](https://csdnimg.cn/release/download_crawler_static/31747455/bg1.jpg)
高级查询技术
高级查询技术主要是涉及多个表的链接查询技术、嵌入 SELECT 语句的子查询技术,把多
个查询联合起来的联合技术等。
1. 连接查询
需要同时从两个或者连个以上的表中检索数据。 链接就是允许同时从两个表或者两个以上的
表中检索数据, 指定这些表中的某个或者某些列作为连接条件。 在 SQL Server 中,可以使
用两种连接语法的形式, 一种是 ANSI 链接语法形式, 这是连接条件出现在 FROM 子句中;
另外一种 SQL Server 链接语法形式,这是连接条件出现在 WHERE 条件中。
1. ANSI 链接
链接错做可以同时查询两个或者多个表中的数据, 所生成的结果集包含多个表中的字段, 需
要使用连个表中共同拥有的字段以连接多个表。
进行连接操作时, SQL 一行一行地比较所指定的字段,然后把比较后的结果和满足条件的
数据合并,并生成新的记录。
有三种连接方式:内连接、外连接和交叉连接。在一个 SELECT 语句中,可以连接多个表;
链接通过扩展 SELECT 语句的 FROM 字句,增加了两个关键字: JOIN 和 ON
JOIN :指定要了链接的表
ON:指定这些表共同拥有的字段
在表的主键和外部键的基础上,指定连接条件。
ANSI 链接语法形式如下所示:
SELECT table_name.column_name, table_name.column_name, ……
FROM { table_name[ join_type] JOIN table_name ON search_conditions}
WHERE[ search_conditions]
其中 [ join_type ] 可以为如下三个关键字形式:
INNER( 内连接 ):链接查询结果集中仅包含满足条件的行, 内连接是 SQL Server 缺省的连接
方式,可以把 INNER JOIN 简写成 JOIN;
OUTER( 外连接 ):链接查询结果集中既包含哪些满足条件的行, 还包含其中某个表的全部行,
有三种形式的外连接:左外连接、右外连接、全外连接。
例如:已经选修了 4 号课程的同学信息的示例,该示例涉及到了学生表和选修课:
SELECT 学生表
FROM 学生表 JOIN 选课表 ON 学生表 .学号 选课表 .学号
WHERE 选课表 课程号 =4
2. SQL Server 链接
多表连接,可以在 FROM 子句后直接指定多个表,语义上表示从这几个表的笛卡尔积中检
索数据,可以用 WHERE 子句设定过滤条件。
SQL Server 链接语法形式如下:
SELECT table_name.column_name,table_name.column_name,……
FROM { table_name,table_name, …… }
WHERE table_name.column_name join_operator table_name.column_name
在此种语法形式中, FROM 子句列出了连接时所使用到的全部表名, WHERE 子句指定哪些
行应该出现在结果集中,即用 WHERE 子句设定过滤条件。在 WHERE 子句中,在两个连