SQL高级查询技术.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高级查询技术 高级查询技术主要是涉及多个表的链接查询技术、嵌入SELECT语句的子查询技术,把多个查询联合起来的联合技术等。 连接查询 需要同时从两个或者连个以上的表中检索数据。链接就是允许同时从两个表或者两个以上的表中检索数据,指定这些表中的某个或者某些列作为连接条件。在SQL Server中,可以使用两种连接语法的形式,一种是ANSI链接语法形式,这是连接条件出现在FROM子句中;另外一种SQL Server链接语法形式,这是连接条件出现在WHERE条件中。 ANSI链接 链接错做可以同时查询两个或者多个表中的数据,所生成的结果集包含多个表中的字段,需要使用连个表中共同拥有的字段以连接多个表。 进行连接操作时,SQL一行一行地比较所指定的字段,然后把比较后的结果和满足条件的数据合并,并生成新的记录。 有三种连接方式:内连接、外连接和交叉连接。在一个SELECT语句中,可以连接多个表;链接通过扩展SELECT语句的FROM字句,增加了两个关键字:JOIN和ON JOIN:指定要了链接的表 ON:指定这些表共同拥有的字段 在表的主键和外部键的基础上,指定连接条件。 ANSI链接语法形式如下所示: SELECT table_name.column_name, table_name.column_name,…… FROM { table_name[ join_type] JOIN table_name ON search_conditions} WHERE[ search_conditions] 其中[ join_type ]可以为如下三个关键字形式: INNER(内连接):链接查询结果集中仅包含满足条件的行,内连接是SQL Server缺省的连接方式,可以把INNER JOIN简写成 JOIN; OUTER(外连接):链接查询结果集中既包含哪些满足条件的行,还包含其中某个表的全部行,有三种形式的外连接:左外连接、右外连接、全外连接。 例如:已经选修了4号课程的同学信息的示例,该示例涉及到了学生表和选修课: SELECT 学生表 FROM 学生表 JOIN 选课表 ON 学生表.学号 选课表.学号 WHERE 选课表 课程号=4 SQL Server链接 多表连接,可以在FROM子句后直接指定多个表,语义上表示从这几个表的笛卡尔积中检索数据,可以用WHERE子句设定过滤条件。 SQL Server链接语法形式如下: SELECT table_name.column_name,table_name.column_name,…… FROM { table_name,table_name,……} WHERE table_name.column_name join_operator table_name.column_name 在此种语法形式中,FROM子句列出了连接时所使用到的全部表名,WHERE子句指定哪些行应该出现在结果集中,即用WHERE子句设定过滤条件。在WHERE子句中,在两个连接的列中使用链接运算符。 例如:检索出至少已经有一门课程及格的同学的信息示例: SELECT DISTINCT 学生表 * FROM 学生表 选课表 WHERE 学生表.学号=选课表.学号 AND 选课表.成绩=60 子查询 子查询是一系列SELECT语句。SELECT语句可以嵌套在其他许多语句中,例如SELECT、INSERT、UPDATE、DELETE等,这些嵌套的SELECT语句就称为子查询。子查询可以把一个复杂的查询分解成一系列的逻辑步骤,这样就可以用一个单个的语句解决一个复杂的查询问题。当一个查询依赖于另一个查询的结果时,子查询会很有用。 使用子查询时,应注意: 子查询要用括号起来 只需要一个值或一系列的值,就可以用子查询代替一个表达式 子查询中不能查询包含数据类型是text或image的字段 子查询中也可以再包含子查询,嵌套可以多至32层 把子查询用作派生的表 可以用子查询产生一个派生的表,用于代替FROM子句中的表。派生表示FROM子句中子查询的一个特殊用法,用一个别名或用户自定义的名字来引用这个派生表。FROM子句中的子查询将返回一个结果集,这个结果集所形成的表将被外层SELECT语句使用。 例如:内层查询用子查询产生了一个派生的表,外层查询将使用内层查询的结果集。在功能上,派生表本身就等同于一个完整的查询 SLECT A * FROM select 学号,姓名,年龄 from 学生表 Where 班级=‘GZ02计6’ as a 把子查询用作表达式 在T-SQL中,所有使用表达式的地方,都可以用子查询来代替。此时子查询

文档评论(0)

max + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档