---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
接着昨天晚上的Sql查询进行总结,在查询的过程中有时经常需要针对多个表进行查询,那么这就需要用到连接,多表连接学习总结如下:
内连接(INNERJOIN):
内连接是连接类型中最常用的一种,主要用于查询多个表中所匹配的行,所以要排除不匹配的字段时,使用内部连接。
它的语法格式如下:
SELECT * FROM tableA INNER JOIN tableB ONtableA.typeId=tableB.typeId
上边在选择列的时候使用了*,跟上次总结一样尽量不使用*统配符,在连接查询的时候选择字段时需要注意的一点是,所选择的列如果两个表都存在时,必需要指定列所属的表(表名.列名),否则sql则会报列名不明确的错误。
在使用内连时也可以不使用INNER关键字,因为内部连接为默认连接类型。
外连接(OUTERJOIN):
外连接是要尽可能匹配数据,但又要包含join一侧的表的所有数据使用外部连接
左连接:包含左侧表的全部行,不管右边的表中是否存在与它们匹配的行,以及右边表中全部匹配的行,不匹配的以NULL表示。
右连接:包含右侧表的全部行,不管左边的表中是否存在与它们匹配的行,以及左边表中全部匹配的行,不匹配的以NULL表示。
完全连接(FULLJOIN):
包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
要尽可能匹配数据,但又要包含join两侧表的所有数据时使用完全连接
交叉连接(CROSSJOIN):
交叉连接它不使用连接条件来限制结果集合,而是将分别来自两个数据源中的行以所有可能的方式进行组合。
交叉连接我觉着很怪异,一般情况下不常用应该。
联合(UNION):
Union用于将两个或两个以上的查询产生一个结果集。如select age,name from a union select age,name from b
使用union要注意以下几点:
所有union的查询必须与第一个select列表中有相同列数,不管第一个选择多少列,第二个必须选择相同的列。同时union返回的结果集的标题仅从第一个查询获得。
查询中对应列的数据类型必须隐式一致。
Union查询的默认返回选项为distinct,如果要显示所有行必须在union查询中使用all关键字,才能返回重复的行。
使用order by对结果集排序使,要将order by放在union查询语句的最后。
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------