第3章 关系数据库标准语言SQL--37 SQL数据查询_第1页
第3章 关系数据库标准语言SQL--37 SQL数据查询_第2页
第3章 关系数据库标准语言SQL--37 SQL数据查询_第3页
第3章 关系数据库标准语言SQL--37 SQL数据查询_第4页
第3章 关系数据库标准语言SQL--37 SQL数据查询_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

1、数据库原理及应用数据库原理及应用第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL-3.7 SQL-3.7 SQL数据查询数据查询第第2 2页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL本章要点本章要点 本章介绍关系数据库标准语言本章介绍关系数据库标准语言SQLSQL。 SQLSQL语言包括语言包括数据定义语言(数据定义语言(DDLDDL,Data Definition Data Definition LanguageLanguage)、)、数据操纵语言(数据操纵语言(DMLDML,Data Manipulation Dat

2、a Manipulation LanguageLanguage)和)和数据控制语言(数据控制语言(DCLDCL,Data Control Data Control LanguageLanguage)。)。数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL第第3 3页页本章主要内容本章主要内容3.1 SQL3.1 SQL语言的基本概念与特点语言的基本概念与特点3.2 SQL Server 20053.2 SQL Server 2005基础知识基础知识3.3 3.3 数据库的体系结构数据库的体系结构3.4 3.4 创建及管理数据库创建及管理数据库 3

3、.5 3.5 管理数据表(含数据类型)管理数据表(含数据类型)3.6 SQL3.6 SQL数据更新数据更新3.7 SQL3.7 SQL数据查询数据查询 3.8 3.8 视图视图3.9 SQL3.9 SQL数据控制数据控制3.10 3.10 嵌入式嵌入式SQLSQL语言语言* *习题习题第第4 4页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL3.7 SQL3.7 SQL数据查询数据查询 数据查询是数据库中最常用的操作命令。数据查询是数据库中最常用的操作命令。SQLSQL提供了提供了SelectSelect查询语句查询语句,通过查询操作得到所

4、需的信息。,通过查询操作得到所需的信息。 SelectSelect语句提供了丰富的查询能力,可以查询一个表或多个语句提供了丰富的查询能力,可以查询一个表或多个表。表。3.7.1 3.7.1 单表查询单表查询3.7.2 3.7.2 多表查询多表查询第第5 5页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL3.7.1 3.7.1 单表查询单表查询 SelectSelect语句主要分为:语句主要分为:1 1、对列的查询、对列的查询选择一个表中指定的列选择一个表中指定的列选择全部列选择全部列修改查询结果中的列标题修改查询结果中的列标题替换查询结果中

5、的数据替换查询结果中的数据查询经过计算的值查询经过计算的值3 3、对查询结果排序、对查询结果排序4 4、使用聚合函数、使用聚合函数5 5、对查询结果分组、对查询结果分组6 6、使用、使用HAVINGHAVING子句子句7 7、COMPUTECOMPUTE子句子句8 8、使用查询结果来创建新表、使用查询结果来创建新表2、对行的查询、对行的查询消除重复行消除重复行限制结果集的返回行数限制结果集的返回行数查询满足条件的行查询满足条件的行逻辑运算符逻辑运算符比较运算符比较运算符指定范围指定范围确定集合确定集合字符匹配字符匹配空值比较空值比较第第6 6页页数据库原理及应用数据库原理及应用-第第3 3章章

6、 关系数据库标准语言关系数据库标准语言SQLSQLSelectSelect语句基本格式语句基本格式SELECTSELECT select_list select_list INTOINTO new_table new_table FROM FROM table_source table_source WHERE WHERE search_condition search_condition GROUP BY GROUP BY , , HAVINGHAVING search_condition search_condition ORDER BY ORDER BY ASC|DESCASC|DESC

7、 , , ASC|DESC ASC|DESC 第第7 7页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL1 1、对列的相关查询、对列的相关查询1 1)选择一个表中指定的列)选择一个表中指定的列基本格式为:基本格式为:SELECT SELECT column_namecolumn_name , , column_namecolumn_nameFROM FROM table_nametable_nameWHERE WHERE Search_conditionSearch_condition第第8 8页页数据库原理及应用数据库原理及应用-第第3

