实验五 连接查询、嵌套查询与联合查询 实验指导.doc

实验五 连接查询、嵌套查询与联合查询 实验指导.doc

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

实验五 连接查询、嵌套查询与联合查询 实验指导 一、连接查询 前面的查询都是在单个表中进行的查询。在数据库的实际编程应用中,往往需要查询许多数据,有可能这些数据出现在两个或两个以上的表中,而我们希望这些数据出现在一个结果集中,这就要用到连接查询。在SQL Server中,可以使用两种语法形式:一种是ANSI连接语法形式,连接写在FROM子句中,使用JOIN…ON关键字。另一种是早期SQL SERVER连接语法形式,连接写在WHERE子句中。在SQL SERER中可以设定兼容级别为80及以下(在对象资源管理器中展开相应的数据库,右击,选择“属性”,在弹出的“数据库属性”对话框中选择“选项”,有兼容级别设置)才能使用这种形式。在SQLServer2008中推荐使用ANSI形式的连接。两种连接的语法格式如下。 SQL Server连接的语法格式: SELECT 查询列表 FROM 表1,表2 WHERE 表1.列1 比较运算符 表2.列2 其中比较运算符可以是:=、、、=、=、等。 说明: 连接的列(属性)名可不相同,但数据类型必须兼容。 当比较运算符是“=”时,称等值连接,否则为非等值连接。 ANSI连接的语法形式如下: SELECT 表名.列名[,…n] FROM {表名1 [连接类型] JOIN表名2 ON 连接条件} [,…n] WHERE 查询条件 连接查询包括以下几种类型。 1. 内连接 从两个或两个以上的表的组合中,挑选出符合连接条件的数据。如果数据无法满足连接条件,则将其丢弃。通常称这种方法为内部连接INNER JOIN。在内部连接中,参与连接的表的地位是平等的。它有两种形式:等值连接和自然连接。等值连接会产生冗余列,因为它将连接条件中的共享列显示两次。而自然连接则清除了等值连接产生的冗余列,因此我们所说的内连接在没有特殊说明时都指的是自然连接。 例1 查询所有学生的选课信息(包含学号、姓名、课程编号)。 用SQL Server形式进行连接: SELECT student.sno,sname,cno FROM student,sc WHERE student.sno=sc.sno 用ANSI形式进行连接: SELECT student.sno,sname,cno FROM student INNER JOIN sc ON student.sno=sc.sno 2. 外连接 在使用内连接查询时,只包含两表中都满足连接条件的行,而外连接会把某些不满足条件的行显示出来。在外部连接中,参与连接的表有主从之分。以主表的每行数据去匹配从表的数据列,符合连接条件的数据将直接返回到结果集中。对那些不符合连接条件的列将被填上NULL值后再返回到结果集中。对BIT类型的列,由于BIT数据类型不允许NULL值,因此将会被填上0值再返回到结果中。 外部连接分为左外连接LEFT OUTER JOIN、右外连接RIGHT OUTER JOIN和全连接三种。以主表所在的方向区分外部连接。 (1)左外连接。左外连接指主表在左边,即在连接两表时,保留左表中的不匹配行,右表的相应行用NULL或0值。 例2 查询每个学生及其选修课程的情况包括没有选修课程的学生。 SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student LEFT OUTER JOIN SC ON (Student.Sno=SC.Sno) (2)右外连接。右外连接指主表在右边,即在连接两表时,保留右表中的不匹配行,左表的相应行用NULL或0值。 (3)全连接。在连接两表时,保留两表中的不匹配行。全连接的语法只有ANSI形式一种,使用FULL OUTER JOIN关键字。全连接生成的结果记录集将会很多。一般不大使用,就不举例了。 3. 无限制连接 也称为交叉连接,它可能会产生一个庞大的结果集,因为其中包含了所连接的表中所有行的全部组合。如在某连接中,一个表的记录数是5,另一个表的记录数是6,那么结果集就有5*6(30)条记录。交叉连接在ANSI形式中使用CROSS JOIN 关键字。 4. 自身连接 连接除了可以在多个不同的表中进行外,也可以在同一个表中进行连接,即自身连接。自身连接可以看作一张表的两个副本之间进行的连接。在自连接中,必须为表指定两个别名,使之在逻辑上成为两张表。 例3 查询每一门课的间接先修课(即先修课的先修课)。 SELECT FIRST.Cno,SECOND.Cpno FROM Course FIRST INNER JOIN Course SECOND ON FIRST.Cpno=SECOND.Cno 二、嵌套查询 子查询指在一个外层查询中包含另一个内层查询,即在一个SELECT语句中的WHERE子句

文档评论(0)

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

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

1亿VIP精品文档

相关文档