连接是操作数据库经常要用到的,分了很多种,各有各的用处,为避免以后混淆,特将概念记录与此,供日后查阅。
在SQL Server中,通过连接运算可以实现多表查询,连接是关系数据库模型的主要特点,也是它区别其他数据库管理系统的一个标志。
一般连接的写法如下:
FROM join_table join type join_table
[ON (join_condition)]
其中,join_table是参与连接操作的表名,join_type是连接类型,join_condition是连接条件。
连接类型分为三种:内连接/外连接/交叉连接
1、内连接
内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表种与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又可分为等值连接,自然连接和不等连接三种。
(1)等值连接:在连接条件使用等于(=)运算符比较被连接列的列值,其查询结果中列出被连接表中所有列,包括其中的重复列。
(2)不等连接:在连接中使用除等于号之外的其他比较运算符比较被连接列的列值,这些运算符包括>,>=,<,<=,!>,!<,<>等。
(3)自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中包含的列,并删除连接表中的重复列。
2、外连接
外连接分为左外连接(LEFT OUTER JOIN 或 LEFT JOIN),右外连接(RIGHT OUTER JOIN 或 RIGHT JOIN)和全外连接(FULL OUTER JOIN 或FULL JOIN)三种。
与内连接不同的是,外连接不只列出与连接条件相匹配的数据行,而是列出左表(左外连接),右表(右外连接)或两个表(全外连接)中所有符合搜索条件的数据行。
3、交叉连接
交叉连接(CROSS JOIN)没有WHERE子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。