8、3章章 关系数据库标准语言关系数据库标准语言SQLSQL 例例1 1:查询数据表:查询数据表StudentStudent中所有学生的学号及年龄中所有学生的学号及年龄; ; SELECT Sno SELECT Sno,age FROM Studentage FROM Student 例例2 2:查询学生的学号、姓名及年龄:查询学生的学号、姓名及年龄; ; SELECT Sno SELECT Sno,namename,age FROM Studentage FROM Student第第9 9页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL1 1

9、、对列的相关查询、对列的相关查询2)2)查询全部列查询全部列SELECT SELECT * * FROM FROM StudentStudent或者或者SELECT SELECT Sno,name,sex,ageSno,name,sex,age , ,deptdept FROM StudentFROM Student3)3)修改查询结果中的列标题修改查询结果中的列标题SELECT SELECT column_namecolumn_name as as new_namenew_name ,n,nFROM FROM table_nametable_name第第1010页页数据库原理及应用数据库原理

10、及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL 例例1 1:查询数据表:查询数据表StudentStudent中所有学生的学号及年龄中所有学生的学号及年龄, ,结果中各列的标结果中各列的标题分别指定为学号、年龄题分别指定为学号、年龄; ;SELECT SELECT Sno as Sno as 学号学号, age as , age as 年龄年龄 FROM StudentFROM Student或者或者 SELECT SELECT Sno Sno 学号学号, age , age 年龄年龄 FROM StudentFROM Student或者或者 SELECT SELEC

11、T 学号学号=Sno, =Sno, 年龄年龄= age = age FROM StudentFROM Student 注意:注意:当自定义的标题中含有空格时,必须用引号将标题括起来当自定义的标题中含有空格时,必须用引号将标题括起来。 例例2 2:查询数据表:查询数据表StudentStudent中所有学生的学号及年龄中所有学生的学号及年龄, ,结果中各列的标结果中各列的标题分别指定为学题分别指定为学 号、年号、年 龄龄; ;SELECT Sno as SELECT Sno as 学学 号号 , age as , age as 年年 龄龄 FROM StudentFROM Student第第11

12、11页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL1 1、对列的相关查询、对列的相关查询4 4)替换查询结果中的)替换查询结果中的数据(数据(casecase)在在对表进行查询时,有时对所查询的某些列希望得到的对表进行查询时,有时对所查询的某些列希望得到的是其他概念,是其他概念,如当性别用如当性别用0 0、1 1存储时存储时希望查询结果显示为希望查询结果显示为男男、女女,或者当成绩小于或者当成绩小于6060时查询结果显示为不及格,其时查询结果显示为不及格,其他为及格或优秀。他为及格或优秀。 要替换查询结果中的数据,则要用到要替换查询结果中

13、的数据,则要用到CASECASE表达式表达式。第第1212页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL基本格式:基本格式:CASECASEWHENWHEN 条件条件1 1 THEN THEN 表达式表达式1 1WHEN WHEN 条件条件2 2 THEN THEN 表达式表达式2 2.ELSE ELSE 表达式表达式ENDEND第第1313页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL 例例1 1:查询数据表:查询数据表SCSC的学生的学号、课程号及成绩,对于成绩按以下的学生的学号

14、、课程号及成绩,对于成绩按以下规定显示:成绩在规定显示:成绩在6060分以下显示为不及格;分以下显示为不及格;60-7960-79之间显示为良好;之间显示为良好;8080以上显示为优秀。以上显示为优秀。SELECT Sno,Cno,SELECT Sno,Cno,score=score=casecasewhen score60 then when score=60 and score=60 and score=80 then when score=80 then 优秀优秀endendFROM SCFROM SC第第1414页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关

15、系数据库标准语言SQLSQL1 1、对列的相关查询、对列的相关查询5 5)查询经过计算的值)查询经过计算的值使用使用selectselect对列进行查询时,不仅可以直接以列的原始值作对列进行查询时,不仅可以直接以列的原始值作为结果,也可以对列值进行计算后所得的值作为查询结果;为结果,也可以对列值进行计算后所得的值作为查询结果;计算列值可使用的算术运算符有计算列值可使用的算术运算符有+ - + - * * / /和和% % ;要查询经过计算的列,在要查询经过计算的列,在selectselect之后的目标列的格式为表达之后的目标列的格式为表达式:式:SELECT expression , expr

