版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 数据查询是关系运算理论在数据查询是关系运算理论在SQL语言中的主要表现。语言中的主要表现。SQL的的数据查询只有一条数据查询只有一条SELECT语句,但它是用途最广泛的一条语句,语句,但它是用途最广泛的一条语句,功能非常强大。在学习时,应注意把与聚合关系代数表达式联系功能非常强大。在学习时,应注意把与聚合关系代数表达式联系起来考虑问题。起来考虑问题。一、一、 SELECT命令的格式与基本使用命令的格式与基本使用 SQL语言提供语言提供SELECT语句,通过查询操作可得到所需的信语句,通过查询操作可得到所需的信息。息。SELECT语句的一般格式为:语句的一般格式为:SELECT ALL|DIS
2、TINCTSELECT ALL|DISTINCT目标表的列名或列表达式序列目标表的列名或列表达式序列FROMFROM基本表名或视图名基本表名或视图名,基本表名或视图名,基本表名或视图名WHEREWHERE行条件表达式行条件表达式 GROUP BY GROUP BY HAVING HAVING ORDER BY ORDER BY ASC|DESC;2ASC|DESC;1、SELECT完整语句的执行过程:完整语句的执行过程:SELECT的完整语的完整语句格式句格式 根据根据WHERE子句的条件子句的条件表达式,从表达式,从FROM子句指定的子句指定的基本表或视图中找出满足条件基本表或视图中找出满足
3、条件的元组,再按的元组,再按SELECT子句中子句中的目标列表达式,选出元组中的目标列表达式,选出元组中的属性值形成结果表。的属性值形成结果表。 如果有如果有GROUP子句,则子句,则将结果按将结果按的值进行分的值进行分组,该属性列值相等的元组为组,该属性列值相等的元组为一个组,每个组产生结果表中一个组,每个组产生结果表中的一条记录。通常会在每组中的一条记录。通常会在每组中作用集函数。作用集函数。 如果如果GROUP子句带子句带HAVING短语,则只有满足指短语,则只有满足指定条件的组才予输出。定条件的组才予输出。 如果有如果有ORDER子句,则子句,则结果表还要按结果表还要按的值的的值的升序
4、或降序排序。升序或降序排序。2、 SELECT完整语句的说明完整语句的说明SELECT DISTINCTSELECT DISTINCT目标表的列名或列表达式序列目标表的列名或列表达式序列FROMFROM基本表名或视图名基本表名或视图名,基本表名或视图名,基本表名或视图名WHEREWHERE行条件表达式行条件表达式 GROUP BY GROUP BY HAVING HAVING ORDER BY ORDER BY ASC|DESC;2ASC|DESC;DISTINGT:去掉重复的列名行。去掉重复的列名行。列表达式序列:列表达式序列:SELECTSELECT后除了放列名,为了后除了放列名,为了增强
5、了基本检索能力,增强了基本检索能力, 还可以放以特定数据类型为域的列名为变量的函还可以放以特定数据类型为域的列名为变量的函 数,数, SQL提供了许多提供了许多库函数(聚合函数)。库函数(聚合函数)。常用的库函数,如下表所示:常用的库函数,如下表所示:例如:设教学数据库例如:设教学数据库EDUCATION中有三个关系:中有三个关系: 学生关系学生关系 S ( SNO, SNAME, AGE, SEX, SDEPT) 学习关系学习关系SC(SNO, CNO, GRADE) 课程关系课程关系 C ( CNO, CNAME, CDEPT, TNAME)函数名称函数名称功能功能AVG按列计算平均值(列
6、值必须是数值)按列计算平均值(列值必须是数值)SUM按列计算值的总和(列值必须是数值)按列计算值的总和(列值必须是数值)MAX求一列中的最大值求一列中的最大值MIN求一列中的最小值求一列中的最小值COUNT按列值计个数,按列值计个数,COUNT(*)元组个数元组个数SNO, SNAME, AGE, SEX, SDEPT s1 LiYang 20 M 通讯通讯 s2 WangLi 21 M 计算机计算机 s3 WuFang 19 F 材料材料 sn TangWen 20 F 物理物理SNO, CNO, GRADES1 c1 AS2 c2 B CNO, CNAME, CDEPT , TNAME C
7、1 离散数学离散数学 计算机计算机 林英林英 C2 接口技术接口技术 计算机计算机 李凡李凡 C3 固体物理固体物理 材料材料 Cn 理论物理理论物理 物理物理 张礼张礼学生关系学生关系 S学习关系学习关系 SC课程关系课程关系 C【例例1】(1)查询全体学生的学号、查询全体学生的学号、 姓名和年龄。姓名和年龄。(2)查询学生的全部信息。)查询学生的全部信息。(3)查询选修了课程的学生号。)查询选修了课程的学生号。【解答解答】(1)SELECT SNO, SNAME, AGE FROM SSNO, SNAME, AGE, SEX, SDEPT s1 LiYang 20 M 通讯通讯 s2 Wa
8、ngLi 21 M 计算机计算机 s3 WuFang 19 F 材料材料 sn TangWen 20 F 物理物理SNO, SNAME, AGE s1 LiYang 20 s2 WangLi 21 s3 WuFang 19 sn TangWen 20(2) SELECT * FROM S用用 * 表示表示S表的全部列名,而表的全部列名,而不必逐一列出。不必逐一列出。(3) SELECT DISTINCT SNO FROM SC 查询结果中的重复行被去掉。查询结果中的重复行被去掉。 上述查询均为不使用上述查询均为不使用WHERE子句的无条件子句的无条件查询,也称作查询,也称作投影查询投影查询。另
9、外,利用投影查询可控制。另外,利用投影查询可控制列名的顺序,并可通过指定列名的顺序,并可通过指定别名别名改变查询结果的列标改变查询结果的列标题的名字。(题的名字。(1)问也可以写成:)问也可以写成:SELECT SNAME NAME, SNO, AGE FROM S其中,其中,NAME为为SNAME的的别名。别名。【例例2】 (1)求计算机系学生的总数。求计算机系学生的总数。SELECT COUNT(SNO) FROM SWHERE SDEPT=计算机计算机SNO, SNAME, AGE, SEX, SDEPT s1 LiYang 20 M 通讯通讯 s2 WangLi 21 M 计算机计算机
10、 s3 WuFang 19 F 材料材料 sn TangWen 20 F 物理物理(2)求学校中共有多少个系)求学校中共有多少个系SELECT COUNT(DISTINCT SDEPT) AS DeptNum FROM S注意:注意:a. 加入关键字加入关键字DISTINCT后表示消后表示消 去重复行,可计算字段去重复行,可计算字段“SDEPT“ 不同值的数目。不同值的数目。b. COUNT函数对函数对空值空值不计算,但对不计算,但对零零进行计算。进行计算。(3)统计有成绩同学的人数)统计有成绩同学的人数 SELECT COUNT (GRADE) FROM SC上例中成绩为零的同学计算在内,没
11、有成绩(即为空值)的不计算。上例中成绩为零的同学计算在内,没有成绩(即为空值)的不计算。SELECT DISTINCTSELECT DISTINCT目标表的列名或列表达式序列目标表的列名或列表达式序列FROMFROM基本表名或视图名基本表名或视图名,基本表名或视图名,基本表名或视图名WHEREWHERE行条件表达式行条件表达式 GROUP BY GROUP BY HAVING HAVING ORDER BY ORDER BY ASC|DESC;2ASC|DESC; WHERE WHERE行条件表达式:行条件表达式: 当要在表中找出满足某些条件的行时,则需使用当要在表中找出满足某些条件的行时,则
12、需使用WHEREWHERE子句指定子句指定查询条件。查询条件。WHEREWHERE子句中,条件通常通过三部分来描述:子句中,条件通常通过三部分来描述:Section 1:列名;列名;Section 3:列名、常数列名、常数Section 2:比较运算符;比较运算符;WHERE子句子句中常用的比较运算符如下表:中常用的比较运算符如下表:查询条件查询条件谓谓 词词算术比较运符算术比较运符确定范围确定范围集合运算符集合运算符确定集合确定集合逻辑运算符逻辑运算符字符匹配字符匹配空值空值谓词谓词聚合函数聚合函数=, , =, =,=,!=,或或!= != BETWEEN AND, NOT BETWEEN
13、 ANDBETWEEN AND, NOT BETWEEN ANDUNION(UNION(并并),INTERSECT(),INTERSECT(交交),EXCEPT(),EXCEPT(差差) )IN, NOT ININ, NOT INAND, ORAND, OR,NOTNOTLIKE, NOT LIKELIKE, NOT LIKEIS NULL, IS NOT NULLIS NULL, IS NOT NULLEXISTS(EXISTS(存在量词存在量词),ALL,SOME,UNIQUE),ALL,SOME,UNIQUEAVG(AVG(平均值平均值),MIN,MAX,SUM,COUNT(),MIN,
14、MAX,SUM,COUNT(计数计数) )SELECT DISTINCTSELECT DISTINCT目标表的列名或列表达式序列目标表的列名或列表达式序列FROMFROM基本表名或视图名基本表名或视图名,基本表名或视图名,基本表名或视图名WHEREWHERE行条件表达式行条件表达式 GROUP BY GROUP BY HAVING HAVING ORDER BY ORDER BY ASC|DESC;2ASC|DESC;GROUP BYGROUP BY :GROUP BYGROUP BY子句可以将查询结果表的各行按一列或多列子句可以将查询结果表的各行按一列或多列 取值相等的原则进行分组。取值相等
15、的原则进行分组。ORDER BY ORDER BY :用户也可以用用户也可以用ORDER BYORDER BY子句指定按照一个或多个属性子句指定按照一个或多个属性 列的升序(列的升序(ASCASC)或降序()或降序(DESCDESC)重新排列查询结果,)重新排列查询结果, 其中升序其中升序ASCASC为缺省值。为缺省值。 二、二、 SELECT命令的格式的应用命令的格式的应用SELECT DISTINCTSELECT DISTINCT目标表的列名或列表达式序列目标表的列名或列表达式序列FROMFROM基本表名或视图名基本表名或视图名,基本表名或视图名,基本表名或视图名WHEREWHERE行条件
16、表达式行条件表达式 GROUP BY GROUP BY HAVING HAVING ORDER BY ORDER BY ASC|DESC;2ASC|DESC;应应用用1 1、单表查询、单表查询2 2、多表查询(连接查询)、多表查询(连接查询)3 3、集合查询、集合查询1、单表查询、单表查询单单表表查查询询选择表中的若干列选择表中的若干列 查询指定列查询指定列查询全部列查询全部列查询经过计算的值查询经过计算的值对查询结果排序对查询结果排序使用集函数使用集函数对查询结果分组对查询结果分组选择表中的若干元组选择表中的若干元组消除取值重复的行消除取值重复的行查询满足条件的元组查询满足条件的元组比较比较
17、确定范围确定范围确定集合确定集合字符匹配字符匹配涉及空值涉及空值的查询的查询多重条件多重条件查询查询1、单表查询、单表查询(一)选择表中的若干列(一)选择表中的若干列 设教学数据库设教学数据库EDUCATION中有一个关系:中有一个关系: 学生关系学生关系 Student ( SNO, SNAME, AGE, SEX, SDEPT) 中有一万条记录。中有一万条记录。 SNO, SNAME, AGE, SEX, SDEPT95001 李勇李勇 20 M 通讯通讯95002 刘晨刘晨 21 M 计算机计算机95003 王名王名 19 F 材料材料 9 张立张立 20 M 物理物理 (1)查询指定列
18、查询指定列【例例1】查询全体学生的姓名、学号、所在系查询全体学生的姓名、学号、所在系 SELECT Sname, Sno, Sdept FROM Student;(2)查询全部列)查询全部列【例例2】查询全体学生的详细记录查询全体学生的详细记录 SELECT SELECT * * FROM Student; FROM Student;(3)查询经过计算的值)查询经过计算的值 SELECTSELECT子句的子句的 不仅可以是表中的属性列,也不仅可以是表中的属性列,也可以是有关表达式,即可以将查询出来的属性列经过一定的计算可以是有关表达式,即可以将查询出来的属性列经过一定的计算后列出结果。后列出结
19、果。【例例3】查全体学生的姓名及其出生年份查全体学生的姓名及其出生年份这时结果表中的列的顺序与基表中不同,这时结果表中的列的顺序与基表中不同,是按查询要求,先列出姓名属性,然后是按查询要求,先列出姓名属性,然后再列学号属性和所在系属性。再列学号属性和所在系属性。实际上是无条件地把实际上是无条件地把StudentStudent表的全部表的全部信息都查询出来,所以也称为全表查询,信息都查询出来,所以也称为全表查询,这是最简单的一种查询。这是最简单的一种查询。 SELECT Sname, 2003-Sage FROM Student 本例中,本例中, 中第二项不是通常的列名,而是一中第二项不是通常的
20、列名,而是一个计算表达式,是用当前的年份减去学生的年龄,这样,所得的个计算表达式,是用当前的年份减去学生的年龄,这样,所得的即是学生的出生年份。输出的结果为:即是学生的出生年份。输出的结果为:此外,不仅可以是算术表达式,还可以是此外,不仅可以是算术表达式,还可以是字符串常量、函数等字符串常量、函数等用户可以通过指定别名用户可以通过指定别名来改变查询结果的列标题,例如对于上例,来改变查询结果的列标题,例如对于上例,可以如下定义列别名可以如下定义列别名 SELECT Sname NAME, Year of Birth:BIRTH, 2003-Sage BIRTHDAY, ISLOWER(Sdept
21、) DEPARTMENT FROM Student;Sname2003-Sage李勇李勇刘晨刘晨王名王名张立张立1983198219841981结果为:结果为: SELECT命令的格式命令的格式 不仅可以是算术表达式不仅可以是算术表达式 ,还可以是字符串常量、函数等。同时用户可以通过指定别名来改还可以是字符串常量、函数等。同时用户可以通过指定别名来改变查询结果的列标题,这对于含算术表达式、常量、函数名的目变查询结果的列标题,这对于含算术表达式、常量、函数名的目标列表达式尤为有用。标列表达式尤为有用。NAMEBIRTHBIRTHDAYDEPARTMENT李勇李勇刘晨刘晨王名王名张立张立Year
22、of Birth:Year of Birth:Year of Birth:Year of Birth:1976197619761976csifmais(二)选择表中的若干元组(二)选择表中的若干元组 (1)消除取值重复的行)消除取值重复的行【例例4】假如教学数据库假如教学数据库EDUCATION中有一个中有一个学习关系:学习关系:SC(SNO, CNO, GRADE)SC(SNO, CNO, GRADE)查所有选修过课的学生的学号查所有选修过课的学生的学号 SELECTSELECT Sno Sno FROM FROM SC; SC; 该查询结果里包含了许多重复的行。如果想去掉结果该查询结果里包
23、含了许多重复的行。如果想去掉结果 表中的重复行,必须指定表中的重复行,必须指定DISTINCTDISTINCT短语:短语:SELECTSELECT DISTINCTDISTINCT Sno Sno FROMFROM SC; SC; (2)(2)查询满足条件的元组查询满足条件的元组 查询满足指定条件的元组可以通过查询满足指定条件的元组可以通过WHEREWHERE子句实现。子句实现。 SNO, CNO, GRADE95001 c1 9695001 c2 98 99999 c5 86 SNO9500195001 95002 99999SNO9500195002 95100 比较比较【例例5】从学生关
24、系从学生关系Student中查计算机系全体学生的名单中查计算机系全体学生的名单 SELECT Sname FROM Student WHERE Sdept = CS; 【例例6】查所有年龄在查所有年龄在2020岁以下的学生姓名及其年龄岁以下的学生姓名及其年龄 SELECT Sname, Sage SELECT Sname, Sage FROM Student FROM Student WHERE Sage 20;WHERE Sage = 20;WHERE NOT Sage= 20; 或或【例例7】查考试成绩有不及格的学生的学号查考试成绩有不及格的学生的学号SELECT DISTINCT Sno
25、 FROM C WHERE Grade 60; 这里使用了这里使用了DISTINCT短语,当一个短语,当一个学生有多门课程不及格,他的学号也学生有多门课程不及格,他的学号也只列一次。只列一次。 注:注:C为为课程关系课程关系 C ( CNO, CNAME, CDEPT, TNAME) 确定范围确定范围【例例8】在学生关系在学生关系StudentStudent中,查询年龄在中,查询年龄在2020至至2323岁之间的学生的姓岁之间的学生的姓名、系别、和年龄名、系别、和年龄与与BETWEEN.AND.BETWEEN.AND.相对的谓词是相对的谓词是NOT BETWEEN.AND.NOT BETWEE
26、N.AND.。 【例例9】查询年龄不在查询年龄不在2020至至2323岁之间的学生姓名、系别和年龄。岁之间的学生姓名、系别和年龄。 SELECTSELECT Sname, Sdept, Sage Sname, Sdept, Sage FROMFROM Student Student WHERE WHERE Sage Sage BETWEEN BETWEEN 20 20 ANDAND 23; 23;SELECT Sname, Sdept, Sage FROM StudentWHERE Sage NOT BETWEEN 20 AND 23; 确定集合确定集合【例【例9 9】在学生关系在学生关系St
27、udentStudent中,查信息系(中,查信息系(ISIS)、数学系()、数学系(MAMA)和计)和计算机科学系(算机科学系(CSCS)的学生的姓名和性别)的学生的姓名和性别SELECT Sname, Ssex FROM Student WHERE Sdept IN (IS, MA, CS); 与与IN相对的谓词是相对的谓词是NOT IN,用于查找属性值不属于指定集合的元组。,用于查找属性值不属于指定集合的元组。 【例【例1010】查既不是信息系、数学系,也不是计算机科学系的学生的姓查既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别名和性别SELECT Sname, Ssex FR
28、OM Student WHERE Sdept NOT IN (IS, MA, CS) 字符匹配字符匹配 谓词谓词LIKELIKE可以用来进行字符串的匹配。其一般语法格式如下:可以用来进行字符串的匹配。其一般语法格式如下: NOT LIKENOT LIKE ESCAPEESCAPE 其含义其含义是查找指定的属性列值与是查找指定的属性列值与 相匹配的元组。相匹配的元组。 可以是一个完整的字符串,也可以含有通配符可以是一个完整的字符串,也可以含有通配符“% %”和和“_ _”。 %(百分号百分号) :代表任意长度(长度可以为:代表任意长度(长度可以为0)的字符串。)的字符串。 _(下横线下横线) :
29、代表任意单个字符。代表任意单个字符。这类查询也称这类查询也称模糊查询模糊查询。【例【例1111】在学生关系在学生关系StudentStudent中,中,查询所有姓张的学生的学号和姓名。查询所有姓张的学生的学号和姓名。SELECTSELECT Sno, Sname Sno, Sname FROM FROM Student StudentWHEREWHERE Sname Sname LIKELIKE 张张%【例【例1212】查询姓名中第二个汉字是查询姓名中第二个汉字是“力力”的学号和姓名。的学号和姓名。SELECT Sno, Sname FROM StudentWHERE Sname LIKE _
30、 _力力%Note:一个汉字占两个字符。一个汉字占两个字符。【例【例1313】查所以不姓刘的学生姓名、学号、性别查所以不姓刘的学生姓名、学号、性别SELECT SELECT Sname, Sno, Ssex Sname, Sno, Ssex FROMFROM Student StudentWHEREWHERE Sname Sname NOT LIKE NOT LIKE 刘刘%;%;ESCAPE ESCAPE :如果用户要查询的匹配字符串本身就含有:如果用户要查询的匹配字符串本身就含有% %或或_ _,比如要查名字为,比如要查名字为DB_DesignDB_Design的课程的学分,应如何实现呢?
31、这的课程的学分,应如何实现呢?这时就要使用时就要使用ESCAPE ESCAPE 短语对通配符进行转义了。短语对通配符进行转义了。【例【例1414】在一个课程关系在一个课程关系C(Cno,Cname, Credit)C(Cno,Cname, Credit)中,查中,查DB_DesignDB_Design课课程的课程号和学分程的课程号和学分 SELECT Cno, Credit FROM CWHERE Cname LIKE DB_Design ESCAPE 说明说明ESCAPE 短语短语表示表示为换码字符,这样匹配串中紧跟在为换码字符,这样匹配串中紧跟在后面的后面的字符字符”_”不再具有通配符的含
32、义,而是取其本身含义,被转义为不再具有通配符的含义,而是取其本身含义,被转义为普通的普通的”_”字符。字符。【例【例1515】同上题类似,查以同上题类似,查以”DB_”DB_”开头,且倒数第三个字符为开头,且倒数第三个字符为i i的课程的课程 的详细情况的详细情况SELECT * FROM C WHERE Cname LIKE DB_%i_ ESCAPE ;说明说明这里的匹配字符串这里的匹配字符串DB_%i_。第一个。第一个_前面有前面有换码字符换码字符,所以它,所以它被转义为普通的被转义为普通的_字符。而字符。而%、第二个、第二个_和第三个和第三个_前面均没有换码前面均没有换码字符字符,所以
33、它们仍作为通配符。,所以它们仍作为通配符。 涉及空值的查询涉及空值的查询 某个字段某个字段没有值没有值称之为具有称之为具有空值(空值(NULL)。通常没有为一个。通常没有为一个列输入值时,该列的值就是空值。列输入值时,该列的值就是空值。 空值空值不同于不同于零零和和空格空格,它不占任何存储空间。,它不占任何存储空间。 例如,某些学生选课后没有参加考试,有选课记录,但没有例如,某些学生选课后没有参加考试,有选课记录,但没有考试成绩,考试成绩为空值,这与参加考试,成绩为零分的不同。考试成绩,考试成绩为空值,这与参加考试,成绩为零分的不同。【例【例1616】在学生学习关系在学生学习关系SC(Sno,
34、Cno,Grade)SC(Sno,Cno,Grade)中,查询一下缺少成绩的中,查询一下缺少成绩的 学生的学号和相应的课程号学生的学号和相应的课程号SELECT Sno, Cno FROM SCWHERE Grade IS NULL; 注意:注意: 这里的空值条件为这里的空值条件为IS NULL,不能写成不能写成Grade=NULL。【例【例1717】查所有有成绩的记录的学生学号和课程号查所有有成绩的记录的学生学号和课程号 多重条件查询多重条件查询 逻辑运算符逻辑运算符ANDAND和和OROR可用来联结多个查询条件。如果这两个运可用来联结多个查询条件。如果这两个运算符同时出现在同一个算符同时出
35、现在同一个WHEREWHERE条件子句中,则条件子句中,则ANDAND的优先级高于的优先级高于OROR,但用户可以用括号改变优先级。但用户可以用括号改变优先级。【例【例1818】在学生关系在学生关系StudentStudent中,查中,查CSCS系年龄在系年龄在2020岁以下的学生姓名岁以下的学生姓名SELECTSELECT Sno, CnoSno, Cno FROM FROM SCSC WHEREWHERE GradeGrade IS NOT NULLIS NOT NULL; ;SELECT Sname FROM Student WHERE Sdept=CS AND Sage20; (三)对
36、查询结果排序(三)对查询结果排序 如果没有指定查询结果的显示顺序,如果没有指定查询结果的显示顺序,DBMS将按其最方便的顺将按其最方便的顺序(通常是元组在表中的先后顺序)输出查询结果。用户也可以用序(通常是元组在表中的先后顺序)输出查询结果。用户也可以用ORDER BY子句子句指定按照一个或多个属性列的升序(指定按照一个或多个属性列的升序(ASC)或序)或序(DESC)重新排列查询结果,其中升序)重新排列查询结果,其中升序ASC为缺省值。为缺省值。ORDER BY子句子句必须出现在其他子句之后。必须出现在其他子句之后。【例【例1919】学习关系:学习关系:SC(SNO, CNO, GRADE)
37、SC(SNO, CNO, GRADE)中,中,查询选修查询选修C1 的学生学的学生学号和成绩,并按成绩降序排列。号和成绩,并按成绩降序排列。SELECT Sno, Grade FROM SCWHERE Cno=c1ORDER BY Grade DESC【例【例2020】查询选修查询选修C2、C3、C4或或C5课程的学号、课程号和成绩,查课程的学号、课程号和成绩,查询结果按学号升序排列,学号相同再按成绩降序排列。询结果按学号升序排列,学号相同再按成绩降序排列。SELECT Sno,Cno, Grade FROM SCWHERE Cno IN (C2 ,C3, C4,C5)ORDER BY Sno
38、,Grade DESC说明说明 有些学生选修了有些学生选修了3号课程后没有参加考试,即成绩列为空值。用号课程后没有参加考试,即成绩列为空值。用ORDER BY子句对查询结果按成绩排序时,若按升序排,成绩为空子句对查询结果按成绩排序时,若按升序排,成绩为空值的元组将最后显示,若按降序排,成绩为空值的元组将最先显示。值的元组将最后显示,若按降序排,成绩为空值的元组将最先显示。 (四)使用聚合函数(四)使用聚合函数 为了进一步方便用户,增强检索功能,为了进一步方便用户,增强检索功能,SQL提供了许多集函提供了许多集函数,主要包括:数,主要包括: COUNT(DISTINCT|ALL *) 统计元组个
39、数统计元组个数 COUNT(DISTINCT|ALL ) 统计一列中值的个数统计一列中值的个数 SUM(DISTINCT|ALL ) 计算一列值的总和(此列必计算一列值的总和(此列必 AVG(DISTINCT|ALL ) 计算一列值的平均值(此列计算一列值的平均值(此列 必须是数值型)必须是数值型) MAX(DISTINCT|ALL ) 求一列值中的最大值求一列值中的最大值 MIN(DISTINCT|ALL ) 求一列值中的最小值求一列值中的最小值 如果指定如果指定DISTINCT短语,则表示在计算时要取消指定列中的短语,则表示在计算时要取消指定列中的重复值。如果不指定重复值。如果不指定DIS
40、TINCT短语或指定短语或指定ALL短语(短语(ALL为缺省为缺省值),则表示不取消重复值。值),则表示不取消重复值。【例【例2121】在在学习关系:学习关系:SC(SNO, CNO, GRADE)SC(SNO, CNO, GRADE)中,中,求学号为求学号为S1学生的学生的总分和平均分。总分和平均分。SELECTSELECT SUM(Grade)SUM(Grade) AS AS TotalGradeTotalGrade, , AVG(Grade)AVG(Grade) AS AS AveGradeAveGradeFROMFROM SC SC 注意:注意: SUMSUM和和AVGAVG只能对数值
41、型只能对数值型WHEREWHERE (Sno = S1) (Sno = S1) 字段进行计算。字段进行计算。【例【例2222】在学生关系在学生关系StudentStudent中,查询学生总人数中,查询学生总人数SELECTSELECT COUNT(COUNT(* *) ) FROM FROM Student; Student; Note:COUNT(*)用来统计元组的个数。用来统计元组的个数。【例【例2323】在在SCSC中,中,求选修求选修C1号课程的最高分、最低分及之间相差的分数号课程的最高分、最低分及之间相差的分数SELECT MAX(Grade) AS MaxGrade, MIN(Gr
42、ade) AS MinGrade, MAX(Grade) - MIN(Grade) AS DiffFROM SCWHERE (Cno = c1)【例【例2323】在在SCSC关系中,查询各个课程号与相应的选课人数关系中,查询各个课程号与相应的选课人数 SELECTSELECT Cno, Cno, COUNT(Sno)COUNT(Sno) FROM FROM SC SC GROUP BY CnoGROUP BY Cno; ; 执行执行过程过程该该SELECT语句对语句对SC表按表按Cno的的取值进行分组,所有具有相同取值进行分组,所有具有相同Cno值的元组为一组,然后对每一组作值的元组为一组,然后对每一组作用集函数用集函数COUNT以求得该组的学以求得该组的学生人数。生人数。 具体如何?具体如何?(五)(五) 对查询结果分组对查询结果分组 GROUP BY子句可以将查询结果表的各行按一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 芳香烃生产工操作规程考核试卷含答案
- 光敏电阻器制造工安全文明评优考核试卷含答案
- 社群健康助理员安全演练考核试卷含答案
- 碳九石油树脂装置操作工风险评估与管理模拟考核试卷含答案
- 2024年孝感市特岗教师招聘笔试真题汇编附答案
- 裂解汽油加氢装置操作工班组建设水平考核试卷含答案
- 2024年承德医学院辅导员考试参考题库附答案
- 电视调频天线工岗前安全生产意识考核试卷含答案
- 低速载货汽车司机6S执行考核试卷含答案
- 2024年沧州航空职业学院辅导员招聘备考题库附答案
- 汉源县审计局关于公开招聘编外专业技术人员的备考题库附答案
- GB/T 46758-2025纸浆硫酸盐法蒸煮液总碱、活性碱和有效碱的测定(电位滴定法)
- 2026届福建省龙岩市龙岩一中生物高一第一学期期末综合测试试题含解析
- 2026年上海市普陀区社区工作者公开招聘笔试参考题库及答案解析
- 二元思辨:向外探索(外)与向内审视(内)-2026年高考语文二元思辨作文写作全面指导
- 智能清扫机器人设计与研发方案
- 《中华人民共和国危险化学品安全法》全套解读
- 糖尿病足护理指导
- 甲状腺肿瘤的课件
- 新型铝合金雨棚施工方案
- 战略屋策略体系roadmapPP T模板(101 页)
评论
0/150
提交评论