连接(JOIN)

定义:将一个记录与另外一个或多个记录相匹配,从而生成一个新记录,这个记录是由两个记录合并列所产生的一个超集

语法:SELECT 结果列表 FROM 表1  join_type On 条件

连接(JOIN)

定义:表间连接

语法:JOIN

本质:排他

内连接(INNER JOIN)

定义:仅仅返回那些存在字段匹配的记录,可以说是一对一的关系

语法:INNER JOIN

本质:排他

案例:SELECT * FROM Orders INNER JOIN Persons ON Orders.Id_P = Persons.Id_P;(后面跟条件)

SELECT LastName+''+FirstName as 姓名 FROM Orders INNER JOIN Persons ON Orders.Id_P = Persons.Id_P;

SELECT cast(LastName+''+FirstName as varchar(20)) as 姓名 FROM Orders INNER JOIN Persons ON Orders.Id_P = Persons.Id_P;

注意:1.在返回值中尽量返回该返回的列,不能用* ,*会降低系统性能;当语句中使用别名后必须要同一,不能表名.和别名.一起使用

2.在查询结果中,显示格式在select 和 from 之间进行修改 例如: LastName+''+FirstName as 姓名   合成名字

3.CAST关键字将一个类型转换为另一个类型 cast(LastName+''+FirstName as varchar(20)) as 姓名

外连接(OUTER JOIN)

定义:一侧数据匹配另一侧,可以说是一对多

本质:包含

语法 OUTER JOIN

1.左连接(LEFT连接)

定义:右表匹配左表

语法 LEFT JOIN

2.右连接(RIGHT连接)

定义:左表匹配右表

语法 RIGHT JOIN

混合连接

例子:

SELECT v.VendorName,a.Address FROM Vendors v LEFT JOIN VendorAddress va on v.VendorID= va.VendorID LEFT JOIN Address a  ON  a.AddressID = va.AddressID;

完全连接

定义:将两侧数据完全匹配,并返回所有的记录,不论记录在JOIN的那一侧的表中

本质:包含

语法:FULL JOIN

交叉连接(笛卡尔积)

定义:返回两侧记录的笛卡尔积(返回两个表的乘积)

本质:包含

语法:CROSS

例子:SELECT * FROM Vendors v CROSS JOIN Address a;

联合(UNION)

定义:UNION是一个特殊的运算符,用于使两个或两个以上的查询产生的一个结集。不是真正的连接是将一个结果及添加到另一个结果集的末尾。

语法:(UNIOM)

条件:1.所有联合的查询必须在SELECT 列表中有相同的列数。

2.返回的结果集的标题仅在第一个查询获得。

3.查询中的对应列的数据类型必须隐试一致。(就是隐试转换类型之间)

4.UNION与其他不同,UNION返回的选项为DISTINCT,而不是ALL。

例子:SELECT v.VendorID FROM Vendors v UNION ALL  SELECT a.AddressID FROM Address a;


总结

总结


本文转载:CSDN博客