16、ession SELECT expression , expression 第第1515页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL 例例1 1:显示学生的学号,姓名及出生年份:显示学生的学号,姓名及出生年份SELECT Sno SELECT Sno 学号学号, sname , sname 姓名姓名, ,出生年份出生年份= =year(getdate()year(getdate() - age - ageFROM StudentFROM Student注:注: year(getdate()year(getdate() =2013 =20

17、13第第1616页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL2 2、对行的相关查询、对行的相关查询1 1)消除结果集中的重复行)消除结果集中的重复行格式为:格式为: SELECT SELECT distinctdistinct column_namecolumn_name , , column_namecolumn_name注:注:关键字关键字distinctdistinct的含义是对结果集中的的含义是对结果集中的重复行只选择一重复行只选择一个个,保证行的唯一性。,保证行的唯一性。第第1717页页数据库原理及应用数据库原理及应用-第第3

18、 3章章 关系数据库标准语言关系数据库标准语言SQLSQL2 2、对行的相关查询、对行的相关查询2 2)限制结果集的返回行数)限制结果集的返回行数可以可以用用TOPTOP选项限制查询结果集返回的行数选项限制查询结果集返回的行数。基本格式为:基本格式为:TOP TOP n percentn percent 注:注:n n是一个正整数,表示返回查询结果集的是一个正整数,表示返回查询结果集的前前n n行行。若带。若带percentpercent关键字,则表示返回结果集的关键字,则表示返回结果集的前前n%n%行行。第第1818页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系

19、数据库标准语言SQLSQL例例1 1:显示男同学的前:显示男同学的前5 5条记录条记录 SELECT SELECT top 5 top 5 * * from Student where sex= from Student where sex=男男例例2 2:显示所有学生的前:显示所有学生的前20%20%条记录条记录 SELECT SELECT top 20 percent top 20 percent * * from Student from Student 第第1919页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL2 2、对行的相关查

20、询、对行的相关查询3 3)查询满足条件的行)查询满足条件的行查询满足条件的行可以通过查询满足条件的行可以通过WHEREWHERE子句实现子句实现。WHEREWHERE字句指定字句指定一系列搜索条件,只有满足条件的行才用来构造结果集。一系列搜索条件,只有满足条件的行才用来构造结果集。基本格式:基本格式: WHERE WHERE 第第2020页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQLsearch_conditionsearch_condition为查询条件,可以将多个判定运算的结为查询条件,可以将多个判定运算的结果通过逻辑运算符再组成更复

21、杂的查询条件。果通过逻辑运算符再组成更复杂的查询条件。 1 1)逻辑运算)逻辑运算符符(notnot、andand、oror) 2 2)比较)比较运算符运算符(、(、 、 、=)=) 3 3)指定)指定范围(范围(between between 和和 not betweennot between) 4 4)确定集合)确定集合(in (in 和和 not in)not in) 5 5)字符)字符匹配(匹配(like like 和和 not likenot like) 6 6)空值)空值比较(比较(is null is null 和和 is not nullis not null)第第2121页页

22、数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL1 1)逻辑运算符)逻辑运算符运算符运算符含义含义实例实例NOT逻辑上相反的条件逻辑上相反的条件Where not (产品编号产品编号0001)AND两个条件必须同时成立两个条件必须同时成立Where 产品编号产品编号0001 and 产品产品名称名称电视电视OR两个条件之一成立即可两个条件之一成立即可Where 产品编号产品编号0001 or 产品产品名称名称电视电视第第2222页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL2 2)比较运算

