第2章 使用Transact-SQL语言.pptVIP

  1. 1、本文档共39页,可阅读全部内容。
  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文档。上传文档
查看更多
使用Transact-SQL语言 学习目标 了解Transact-SQL的用法和作用 学会并能根据需要灵活使用SELECT语句查询用户表的信息 使用INSERT向用户表输入数据 使用UPDATE修改用户表的数据 使用DELETE语句删除用户表的数据。 查询信息--多表 阅读理解如下语句: IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = Xk) DROP DATABASE Xk GO 查询信息--单表 16、使用GROUP BY子句 【问题】按课程类别统计每类课程的平均报名人数 ? 与上面例子的区别:只有一个结果集 [说明] (1)该子句用于将查询结果按照GROUP BY后指定的列进行分组,该子句写在WHERE子句后面 (2)GROUP BY子句经常用于SELECT子句中包含有聚合函数的情况。此时,SELECT子句中选项列表中出现的列,只能是GROUP BY子句中的列或者包含在聚合函数中。 查询信息--单表 17、使用HAVING子句 【问题】上面的例子中,如果只统计“信息技术”类课程的平均报名人数 ?[说明]HAVING经常用在GROUP BY子句之后,用于限定结果集中的分组 ?也可以使用WHERE子句 可以看到,HAVING子句是对结果进行过滤,而WHERE是对原始记录进行过滤。 ?[注意]HAVING子句中的列只能是GROUP BY子句中或者聚合函数中的列 ?【问题】查询平均报名人数大于30人的课程类和每类平均报名人数 ?【练习】在课程表中,按所开设课程的系部编号分别统计总共报名人数 如果问:系部编号为01的系所开设的课程总共有多少学生报名,如何编程实现? 查询信息--单表 18、使用子查询——在一个查询中包含另一个查询 【问题】查询报名人数大于平均报名人数的课程编号、课程名称和报名人数 STEP 1:如何求平均报名人数 STEP 2:完成题目要求 查询信息--多表 “计算机应用工程系” 有哪些班级,应该查询哪些表?? 如果在多个表中进行查询,结果会怎 样? USE Xk GO SELECT * FROM Department, Class GO 结果集中,有54行(3×18),5列(2+3)。 查询信息--多表 问题: [笛卡儿积] 运算过程? ? 在笛卡儿积的结果中,分析存在的问题以及解决方法: (1)两列DepatNo的列值不同 解决方法:加连接条件,成为相等连接 【注】为了避免笛卡儿积,必须在WHERE子句中给出表格的连接条件:通常对于N个表格的查询,要有N-1个连接条件 (2)出现了相同的列: 解决方法:去掉相同的列,成为自然连接 (3)加入“计算机应用工程系”的条件,成为带有选择条件的连接 ? 查询信息--多表 【问题】查询“01电子商务”班学生选修课程的情况,要求显示班级名称、学号、姓名、课程名称和上课时间. ?[分析] 班级名称、学号、姓名、课程名称、上课时间 这些信息是分别在班级表、学生表、学生选课表和课程表中的,因此需要在多个表中进行查询。同时,必须在WHERE子句中给出连接条件。 ? [注意]在引用的多表中,如果列名在多个表中同名,为了避免列名不明确,在SELECT子句中必须在列名前加上表的前缀,即“表名.列名”。 【练习】查询“林斌”同学的选修课信息(课程编号、课程名称、上课时间) 查询信息--多表 【练习】查询每个系所开课程的门数,显示系代码、系名称、开课门数 【练习】显示所有系的班级名称,要求计算各系班级数量,显示要求如下: 查询信息--多表 19、非相等连接(比较连接) ——连接条件不是等号,而是比较运算符 【问题】查询各班可以选择的不是本系开设的选修课程的信息(教材的例子) 查询信息--多表 20、自连接 —一个表和自身进行的连接 【问题】查询课程类相同而系部编号不同的课程信息(意味着同一类的课程有多个系部开设),要求显示课程编号、课程名称、课程类别和系部编号(教材上的例子) ? 21、使用别名 【练习】查询学分大于等于2.5的课程信息,显示课程名称、学分、开设该课程的系部名称、报名人数,要求使用别名 查询信息--多表 上面介绍的都是内连接。 以下是外连接:主要解决信息丢失的问题 【问题】查询开设的所有选修课的信息和所有学生选修课程的情况,要求显示学生学号、课程编号、课程名称 自然连接会丢失信息:Course表的‘019’课程、StuCou表的‘020’课程 左外连接 右外连接、全连接 交叉连接 使用EXISTS关键字 如果要解决这样的问题: 【问题】查询已经报名选修了课程的学生的学号和姓名 [分析]采用上面所学的方法能否解决? 使用EXISTS关键字 ——测试跟随的子查询的

文档评论(0)

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

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

1亿VIP精品文档

相关文档