SELECT语句对行的选择(课件)-《MySQL数据库技术与应用》同步教学(清华)_第1页
SELECT语句对行的选择(课件)-《MySQL数据库技术与应用》同步教学(清华)_第2页
SELECT语句对行的选择(课件)-《MySQL数据库技术与应用》同步教学(清华)_第3页
SELECT语句对行的选择(课件)-《MySQL数据库技术与应用》同步教学(清华)_第4页
SELECT语句对行的选择(课件)-《MySQL数据库技术与应用》同步教学(清华)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章查询本章学习目标:掌握T-SQL作为查询语句的语法与应用掌握WHERE、ORDERBY、GROUPBY、HAVING子句的使用掌握基本的多表查询掌握内连接、外连接、交叉连接和联合查询的使用掌握多行和单值子查询的使用掌握嵌套子查询的使用

工作场景导入

教务处工作人员小李在工作中经常需要查询数据库中的数据。例如有如下查询需求:(1)查询学生表所有学生的学号、姓名和所在院系。(2)查询所在院系为“计算机科学”的学生学号、姓名、性别。(3)查询年龄大于19岁的学生信息。(4)查询名字包含“孙”这个字的所有学生的信息。(5)查询选修了“1001”号课程的所有学生的相关信息。(6)查询院系人数大于20的院系信息。(7)查询不在信息工程学院上课的学生。(8)查询和“张玲”在一个系上课的学生姓名。(9)查询成绩低于该门课程平均成绩的学生编号、课程编号和成绩。(10)查询选修了“2014056101”学生选修的所有课程的学生的信息。

引导问题:(1) 如何查询存储在数据库表中的记录?(2) 如何对原始记录进行分组统计?(3) 如何对来自多个表的数据进行查询?(4) 如何保留连接不成功的记录?(5) 如何动态设置选择记录的条件?6.4.2SELECT语句对行的选择选择表中的若干记录就是关系代数中表的选择运算。这种运算可以通过增加一些谓词(例如WHERE子句)等来实现。在SELECT语句中,WHERE子句必须紧跟在FROM子句后,其基本格式为:WHERE<查询条件>1.消除结果中的重复项

在一张完整的关系数据库表中不可能出现两个完全相同的记录,但由于我们在查询时经常只涉及表的部分字段,这样,就有可能出现重复的行,可以使用DISTINCT短语来避免这种情况。关键字DISTINCT的含义是对结果中的重复行只选择一个,以保证行的唯一性。【例】:从选课表中查询所有的参与选课的学生记录。T-SQL语句如下:SELECTDISTINCT学号FROM选课2.限制结果返回的行数一般情况下SELECT语句返回的结果行数非常多,往往用户只需要返回满足条件的前几条记录,则可以使用TOPn[PERCENT]可选子句。其中,n是一个正整数,表示返回查询结果的前n行。如果使用了PERCENT关键字,则表示返回结果的前n%行。【例】查询student表中前10个学生的信息。T-SQL语句为:

SELECTTOP10*FROM学生执行结果如图4-8所示,只返回了10个学生的学号。【例】:查询学生表中的前10个学生的信息。T-SQL语句如下:SELECTTOP10*FROM学生3.查询满足条件的元组条件查询是用的最多的一种查询方式,通过在WHERE子句中设置查询条件可以挑选符合要求的数据、更新数据。条件查询的本质是对表中的数据进行筛选,即关系运算中的“选择”操作。在SELECT语句中,WHERE子句必须紧跟在FROM子句之后,其基本格式如下:WHERE<查询条件>(1)使用比较运算符我们使用上一章介绍的比较运算符来比较表达式值的大小,包括:=(等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、!=(不等于)、<>(不等于)、!<(不小于)、!>(不大于)。运算结果为TRUE或者FALSE【例】在课程表中查询学分为4的课程。T-SQL语句为:

SELECT*FROM课程WHERE学分=4显示的全为学分为4的同学。【例】:在课程表中查询学分为4的课程。T-SQL语句为:

SELECT*FROM课程WHERE学分=4(2)使用逻辑运算符逻辑运算符包括AND、OR和NOT,用于连接WHERE子句中的多个查询条件。当一条语句中同时含有多个逻辑运算符时,取值的优先顺序为:NOT、AND和OR。【例】在课程表中查询学分大于1且小于4的课程信息。T-SQL语句为:

SELECT*FROM课程WHERE学分>1and学分<4显示的满足条件的有7门课程。【例】:在课程表中查询学分大于1且小于4的课程信息。T-SQL语句为:

SELECT*FROM课程WHERE学分>1and学分<4(3)使用LIKE模式匹配在查找记录时,若不是很适合使用算术运算符和逻辑运算符,则可能要用到更高级的技术。LIKE是模式匹配运算符,用于指出一个字符串是否与指定的字符串相匹配。使用LIKE进行匹配时,可以使用通配符,即可以使用模糊查询。T-SQL中使用的通配符有“%”、“_”、“[]”和“[^]”。通配符用在要查找的字符串的旁边。它们可以一起使用,使用其中的一种并不排斥使用其他的通配符。“%”用于字符串的末尾或开始处,代表0个或任意多个字符。如要查找姓名中有“a”的教师,可以使用“%a%”,这样会查找出姓名中任何位置包含字母“a”的记录;“_”代表单个字符。使用“_a”,将返回任何名字为两个字符且第二个字符是“a”的姓名记录;“[]”允许在指定值的集合或范围中查找单个字符。如要搜索名字中包含介于a-f之间的单个字符的记录,可以使用LIKE“%[a-f]%”;“[^]”与“[]”相反,用于指定不属于范围内的字符。如[^abcdef]表示不属于abcdef集合中的字符。【例】在students表中查询姓“孙”的学生信息。T-SQL语句为:

SELECT*FROM学生WHERE姓名likeN'孙%'(4)确定范围T-SQL中与范围有关的关键字有两个:BETWEEN和IN。当要查询的条件是某个值的范围时,使用BETWEEN…AND…来指出查询范围。其中,AND的左端给出查询范围的下限,AND的右端给出查询范围的上限。【例】在sc表中,查询成绩在60到80分的学生情况T-SQL语句为:

SELECT*FROM选课WHERE分数between60and80(5)确定集合关键字IN用来表示查询范围属于指定的集合。集合中列出所有可能的值,当表中的值与集合中的任意一个值匹配时,即满足条件。【例】在选课表中查询选修了“1001”号或者“1002”号课程的选课情况。T-SQL语句为:

SELECT*FROM选课WHERE课程号IN('1001','1002')该语句等价于语句:

SELECT*FROM选课WHERE课程号='1001'OR课程号='1002'(6)涉及空值NULL的查询值为“空”并非没有值,而是一个特殊的符号“NULL”。一个字段是否允许为空,需要在建立表的结构时设置。当要判断一个表达式的值是否为空值时,使用ISNULL关键字。注意这里的“IS”不能用等号(=)代替。【例】查询缺少“选修课程号”的课程的信息。T-SQL语句为:

SELECT*FROM课程WHERE先修课程号ISNULL6.4.3对查询结果排序利用ORDERBY子句可以对查询的结果按照指定字段进行排序。ORDERBY子句格式为:ORDERBY排序表达式[ASC|DESC]其中ASC代表升序,DESC表示降序,默认时为升序排列。对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论