23、符)比较运算符比较运算符用于比较两个表达式的值,分别是比较运算符用于比较两个表达式的值,分别是、 、= 、=、!= != 、! ! 等。等。注:注:当两个表达式值均为不空(当两个表达式值均为不空(not nullnot null)时,比较运算符)时,比较运算符返回逻辑值返回逻辑值True True 或或FalseFalse,而当两个表达式值中有一个为空,而当两个表达式值中有一个为空值(值(nullnull)或都为空值时,比较运算符返回)或都为空值时,比较运算符返回UNKNOWNUNKNOWN。第第2323页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言

24、SQLSQL 例例1 1:查询年龄小于:查询年龄小于2020岁的学生的学号、姓名及院系岁的学生的学号、姓名及院系SELECT Sno, name,deptSELECT Sno, name,deptFROM StudentFROM StudentWHERE WHERE age 20age =18 and age=18 and age=22第第2424页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL3 3)指定范围)指定范围 用于范围比较的关键字有两个:用于范围比较的关键字有两个: between and between and 和和 not

25、not between andbetween and,用于查找字段值在(或不在)指定范围的行。用于查找字段值在(或不在)指定范围的行。 其中其中betweenbetween关键字之后是范围的下限(即低值),关键字之后是范围的下限(即低值),andand关键字关键字之后的是范围的上限(即高值)。之后的是范围的上限(即高值)。 between between 和和 not betweennot between表示闭区间表示闭区间,使用,使用between between 和和 not not betweenbetween表达式进行查询的效果类似于使用了表达式进行查询的效果类似于使用了 来代来代替。

26、替。第第2525页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL 例例1 1:查询年龄在:查询年龄在1818到到2222之间的学生记录之间的学生记录SELECT SELECT * * FROM Student FROM StudentWHERE WHERE age between 18 and 22age between 18 and 22 例例2 2:查询学分不在:查询学分不在1 1分到分到3 3分的课程号及课程名分的课程号及课程名SELECT Cno,Cname SELECT Cno,Cname FROM CourseFROM Cour

27、seWHERE WHERE credit not between 1 and 3credit not between 1 and 3第第2626页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL4 4)确定集合)确定集合用关键字用关键字IN IN 与与NOT INNOT INININ是确定给的值是否与子查询或列表中的值相匹配。是确定给的值是否与子查询或列表中的值相匹配。使用使用ININ关键字可以指定一个值表集合关键字可以指定一个值表集合,值表中列出所,值表中列出所有可能的值,有可能的值,当表达式与值表中任一个匹配时,即返当表达式与值表中任一个

28、匹配时,即返回回TRUETRUE,否则返回否则返回FalseFalse。第第2727页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL 例例1 1:查询院系为:查询院系为CSCS或或ISIS的学生的记录的学生的记录SELECT SELECT * * FROM Student FROM StudentWHERE WHERE dept in (CS,IS)dept in (CS,IS) 例例2 2:查询年龄为:查询年龄为1818、1919或或2020的学生记录的学生记录SELECT SELECT * * FROM Student FROM Stu

29、dentWHERE WHERE age in (18 ,19 ,20)age in (18 ,19 ,20) 例例3 3:查询院系为:查询院系为CSCS或或ISIS的男学生的记录的男学生的记录SELECT SELECT * * FROM Student FROM StudentWHERE WHERE dept in (CS,IS) dept in (CS,IS) and sex=and sex=男男第第2828页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL5 5)字符匹配)字符匹配(like(like模糊查询模糊查询) ) LIKELIK

30、E用于进行字符串的匹配用于进行字符串的匹配,其运算对象可以是,其运算对象可以是charchar、varcharvarchar、texttext、datetimedatetime等类型的数据,返回逻辑值等类型的数据,返回逻辑值truetrue或或falsefalse。 其含义是查找指定列值与匹配串相匹配的行其含义是查找指定列值与匹配串相匹配的行。匹配串可以是。匹配串可以是一个完整的字符串,也可以含有一个完整的字符串,也可以含有通配符通配符 % % 和下划线和下划线_ _ 。 LIKELIKE使用通配符的查询也称为使用通配符的查询也称为模糊查询,在实际系统开发中模糊查询,在实际系统开发中有广泛的应

