天天看点

黑马程序员_Sql学习总结(二)

---------------------- 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培训、期待与您交流! ----------------------