网站大量收购独家精品文档,联系QQ:2885784924

多表联接和组合查询.docx

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多表联接和组合查询

多表连接和组合查询 1、多表联接 在FROM子句中,使用CROSS JOIN可以实现对多个表的笛卡尔乘积查询,或者在FROM子句中使用逗号代替CROSS JOIN。 例如: SELECT * FROM tb_学系 CROSS JOIN tb_教研室 或者在WHERE子句中设置联接条件,例如: SELECT tb_student.*,tb_class.班主任,tb_teacher.教师名字 FROM tb_student,tb_class,tb_teacher WHERE tb_student.班级=tb_class.班级 AND tb_class.班主任=tb_teacher.教师编号 2、内连接 内连接(INNER JOIN)使用比较运算符对表之间某些列数数据进行比较,并列出这些表中域联接条件想匹配的数据行。内连接是笛卡尔乘积中满足联接条件的子集。 例如: SELECT fieldlist FROM table1[INNER] JOIN table2 ON table1.column=table2.clomn 3、外联接 内联接只返回符合查询条件(where搜索条件或having条件)和联接条件的行。而外联结查询结果是内联接查询结果的扩展。外联结又分为左外联结、右外联结和全外联结3中。外联结返回的不仅仅包含符合条件的行,而且还包括左表、右表或者俩个联结表中的所有不符合搜素条件的行。 (1)LEFT OUTER JOIN运算符 LEFT OUTER JOIN逻辑运算符返回每个满足第一个(顶端)输入与第二个(底端)输入联结的行。它还返回任何在第二个输入中没有匹配行的第一个输入。第二个输入中的非匹配行作为空值返回。 用左外联结建立的外联结,在表达式左边的表中会显示其所有的数据。 (2)RIGHT OUTER JOIN运算符 RIGHT OUTER JOIN运算符返回满足第二个输入与第一个输入中的每个匹配行连接的每一行。它返回第二个输入中在第一个输入中没有匹配的任何行,即与NULL连接。右外连接是左外连接的反向联接,它将返回右表的所有行。 在必要的字段名前加上表名,并且给表指定别名,以利于区分表内各字段。 (3)FULL JOIN返回两个表相匹配的所有数据 完全联接就是将左表的所有数据分别于右表的每条记录进行连接组合,返回的结果除了连接数据外,还有俩个表中不符合条件的数据,并在坐标或右表的相应列中填上NULL值。也就是说,完全联接返回左表和右表中的所有行。 4、组合查询 表的组合操作是将俩个表的行合并到单个表中,而不需要对这些行作任何更改。在构造组合查询时必须遵循这样的规则:两个Select语句选择列表中的列数目必须相等,而且对应位置上的列的数据类型必须相同或者兼容;列的名字或者别名是由第一个Select语句的选择列表决定的。在默认情况下,合并操作将会去除重复的行,并可以对组合查询结果进行排序。 (1)UNION UNION运算符主要用于将两个或更多的查询结果组合为单个结果集,该结果集包含联合查询中所有查询的全部行。在使用UNION运算符时遵循以下准则: 在使用UNION运算符组合的语句中,所有选择列表的表达式数目必须相同(列名、算术表达式、聚集函数等)。 在使用UNION组合的结果集中的相应列、或个别查询中使用的任意列的子集必须具有相同的数据类型,并且两种数据类型之间必须存在可能的隐性数据转换,或者提供显示转换。 用UNION运算符组合的各语句中对应的结果列出现的顺序必须相同,因为UNION运算符是按照各个查询给定的顺序逐个比较各列。 在UNION操作中组合不同的数据类型时,这些数据类型将使用数据类型优先级的规则进行转换。例如int转换成float值,因为float类型的优先权比int类型高。 通过UNION生成的表中的各列来自UNION语句中第一个单独的查询。如果要用新名称引用结果集中某列(例如在ORDER BY子句中),必须按第一个SELECT语句中的方式??用该列。 语法如下: SELECT city AS Cities FROM stores_west UNION SELECT city FROM stores_east ORDER BY city UNION返回的组合查询的结果,在默认情况下,将删除重复的行。但如果使用UNION ALL运算符来合并,将返回这俩个查询的所有记录,不会有重复被删除的行。 (2)使用INTERSECT运算符求俩个结果集的交集 用于查询和返回两个结果集中相同的记录。使用INTERSECT运算符组合俩个结果集的基本规则如下: 所有查询中的列数和列的顺序必须相同。 数据类型必须兼容。 语法如下: SELECT * FROM tb_学系 INTERSECT SELECT * FROM tb_学系_TM

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档