版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、韩山师范学院任课人:任课人:cws第第4 4章章数据库的基本应用数据库的基本应用数据库原理与数据库原理与SQL ServerSQL Server章节内容章节内容4.1 管理表管理表4.2 数据查询数据查询4.3 数据查询任务实现数据查询任务实现4.4 数据更新数据更新4.5 数据更新任务实现数据更新任务实现4.6 课堂实践课堂实践数据库原理与数据库原理与SQL ServerSQL Server4.2 4.2 数据查询数据查询4.2.1 单表无条件查询单表无条件查询4.2.2 单表有条件查询单表有条件查询4.2.3 聚集函数的使用聚集函数的使用4.2.4 分
2、组与排序分组与排序4.2.5 多表连接查询多表连接查询4.2.6 嵌套查询嵌套查询4.2.7 集合查询集合查询数据库原理与数据库原理与SQL ServerSQL Server4.2 4.2 数据查询数据查询学生成绩管理系统中,肯定设计到包括学生基本信息浏学生成绩管理系统中,肯定设计到包括学生基本信息浏览和查询、成绩查询、各种数据的统计等内容,如:览和查询、成绩查询、各种数据的统计等内容,如:这些操作应该这些操作应该如何实现呢?如何实现呢?数据库原理与数据库原理与SQL ServerSQL Server4.2 4.2 数据查
3、询数据查询数据查询是数据库中最常见的操作。数据查询是数据库中最常见的操作。 SQL语言是通过语言是通过SELECT语句语句来实现数据查来实现数据查询的;询的; 基本语法如下:基本语法如下:数据库原理与数据库原理与SQL ServerSQL Server4.2.1 4.2.1 单表无条件查询单表无条件查询1. 语法格式语法格式 SELECT ALL|DISTINCT TOP NPERCENT AS , AS ,. FROM 2. 说明说明 (1) ALL:表示输出所有记录,包括重复记录。默认值为:表示输出所有记录,包括重复记录。默认值为ALL。 DISTINC
4、T:表示在查询结果中去掉重复值。:表示在查询结果中去掉重复值。 (2) TOP N:返回查询结果集中的前:返回查询结果集中的前N 行。行。 加加PERCENT:返回查询结果集中的前:返回查询结果集中的前N%行。行。N的取值范围是的取值范围是0100 (3) 选项:查询结果集中的输出列。可为字段名、表达式或函数。选项:查询结果集中的输出列。可为字段名、表达式或函数。用用“*”表示表中的所有字段表示表中的所有字段。若选项为表达式或函数,输出的列名系统。若选项为表达式或函数,输出的列名系统自动给出,不是原字段名,故用自动给出,不是原字段名,故用AS重命名。重命名。 (4) 显示列名:在输出结果中,设
5、置选项显示的列名。用引号定界或不显示列名:在输出结果中,设置选项显示的列名。用引号定界或不定定 界。界。 (5) 表名:要查询的表。表不需打开,到当前路径下寻找表所对应的文表名:要查询的表。表不需打开,到当前路径下寻找表所对应的文件。件。数据库原理与数据库原理与SQL ServerSQL Server4.2.1 4.2.1 单表无条件查询单表无条件查询1) 查询指定列查询指定列 【例例4-6】查询查询全体全体学生的学生的学号学号和和姓名姓名。 【例例4-7】查询全体学生的姓名、学号、所在查询全体学生的姓名、学号、所在系。系。SELECT sno,snameF
6、ROM studentSELECT sname,sno,sdeptFROM student数据库原理与数据库原理与SQL ServerSQL Server4.2.1 4.2.1 单表无条件查询单表无条件查询1) 查询指定列查询指定列 【例例4-8】查询选修了课程的学生学号查询选修了课程的学生学号(本例是本例是对表对表4-12 成绩表成绩表sc的查询)的查询)SELECT DISTINCT snoFROM sc数据库原理与数据库原理与SQL ServerSQL Server4.2.1 4.2.1 单表无条件查询单表无条件查询
7、2) 查询全部列查询全部列 【例例4-9】 查询全体学生的详细记录。查询全体学生的详细记录。 【例例4-10】 输出学生表中的前输出学生表中的前10条记录。条记录。SELECT * FROM studentSELECT TOP 10 * FROM student思考:若是查询前思考:若是查询前10%的记录呢?的记录呢?数据库原理与数据库原理与SQL ServerSQL Server4.2.1 4.2.1 单表无条件查询单表无条件查询3) 查询经过计算的列查询经过计算的列 【例例4-11】 查询全体学生的姓名及其年龄查询全体学生的姓名及其年龄SELECT sn
8、ame,YEAR(GETDATE()-YEAR(sbirthday) AS 年龄年龄FROM student数据库原理与数据库原理与SQL ServerSQL Server4.2.1 4.2.1 单表无条件查询单表无条件查询3) 查询经过计算的列查询经过计算的列 【例例4-12】 查询全体学生的姓名、出生年份和所在系查询全体学生的姓名、出生年份和所在系,要求用小写字母表示所有系名,同时为姓名列指定,要求用小写字母表示所有系名,同时为姓名列指定别名为别名为NAME,出生年份所在列指定别名为年份,系,出生年份所在列指定别名为年份,系别所在列指定别名为系别。别所在
9、列指定别名为系别。SELECT sname NAME,出生年份出生年份: AS 生日生日,年份年份=YEAR(sbirthday),LOWER(sdept) 系别系别FROM student注意:指定列名的注意:指定列名的3种方法,教材有误!种方法,教材有误!数据库原理与数据库原理与SQL ServerSQL Server4.2.1 4.2.1 单表无条件查询单表无条件查询3) 查询经过计算的列查询经过计算的列 【例例4-13】 将将sc表中的学生成绩增加表中的学生成绩增加20%后后输出。输出。SELECT sno,cno,degree*1.2 as 成绩成
10、绩FROM SC数据库原理与数据库原理与SQL ServerSQL Server4.2.1 4.2.1 单表无条件查询单表无条件查询4. 查询结果的输出查询结果的输出 Transact-SQL提供了一个扩展特性,允许用户使用提供了一个扩展特性,允许用户使用SELECT语句查询得到的结果记录来创建一个新的数语句查询得到的结果记录来创建一个新的数据表据表,创建新表使用,创建新表使用INTO子句。子句。 INTO子句子句不能单独使用,它包含在不能单独使用,它包含在SELECT语句中。一般用于创建一个语句中。一般用于创建一个临时表临时表。 INTO子句的语法格式如下
11、:子句的语法格式如下: INTO 数据库原理与数据库原理与SQL ServerSQL Server4.2.1 4.2.1 单表无条件查询单表无条件查询4. 查询结果的输出查询结果的输出 【例例4-14】使用使用INTO子句创建一个新表,存子句创建一个新表,存放放student表中的姓名和系别两列。表中的姓名和系别两列。SELECT sname,sdept INTO studtemp FROM Student数据库原理与数据库原理与SQL ServerSQL Server4.2.2 4.2.2 单表有条件查询单表有条件查询1
12、. 语法格式语法格式SELECT ALL|DISTINCT AS , AS,.FROM WHERE 数据库原理与数据库原理与SQL ServerSQL Server4.2.2 4.2.2 单表有条件查询单表有条件查询2. WHERE条件中的运算符条件中的运算符数据库原理与数据库原理与SQL ServerSQL Server4.2.2 4.2.2 单表有条件查询单表有条件查询1) 比较运算符比较运算符 使用比较运算符实现对查询条件进行限定,使用比较运算符实现对查询条件进行限定,其语法格式如下:其语法格式如下: WHERE 表
13、达式表达式1 比较运算符比较运算符 表达式表达式2 【例例4-15】 查询所有男生的信息。查询所有男生的信息。SELECT * FROM studentWHERE ssex=男男数据库原理与数据库原理与SQL ServerSQL Server4.2.2 4.2.2 单表有条件查询单表有条件查询1) 比较运算符比较运算符 使用比较运算符实现对查询条件进行限定,使用比较运算符实现对查询条件进行限定,其语法格式如下:其语法格式如下: WHERE 表达式表达式1 比较运算符比较运算符 表达式表达式2 【例例4-16】 查询所有成绩大于查询所有成绩大于80分的学生的分
14、的学生的学号和成绩。学号和成绩。SELECT sno AS 学号学号,degree 成绩成绩FROM scWHERE degree80数据库原理与数据库原理与SQL ServerSQL Server4.2.2 4.2.2 单表有条件查询单表有条件查询1) 比较运算符比较运算符 【例例4-17】 查询所有男生的学号、姓名、系查询所有男生的学号、姓名、系别及出生日期。别及出生日期。【例例4-184-18】 查询计算机系全体学生的名单。查询计算机系全体学生的名单。SELECT sno, sname,sdept,sbirthFROM studentWHERE sse
15、x=男男SELECT snameFROM studentWHERE sdept=计算机系计算机系数据库原理与数据库原理与SQL ServerSQL Server4.2.2 4.2.2 单表有条件查询单表有条件查询1) 比较运算符比较运算符 【例例4-19】 查询考试成绩不及格的学生的学查询考试成绩不及格的学生的学号。号。SELECT DISTINCT snoFROM scWHERE degree90 or degree60数据库原理与数据库原理与SQL ServerSQL Server4.2.2 4.2.2 单表有条件查询
16、单表有条件查询2) 逻辑运算符逻辑运算符 【例例4-22】 查询非计算机系的学生信息。查询非计算机系的学生信息。SELECT * FROM student WHERE NOT sdept=计算机系计算机系或:或: SELECT * FROM student WHERE sdept计算机系计算机系数据库原理与数据库原理与SQL ServerSQL Server4.2.2 4.2.2 单表有条件查询单表有条件查询课堂练习:课堂练习:数据库原理与数据库原理与SQL ServerSQL Server4.2.2 4.2.2 单表有条
17、件查询单表有条件查询3) 范围运算符范围运算符(BETWEEN AND) 在在WHERE子句中使用子句中使用BETWEEN关键字查关键字查找在某一范围内的数据,也可以使用找在某一范围内的数据,也可以使用NOT BETWEEN关键字查找不在某一范围内的数关键字查找不在某一范围内的数据。据。 其语法格式如下:其语法格式如下: WHERE 表达式表达式 NOT BETWEEN 初始值初始值 AND 终止值终止值数据库原理与数据库原理与SQL ServerSQL Server4.2.2 4.2.2 单表有条件查询单表有条件查询3) 范围运算符范围运算符(BETWEE
18、N AND) 【例例4-23】查询成绩在查询成绩在6070分之间的学生分之间的学生学号及成绩。学号及成绩。SELECT sno, degreeFROM scWHERE degree BETWEEN 60 AND 70条件表达式的另一种表示方法是:条件表达式的另一种表示方法是:degree=60 AND degree数据库原理与数据库原理与SQL ServerSQL Server4.2.4 4.2.4 分组与排序分组与排序2. 对查询结果集进行排序对查询结果集进行排序 用户可以利用用户可以利用ORDER BY子句子句对查询结果按对查询结果按照一个或多个字段进
19、行升序照一个或多个字段进行升序(ASC)或降序或降序(DESC)排序,默认值为升序。排序,默认值为升序。 语句语法为:语句语法为: ORDER BY ASC|DESC, ASC|DESC,数据库原理与数据库原理与SQL ServerSQL Server4.2.4 4.2.4 分组与排序分组与排序2. 对查询结果集进行排序对查询结果集进行排序 【例例4-43】 查询选修了查询选修了C03号课程的学生的号课程的学生的学号及其成绩,查询结果按分数的降序排列学号及其成绩,查询结果按分数的降序排列。SELECT sno,degreeFROM scWHERE cno=C
20、03ORDER BY degree DESC数据库原理与数据库原理与SQL ServerSQL Server4.2.4 4.2.4 分组与排序分组与排序2. 对查询结果集进行排序对查询结果集进行排序 【例例4-44】 查询全体学生情况,查询结果按查询全体学生情况,查询结果按所在系升序排列,同一系中的学生按出生日所在系升序排列,同一系中的学生按出生日期降序排列。期降序排列。SELECT * FROM studentORDER BY sdept ASC, sbirth DESC数据库原理与数据库原理与SQL ServerSQL
21、 Server4.2.5 4.2.5 多表连接查询多表连接查询多表连接查询多表连接查询 指查询同时涉及两个或两个以上的表;指查询同时涉及两个或两个以上的表;分为:交叉连接、内连接、自连接和外连分为:交叉连接、内连接、自连接和外连接。接。数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询广义笛卡儿积:广义笛卡儿积: 两个分别为两个分别为n目目(即关系具有即关系具有n个属性个属性)和和m目的目的关系关系R和和S的广义笛卡儿积是一个的广义笛卡儿积是一个(n+m)列的列的元组的集合。元组的集合。 记作:记作:RS= tr R ts S RS
22、元组的前元组的前n列是关系列是关系R的一个元组,后的一个元组,后m列是关系列是关系S的一个元组。的一个元组。 若若R有有k1个元组,个元组,S有有k2个元组,则关系个元组,则关系R和和关系关系S的广义笛卡儿积有的广义笛卡儿积有klk2个元组。个元组。ttsr数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询广义笛卡儿积:广义笛卡儿积: RSR.AR.BR.CS.AS.BS.Ca1b1c1a1b2c2a1b1c1a1b3c2a1b1c1a2b2c1a1b2c2a1
23、b2c2a1b2c2a1b3c2a1b2c2a2b2c1a2b2c1a1b2c2a2b2c1a1b3c2a2b2c1a2b2c1ABCABCa1b1c1a1b2c2a1b2c2a1b3c2a2b2c1a2b2c1数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询1. 交叉连接交叉连接 交叉连接又称笛卡儿连接,是指两个表之间做交叉连接又称笛卡儿连接,是指两个表之间做笛卡儿笛卡儿积操作积操作,得到结果集的行数是两个表的行数的乘积。,得到结果集的行数是两个表的行数的乘积。 命令的一般格式如下命令的一般格式如下:SELECT ALL|DIS
24、TINCT 别名别名. AS ,别名别名. AS. FROM 别名别名1 ,别名别名2 需要连接查询的表名在需要连接查询的表名在FROM子句中指定,表名之间子句中指定,表名之间用英文逗号隔开;用英文逗号隔开; 如果表名指定了别名,在该命令中,都必须用别名代如果表名指定了别名,在该命令中,都必须用别名代替表名替表名。数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询1. 交叉连接交叉连接 【例例4-45】 成绩表成绩表(sc)和课程名称表和课程名称表(course)进行交叉连接。进行交叉连接。SEL
25、ECT A.*, B.* FROM course A, sc B数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询2. 内连接内连接 内连接命令的一般格式如下:内连接命令的一般格式如下: SELECT ALL|DISTINCT 别名别名.AS ,别名别名.AS,. FROM 别名别名1, 别名别名2, WHERE AND 或者为:或者为: SELECT ALL|DISTINCT 别名别名.AS ,别名别名.AS,. FROM 别名别名1 INNER JOIN 别名别名2 ON WHERE 4.14
26、.4.6数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询2. 内连接内连接 连接条件表达式的一般格式为:连接条件表达式的一般格式为: 比较运算符:比较运算符: 使用等号使用等号“=”:等值连接:等值连接 使用不等号:不等值连接使用不等号:不等值连接数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询2. 内连接内连接 【例例4-46】 查询每个学生及其选修课的情况查询每个学生及其选修课的情况 学生的基本情况存放在学生
27、的基本情况存放在student表中,选课情况存表中,选课情况存放在放在sc表中,所以查询过程涉及上述两个表。这表中,所以查询过程涉及上述两个表。这两个表是通过公共字段两个表是通过公共字段sno实现内连接的。实现内连接的。SELECT A.*, B.*FROM student A,sc BWHERE A.sno=B.sno 数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询自然连接自然连接:若在等值连接中把目标列中的:若在等值连接中把目标列中的重复字段去掉,则称为自然连接。重复字段去掉,则称为自然连
28、接。【例例4-47】 用用自然连接自然连接完成查询完成查询:查询每查询每个学生及其选修课的情况。个学生及其选修课的情况。SELECT student.sno, sname, ssex, sbirth, sdept, cno, degreeFROM student, scWHERE student.sno=sc.sno数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询【例【例4-48】 输出所有女学生的学号、姓输出所有女学生的学号、姓名、课号及成绩。名、课号及成绩。SELECT A.sno, sna
29、me, cno, degreeFROM student A, sc BWHERE A.sno=B.sno AND ssex=女女SELECT A.sno, sname, cno, degreeFROM student A INNER JOIN sc B ON A.sno=B.sno WHERE ssex=女女数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询【例【例4-49】 输出计算机系学生的学号、输出计算机系学生的学号、姓名、课程号及成绩。姓名、课程号及成绩。SELECT A.sno, sna
30、me, cno, degreeFROM student A, sc BWHERE A.sno=B.sno AND sdept=CSSELECT A.sno, sname, cno, degreeFROM student A INNER JOIN sc B ON A.sno=B.snoWHERE sdept=CS数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询3. 自连接自连接:将同一个表的不同行连接起来将同一个表的不同行连接起来 在自连接中,在自连接中,必须为表指定两个别名必须为表指定两个别名,
31、使之,使之在逻辑上成为两张表。在逻辑上成为两张表。 自连接的命令的一般格式如下自连接的命令的一般格式如下: SELECT ALL|DISTINCT 别名别名. AS ,别名别名. AS,. FROM 别名别名1, 别名别名2, WHERE AND 数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询3. 自连接自连接: 【例例4-50】 查询同时选修了查询同时选修了C01和和C04课程的学生学课程的学生学号。号。 【例例4-51】 查询与刘晨在同一个系学习的学生的姓名查询与刘晨在同一个系学习的学生的
32、姓名和所在系。和所在系。SELECT sno FROM student A,student BWHERE A.sno=B.sno AND A.cno=C01 AND B.cno=C04SELECT B.sname, B.sdeptFROM student A ,student BWHERE A.sdept=B.sdept AND A.sname=刘晨刘晨 AND B.sname!=刘晨刘晨数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询4. 外连接外连接 在自然连接中,只有在两个表中匹配的行才在
33、自然连接中,只有在两个表中匹配的行才能在结果集中出现。能在结果集中出现。 而而在外连接中可以只限制一个表,而对另外在外连接中可以只限制一个表,而对另外一个表不加限制一个表不加限制(所有的行都出现在结果集中所有的行都出现在结果集中)。 外连接分为外连接分为左外连接、右外连接和全外连接左外连接、右外连接和全外连接。 数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询4. 外连接外连接 外连接命令的一般格式如下外连接命令的一般格式如下: SELECT ALL|DISTINCT 别名别名. AS ,别名别
34、名. AS,.FROM LEFT| RIGHT| FULL OUTERJOIN ON =数据库原理与数据库原理与SQL ServerSQL Server4.2.5 4.2.5 多表连接查询多表连接查询4. 外连接外连接 【例例4-52】 利用左外连接查询改写例利用左外连接查询改写例4-46(查查询每个学生及其选修课的情况询每个学生及其选修课的情况) 。SELECT student.sno,sname,ssex,sbirth,sdept,cno,degreeFROM student LEFT JOIN scON student.sno=sc.sno数据库原理与
35、数据库原理与SQL ServerSQL Server4.2.6 4.2.6 嵌套查询嵌套查询在在SQL语言中,一个语言中,一个SELECTFROMWHERE语句语句称为一个称为一个查询块查询块。将一个查询块嵌套在另一个查询块的。将一个查询块嵌套在另一个查询块的WHERE子句或子句或HAVING子句的条件中称为子句的条件中称为嵌套查询或嵌套查询或子查询子查询。 例如:例如:SELECT sname FROM studentWHERE sno IN(SELECT sno FROM sc WHERE cno=C02)数据库原理与数据库原理与SQL ServerSQ
36、L Server4.2.6 4.2.6 嵌套查询嵌套查询注意问题:注意问题: SQL语言允许多层嵌套查询;语言允许多层嵌套查询; 子查询的子查询的SQL语句必须用语句必须用括号定界括号定界; 子查询不能使用子查询不能使用ORDER BY子句,子句, ORDER BY子句只能对最终查询结果排序;子句只能对最终查询结果排序; 嵌套查询的求解方法是由内向外处理;嵌套查询的求解方法是由内向外处理;子查询一般分为两种:子查询一般分为两种:嵌套子查询和相关嵌套子查询和相关子查询子查询。数据库原理与数据库原理与SQL ServerSQL Server4.2.6 4.2.6
37、 嵌套查询嵌套查询1. 嵌套子查询(不相关子查询)嵌套子查询(不相关子查询) 嵌套子查询的执行不依赖于外部嵌套。嵌套子查询的执行不依赖于外部嵌套。 嵌套子查询的执行过程为:嵌套子查询的执行过程为: 首先执行子查询,子查询得到的结果集不被显示首先执行子查询,子查询得到的结果集不被显示出来,而是传给外部查询,作为外部查询的条件出来,而是传给外部查询,作为外部查询的条件使用,然后执行外部查询,并显示查询结果。子使用,然后执行外部查询,并显示查询结果。子查询可以多层嵌套。查询可以多层嵌套。 嵌套子查询一般也分为两种:嵌套子查询一般也分为两种:子查询返回单子查询返回单个值个值和和子查询返回一个值列表子查
38、询返回一个值列表。数据库原理与数据库原理与SQL ServerSQL Server4.2.6 4.2.6 嵌套查询嵌套查询1)返回单个值)返回单个值 【例例4-53】 查询所有年龄大于平均年龄的学查询所有年龄大于平均年龄的学生姓名。生姓名。SELECT sname FROM student WHERE year(getdate()-year(sbirthday)(SELECT AVG(year(getdate()-year(sbirthday) FROM student )数据库原理与数据库原理与SQL ServerSQL
39、 Server4.2.6 4.2.6 嵌套查询嵌套查询1)返回单个值)返回单个值 【例例4-54】 查询与刘晨在同一个系学习的学查询与刘晨在同一个系学习的学生。生。SELECT sno, sname, sdeptFROM student WHERE sdept=(SELECT sdept FROM student WHERE sname=刘晨刘晨)数据库原理与数据库原理与SQL ServerSQL Server4.2.6 4.2.6 嵌套查询嵌套查询2) 返回一个值列表返回一个值列表 (1)使用)使用IN操作符操作符的嵌套查询。的嵌套查询。 【例例4-55】
40、用用IN操作符改写例操作符改写例4-54查询与查询与刘晨在同一个系学习的学生。刘晨在同一个系学习的学生。SELECT sno, sname, sdeptFROM student WHERE sdept IN(SELECT sdept FROM student WHERE sname=刘晨刘晨)数据库原理与数据库原理与SQL ServerSQL Server4.2.6 4.2.6 嵌套查询嵌套查询2) 返回一个值列表返回一个值列表 (1)使用)使用IN操作符操作符的嵌套查询。的嵌套查询。 【例例4-56】 查询没有选修数学的学生学号和查询没有选修数学的学生学号
41、和姓名。姓名。SELECT sno,sname FROM student WHERE sno NOT IN ( SELECT sno FROM sc WHERE cno IN ( SELECT cno FROM course WHERE cname=数学数学)数据库原理与数据库原理与SQL ServerSQL Server4.2.6 4.2.6 嵌套查询嵌套查询(2) 带有带有ANY或或ALL操作符的子查询。操作符的子查询。 ANY和和ALL操作符操作符在使用时必须和比较运算在使用时必须和比较运算符一起使用。符一起使用。 其格式为:其格式为:ANY|ALL。
42、数据库原理与数据库原理与SQL ServerSQL Server4.2.6 4.2.6 嵌套查询嵌套查询(2) 带有带有ANY或或ALL操作符的子查询。操作符的子查询。数据库原理与数据库原理与SQL ServerSQL Server4.2.6 4.2.6 嵌套查询嵌套查询(2) 带有带有ANY或或ALL操作符的子查询。操作符的子查询。 【例例4-57】 查询其他系中比计算机系某一学查询其他系中比计算机系某一学生年龄小的学生姓名和年龄。生年龄小的学生姓名和年龄。SELECT sname,sageFROM studentWHERE sageANY(SELECT
43、sage FROM student WHERE sdept=计算机系计算机系) AND sdept计算机系计算机系 /该句为父查询该句为父查询中的一个条件中的一个条件数据库原理与数据库原理与SQL ServerSQL Server4.2.6 4.2.6 嵌套查询嵌套查询(2) 带有带有ANY或或ALL操作符的子查询。操作符的子查询。 【例例4-58】 查询其他系中比计算机系学生年查询其他系中比计算机系学生年龄都小的学生。龄都小的学生。SELECT *FROM studentWHERE sageALL(SELECT sage FROM student WHER
44、E sdept=计算机系计算机系) AND sdept计算机系计算机系数据库原理与数据库原理与SQL ServerSQL Server4.2.6 4.2.6 嵌套查询嵌套查询(2) 带有带有ANY或或ALL操作符的子查询。操作符的子查询。 【例例4-58】 查询其他系中比计算机系学生年查询其他系中比计算机系学生年龄都小的学生。龄都小的学生。 一般聚集函数实现的子查询效率高于一般聚集函数实现的子查询效率高于ANY或或ALL查询。查询。SELECT *FROM studentWHERE sage(SELECT MIN(sage) FROM student WHERE sdept=计算机系计算机系)
45、 AND sdept计算机系计算机系数据库原理与数据库原理与SQL ServerSQL Server4.2.6 4.2.6 嵌套查询嵌套查询2. 相关子查询相关子查询(Correlated Subquery) 在相关子查询中,在相关子查询中,子查询的执行依赖于外部子查询的执行依赖于外部查询查询,即子查询的查询条件依赖于外部查询,即子查询的查询条件依赖于外部查询的某个属性值。的某个属性值。 相关子查询的子查询需要重复被执行相关子查询的子查询需要重复被执行,而嵌,而嵌套子查询的子查询只需被执行一次套子查询的子查询只需被执行一次! 在相关子查询中,经常要用到在相关子查询中,经常要用到EXISTS操作
46、符操作符, EXISTS只产生逻辑真值只产生逻辑真值“true”和逻辑假和逻辑假值值“false”,不返回任何实际数据。不返回任何实际数据。数据库原理与数据库原理与SQL ServerSQL Server4.2.6 4.2.6 嵌套查询嵌套查询2. 相关子查询相关子查询(Correlated Subquery) 【例例4-59】 查询所有选修了查询所有选修了C01号课程的学号课程的学生姓名。生姓名。SELECT snameFROM studentWHERE EXISTS ( SELECT * FROM sc WHERE sno=student.sno AND
47、 cno=C01) 数据库原理与数据库原理与SQL ServerSQL Server4.2.6 4.2.6 嵌套查询嵌套查询2. 相关子查询相关子查询(Correlated Subquery) 【例例4-60】 查询选修了全部课程的学生姓名查询选修了全部课程的学生姓名SELECT snameFROM studentWHERE NOT EXISTS (SELECT * FROM course WHERE NOT EXISTS (SELECT * FROM sc WHERE sno=student.sno AND cno=o)数据库原理与数据库原理与SQL Se
48、rverSQL Server4.2.6 4.2.6 嵌套查询嵌套查询3. 子查询规则子查询规则 (1) 通过比较运算符引入的子查询的选择列表只能包括一个表达式或列通过比较运算符引入的子查询的选择列表只能包括一个表达式或列名称。名称。 (2) 如果外部查询的如果外部查询的WHERE子句包括某个列名,则该子句必须与子查子句包括某个列名,则该子句必须与子查询选择列表中的该列兼容。询选择列表中的该列兼容。 (3) 子查询的选择列表中不允许出现子查询的选择列表中不允许出现ntext、text和和image数据类型。数据类型。 (4) 无修改的比较运算符无修改的比较运算符(即后面未跟关键字即后面未跟关键字 ANY 或或 ALL 的运算符的运算符)引引入的子查询不能包括入的子查询不能包括GROUP BY和和HAVING子句。子句。 (5) 包括包括GROUP BY的子查询不能使用的子
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长期照护师操作水平强化考核试卷含答案
- 林木采伐工安全综合强化考核试卷含答案
- 5-5、广东省深圳市重点中学2021-2022学年高二上学期期末考试政治试题
- 初中生语文戏剧2025年说课稿
- 2026新教材语文 23《出师表》教学课件
- 纳米药物中医缓释技术的决策释放曲线优化
- 初中生历史人物专题探究说课稿2025年40
- 2026新教材语文 3 植物妈妈有办法 教学课件
- 初中生心理营养师认知2025说课稿
- 2026年声母趣味说课稿
- 北京市2025中国文化遗产研究院应届毕业生招聘4人笔试历年参考题库典型考点附带答案详解
- 2026重庆联合产权交易所集团股份有限公司招聘13人考试备考题库及答案解析
- 2026年广东深圳市高三二模高考语文试卷试题(含答案)
- 2026年住院医师规范化培训试题【新题速递】附答案详解
- 2026年广东省广州市高三二模英语试题(含答案)
- CNCA-C09-02:2025 强制性产品认证实施规则 移动电源、锂离子电池和电池组(试行)
- 2026年天津市河东区中考一模道德与法治试卷和答案
- 水利三类人员安全员b证考试题
- 2025济源市中考历史试卷
- 贵州国企招聘2025贵州磷化(集团)有限责任公司招聘89人笔试参考题库附带答案详解
- 闯红灯违章抓拍系统技术方案
评论
0/150
提交评论