31、用有广泛的应用。第第2929页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQLLikeLike模糊查询使用的通配符及其含义模糊查询使用的通配符及其含义通配符通配符含义含义_下划线下划线任何单个字符(如任何单个字符(如a_c表示以表示以a开头开头c结尾长度为结尾长度为3的字符串)的字符串)%百分号百分号包含包含0个或多个字符的任意字符串个或多个字符的任意字符串(如(如a%c表示以表示以a开头开头c结尾任意长度的字符串)结尾任意长度的字符串) 在指定范围(如在指定范围(如a-f 或或abcdef内的任何单个字符内的任何单个字符 不在指定范围(如不

32、在指定范围(如 a-f 或或 abcdef内的任何单个字符内的任何单个字符第第3030页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL实实 例例效效 果果 Like 王王%搜索以搜索以“王王” 开头的所有字符串。如开头的所有字符串。如“王三王三”、 “王王三强三强”等等Like %三三搜索以搜索以“三三” 结尾的所有字符串。如结尾的所有字符串。如“王三王三”、 “张张三三”Like %三三%搜索任何位置包含搜索任何位置包含“三三” 的所有字符串。如的所有字符串。如“王三王三”、 “张三张三” 、 “王三强王三强”Like _abc搜索以搜索

33、以“abc” 结尾的结尾的4个字母的名称。个字母的名称。Like a-fst搜索以搜索以“st” 结尾、以结尾、以af 的任意一个字母开头的所有的任意一个字母开头的所有名称名称Like m a% 搜索以搜索以“m” 开头,并且第二个字母不是开头,并且第二个字母不是a 的所有名称的所有名称第第3131页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL 例例1 1:查找学号以:查找学号以20022002开头的所有学生记录开头的所有学生记录SELECT SELECT * * FROM Student FROM StudentWHERE WHERE

34、Sno like 2002%Sno like 2002% 例例2 2:查找学号中第:查找学号中第5 5个字符为个字符为5 5的所有学生记录的所有学生记录SELECT SELECT * * FROM Student FROM StudentWHERE WHERE Sno like _ _ _ _5%Sno like _ _ _ _5% 例例3 3:查找学号中第:查找学号中第5 5个字符不是个字符不是5 5的所有学生记录的所有学生记录SELECT SELECT * * FROM Student FROM StudentWHERE WHERE Sno like _ _ _ _5%Sno like _

35、 _ _ _5%第第3232页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL6 6)空值比较)空值比较当需要判定一个表达式的值当需要判定一个表达式的值是否为空值是否为空值时,使用时,使用IS IS NullNull关键字,格式为:关键字,格式为:Expression IS not nullExpression IS not null 注:查询空值时要使用注:查询空值时要使用IS NULLIS NULL,而,而 =NULL =NULL 是无效的是无效的,因为,因为空值不是一个确定的值,所以不能用空值不是一个确定的值,所以不能用“=”=”这样的

36、运算符进这样的运算符进行比较。行比较。 第第3333页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL 例例1 1:查找目前院系不明的所有学生记录:查找目前院系不明的所有学生记录SELECT SELECT * * FROM Student FROM StudentWHERE WHERE dept is nulldept is null 例例2 2:查找目前已经确定院系的所有学生记录:查找目前已经确定院系的所有学生记录SELECT SELECT * * FROM Student FROM StudentWHERE WHERE dept is n

37、ot nulldept is not null第第3434页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL3 3、对查询结果排序对查询结果排序 在应用中经常要在应用中经常要对查询的结果排序输出对查询的结果排序输出,例如按学号对学生,例如按学号对学生排序、按成绩对学生排序等等。排序、按成绩对学生排序等等。 SELECTSELECT语句中的语句中的ORDER BYORDER BY子句可用于对查询结果按照一个或子句可用于对查询结果按照一个或多个字段的值进行多个字段的值进行升序(升序(ASCASC)或或降序(降序(DESCDESC)排序排序,默认,

38、默认值为升序值为升序。 其语法为:其语法为:ORDER BYORDER BY排序项排序项ASC|DESCASC|DESC,nn 第第3535页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL例例1 1:查询选修课程号为:查询选修课程号为C3C3的学生的成绩情况,并按照分数降序排列。的学生的成绩情况,并按照分数降序排列。Select Select * * from SC from SCwhere Cno = C3where Cno = C3order by score Descorder by score Desc例例2 2:查询所有学生的成绩

39、情况,先按照课程号升序排列,再按照分数:查询所有学生的成绩情况,先按照课程号升序排列,再按照分数降序排列。降序排列。Select Select * * from SC from SCorder by Cno ,score Descorder by Cno ,score Desc第第3636页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL 例例3 3:查询所有学生的出生年份,并按照出生年份降序排列。:查询所有学生的出生年份,并按照出生年份降序排列。select Sno, name, sex, year=2013-age ,deptselect

40、 Sno, name, sex, year=2013-age ,deptfrom Studentfrom Studentorder by year descorder by year desc第第3737页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL4 4、使用聚合函数使用聚合函数 对表数据进行检索时,经常需要对表数据进行检索时,经常需要对结果进行计算或统计对结果进行计算或统计,例如求,例如求学生的个数、学生的平均年龄等。学生的个数、学生的平均年龄等。 常见的聚合函数有常见的聚合函数有6 6个,它们分别是:个,它们分别是:SUM( ):

41、SUM( ): 求总和求总和AVG( ): AVG( ): 求平均值求平均值MIN( ): MIN( ): 求最小值求最小值MAX( ): MAX( ): 求最大值求最大值COUNT( COUNT( ): ): 传回非传回非NULLNULL值的字段数目值的字段数目COUNT(COUNT(* *): ): 传回符合查询条件的总行数传回符合查询条件的总行数 (包括(包括nullnull值)值)第第3838页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL 例例1 1:查看院系为:查看院系为CSCS的学生的平均年龄的学生的平均年龄 Select S

42、elect 平均年龄平均年龄= avg(age)= avg(age) From Student From StudentWhere dept=CSWhere dept=CS 例例2 2:显示出来学生的最大年龄、最小年龄和平均年龄;:显示出来学生的最大年龄、最小年龄和平均年龄;Select Select 最大年龄最大年龄= max(age) , = max(age) , 最小年龄最小年龄= min(age),= min(age), 平均年龄平均年龄= avg(age)= avg(age)From StudentFrom Student 例例3 3:查询学生所属的院系数:查询学生所属的院系数Sel

43、ect Select count(distinct(dept) count(distinct(dept) From studentFrom student第第3939页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL 例例4 4:查询参加选课学生的个数;:查询参加选课学生的个数;Select Select count(distinct sno)count(distinct sno) as as 选课学生个数选课学生个数From SCFrom SC 例例5 5:查询选修:查询选修1 1号课程的学生数;号课程的学生数;Select Select

44、count(distinct sno)count(distinct sno)From SCFrom SCWhere Cno= 1Where Cno= 1 例例6 6:查询所有课程的总学分;:查询所有课程的总学分; Select Select sum(credit)sum(credit) From Course From Course第第4040页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL5 5、对查询结果分组、对查询结果分组 SELECTSELECT语句的语句的GROUP BY GROUP BY 子句用于将查询结果表按某一列或子句用于将

45、查询结果表按某一列或多列值进行分组,多列值进行分组,值相等的为一组值相等的为一组; 对查询结果分组的主要目的是为了对查询结果分组的主要目的是为了细化聚合函数的作用对细化聚合函数的作用对象象。如果未对查询结果分组,聚合函数将作用于。如果未对查询结果分组,聚合函数将作用于整个查询整个查询结果结果;分组后将作用于;分组后将作用于每一个组每一个组。第第4141页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL语法格式为:语法格式为:GROUP BY GROUP BY group_by_expressiongroup_by_expression,n,n

46、group_by_expressiongroup_by_expression是用于分组的表达式,通是用于分组的表达式,通常包含字段名。常包含字段名。第第4242页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL 例例1 1:查看各个院系的学生数量:查看各个院系的学生数量 Select dept , count(Sno) as Select dept , count(Sno) as 学生数学生数 From StudentFrom Studentgroup by deptgroup by dept 例例2 2:查看各个课程的平均成绩;:查看各个课

47、程的平均成绩;Select Cno , avg(score) From SCSelect Cno , avg(score) From SCgroup by Cnogroup by Cno 例例3 3:查询每个院系男女生个数。:查询每个院系男女生个数。Select dept , sex, count(Select dept , sex, count(* *) From Student) From Studentgroup by dept, sexgroup by dept, sex第第4343页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL

48、例例4 4:查看各个院系学生的最大年龄、最小年龄和平均年龄;:查看各个院系学生的最大年龄、最小年龄和平均年龄;Select dept ,Select dept ,最大年龄最大年龄= max(age) , = max(age) , 最小年龄最小年龄= = min(age), min(age), 平均年龄平均年龄= avg(age)= avg(age)From StudentFrom Studentgroup by deptgroup by dept注注:使用:使用GROUP BY 子句后,子句后, SELECT子句中的列表中只子句中的列表中只能包含在能包含在GROUP BY 中指出的列或在聚合函

49、数中指定的列。中指出的列或在聚合函数中指定的列。第第4444页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL6 6、使用、使用HAVINGHAVING子句子句 如果如果分组后还需要按一定的条件对这些组进行筛选分组后还需要按一定的条件对这些组进行筛选,最终只,最终只输出满足指定条件的组,那么输出满足指定条件的组,那么使用使用HAVING HAVING 子句来指定筛选子句来指定筛选条件条件。 HAVING HAVING 子句的格式为:子句的格式为:HAVING HAVING 例例1 1:查看平均成绩在:查看平均成绩在6060分以上的各个课程;分

50、以上的各个课程;Select Cno , avg(score) as Select Cno , avg(score) as 平均成绩平均成绩From SCFrom SCgroup by Cnogroup by Cnohaving avg(score) =60having avg(score) =60第第4545页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL 例例2 2:查找男生人数超过:查找男生人数超过2020的系名;的系名;Select dept From Student Select dept From Student where s

51、ex =where sex =男男group by deptgroup by depthaving count(having count(* *)=20)=20 在在SELECTSELECT语句中,当语句中,当wherewhere、group bygroup by与与havinghaving子句都被使子句都被使用时,要注意他们的作用和执行顺序;用时,要注意他们的作用和执行顺序;wherewhere用于筛选由用于筛选由fromfrom指定的数据对象;指定的数据对象; group bygroup by用于对用于对wherewhere的结果进行分的结果进行分组;组; havinghaving则是对则

52、是对group bygroup by以后的分组数据进行过滤。以后的分组数据进行过滤。第第4646页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL7 7、COMPUTECOMPUTE子句子句( (选学选学) ) ComputeCompute子句主要用于分类汇总子句主要用于分类汇总,包括包括 Compute Compute 和和 Compute Compute by by 两种,主要用来产生额外的汇总行。格式为:两种,主要用来产生额外的汇总行。格式为:COMPUTE COMPUTE 聚合函数名(聚合函数名(expressionexpressio

53、n),.n,.n 例例1 1:查找计算机系学生的学号、姓名,并统计算机系的学:查找计算机系学生的学号、姓名,并统计算机系的学生人数生人数Select Sno,sname From StudentSelect Sno,sname From Studentwhere dept=where dept=计算机计算机compute count(Sno)compute count(Sno)第第4747页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL8 8、使用查询结果来创建新表、使用查询结果来创建新表 SELECT SELECT select_list

54、select_list INTO INTO new_tablenew_table 指定使用查询结果来创建指定使用查询结果来创建新表,其中,新表,其中, new_tablenew_table 指定新表的名称。指定新表的名称。INTOINTO子句的语法格式为子句的语法格式为: : INTO INTO 新表名称新表名称 例例1 1:查询:查询StudentStudent表中学号、姓名及院系,并将查询结果新建一表中学号、姓名及院系,并将查询结果新建一个新表个新表testtest。select select Sno,sname,deptSno,sname,dept into testinto testf

55、rom Studentfrom Student第第4848页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL本小节主要内容本小节主要内容- -单表查询单表查询1 1、对列的查询、对列的查询选择一个表中指定的列选择一个表中指定的列选择全部列选择全部列修改查询结果中的列标题修改查询结果中的列标题替换查询结果中的数据替换查询结果中的数据查询经过计算的值查询经过计算的值3 3、对查询结果排序、对查询结果排序4 4、使用聚合函数、使用聚合函数5 5、对查询结果分组、对查询结果分组6 6、使用、使用HAVINGHAVING子句子句7 7、COMPUTEC

56、OMPUTE子句子句8 8、使用查询结果来创建新表、使用查询结果来创建新表2、对行的查询、对行的查询消除重复行消除重复行限制结果集的返回行数限制结果集的返回行数查询满足条件的行查询满足条件的行逻辑运算符逻辑运算符比较运算符比较运算符指定范围指定范围确定集合确定集合字符匹配字符匹配空值比较空值比较返回本节返回本节第第4949页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL3.7.2 3.7.2 多表查询多表查询1 1、连接查询、连接查询语法结构语法结构连接查询分类连接查询分类2 2、嵌套查询、嵌套查询3 3、集合查询、集合查询第第5050页页

57、数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL1 1、连接查询、连接查询若一个查询同时涉及两个或两个以上的表,则称之若一个查询同时涉及两个或两个以上的表,则称之为为连接查询连接查询。连接查询有两大类表现形式。一类是符合连接查询有两大类表现形式。一类是符合SQLSQL标准标准连接谓词表示形式,另一类是连接谓词表示形式,另一类是T-SQLT-SQL扩展的使用关扩展的使用关键字键字JOINJOIN的表示形式。的表示形式。1 1)等值和非等值连接)等值和非等值连接2 2)自身连接)自身连接3 3)外连接(以)外连接(以JoinJoin关键字指定)关键

58、字指定)第第5151页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL连接查询的一般格式:连接查询的一般格式:select all|distinct select all|distinct ,from from ,2where where Where Where 子句中用来连接两个表的条件称为子句中用来连接两个表的条件称为连接条件连接条件或或连接谓词连接谓词 连接条件的一般格式为:连接条件的一般格式为:. 1 .2第第5252页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL1 1)、等值、

59、非等值及复合条件连接)、等值、非等值及复合条件连接例例1:1:查询选修课程号为查询选修课程号为2 2的学生姓名;的学生姓名;SELECT snameSELECT snameFROM FROM Student,scStudent,scWHERE WHERE Student.Sno = sc.sno Student.Sno = sc.sno and o=2and o=2例例2:2:查询学号为查询学号为200515001200515001的学生的姓名、院系、课程号的学生的姓名、院系、课程号及成绩;及成绩;SELECT sname,dept,cno,scoreSELECT sname,dept,cno

60、,scoreFROM FROM Student,SCStudent,SCWHERE Student.Sno=2005WHERE Student.Sno=20051515001 and 001 and Student.Sno = SC.SnoStudent.Sno = SC.Sno第第5353页页数据库原理及应用数据库原理及应用-第第3 3章章 关系数据库标准语言关系数据库标准语言SQLSQL例例3 3:查询每个学生的学号、姓名、院系及选修课程的课程号:查询每个学生的学号、姓名、院系及选修课程的课程号、课程名和课程成绩;、课程名和课程成绩;SELECT Student.sno, sname,de

温馨提示

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

最新文档

评论

0/150

提交评论