SQL Server 的链接和运算符
一、 SQL Server链接
在SQL Server的数据关系库中,数据分布在多个数据关联表中,想要获取到这些需要完整的数据,就需要使用SQL Server的链接来查询这个数据表里面的数据。
在SQL Server中有多种连接方式,有内连接、左连接、右链接、全外链接以及交叉链接,每一种链接类型都决定了要获取到怎样的数据,
1、 SQL Server内连接:
内连接是SQL Server数据库中最为常用的链接方法之一,内连接子句用于查询来自两个或者多个表相关联的数据,其中链接表还要运用到from子句,在from子句后链接指定的主表,然后运用到inner join子句,在inner join子句和链接谓词中指定第二个表,只有链接谓词计算为true的行才包含在结果集中。
2、 SQL Server左连接
在左连接中要运用的链接子句和内连接有所不同,内链接运用的是inner join,而左连接运用的子句是left join,left join子句用于查询来自多个表的数据,它返回左表中所有行和右表中相匹配的行,如果在右表中找不到相匹配的行,则使用null代替显示,
3、 SQL Server右链接
和上面的左连接差不多,左连接运用的子句是left join,而右链接是right join子句,使用方法和左连接差不多,不过就是主表变成了右边,right join子句组合来自两个或者多个表的数据,right join开始从右表中选择数据并与左表中的行相匹配。Right join返回一个结果集,该结果里面包含右表中的所有行,无论是否具有左表中的匹配行,如果右表中的行没有来自右表的任何匹配行,则结果集中右表的列将使用null值来表示
4、 SQL Server交叉链接
交叉链接不同于上面的任何一个连接,交叉链接子句cross join,链接两个或者多个不相关的表,cross join将第一个表中的每一行与第二个表中的每一行链接起来,总而言之就是交叉连接返回两个表中行的笛卡尔积,与inner join或left join不停,交叉连接不会在连接表之间建立关系
5、 SQL Server自连接
自连接不用于上面的链接,自连接用于将表链接到自身的同一个表中,它对于查询分层数据或者比较同一个表中的行很有用。自链接使用内连接或者左连接子句的时候,由于使用自连接的查询引用同一个表,因此表别名用于为查询中的表分配不同的名称
二、 SQL Server集合运算符:
1、 SQL Server Union(并集):
SQL Server Union是一组集合操作,用于将两个SELECT语句的结果组合到一个结果集中,该结果集包含属于union中select语句的所有行。且两个查询中列的数量必须相同,相应列的数据类型必须相同或兼容。
2、 SQL Server intersect(交集)
SQL Server intersect组合了两个或者多个查询的结果集,并返回两个查询输出的不同行。且两个查询必须具有相同的列数和顺序,相应列的数据类型必须相同或者兼容
3、 SQL Server Except(差积)
SQL Server Except比较两个查询的结果集,并返回第一个查询中不是由第二个查询输出的不同行,换句话说,except从一个查询结果中减去另一个查询的结果集。且两个查询中列的数量和顺序必须相同,相应列的数据类型必须相同或者兼容。