关系数据库标准语言SQL2.ppt

上传人:scccc 文档编号:13794375 上传时间:2022-01-24 格式:PPT 页数:48 大小:216KB
返回 下载 相关 举报
关系数据库标准语言SQL2.ppt_第1页
第1页 / 共48页
关系数据库标准语言SQL2.ppt_第2页
第2页 / 共48页
关系数据库标准语言SQL2.ppt_第3页
第3页 / 共48页
关系数据库标准语言SQL2.ppt_第4页
第4页 / 共48页
关系数据库标准语言SQL2.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《关系数据库标准语言SQL2.ppt》由会员分享,可在线阅读,更多相关《关系数据库标准语言SQL2.ppt(48页珍藏版)》请在三一文库上搜索。

1、关系数据库标准语言SQL2,1,第5章,关系数据库标准语言SQL,关系数据库标准语言SQL2,2,主 要 内 容,5.1 SQL的功能及特点5.2 数据定义语句5.3 数据查询语句5.4 数据更新语句5.6 数据控制语句,关系数据库标准语言SQL2,3,5.3.1 查询语句语法,SELECT ALL|DCSTINCT FROM WHERE GROUP BY HAVING ORDER BY ASC|DESC ;,关系数据库标准语言SQL2,4,SELECT子句:指定要显示的属性列;FROM子句:指定查询对象(基本表或视图);WHERE子句:指定查询条件;GROUP BY子句:对查询结果按指定列的

2、值分组,该属性列值相等的元组为一个组。通常会在每组中使用聚集函数。HAVING短语:筛选出只有满足指定条件的组;ORDER BY子句:对查询结果表按指定列值的升序或降序排序;,5.3.1 查询语句语法,关系数据库标准语言SQL2,5,5.3.2 简单查询,指FROM子句中仅涉及一个表的查询,是一种最简单的查询操作。 一、选择表中的若干列 二、选择表中的若干元组 三、对查询结果排序 四、使用聚集函数 五、对查询结果分组,关系数据库标准语言SQL2,6,示例数据库,学生课程库,包含3个基本表,结构为:Student(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cnam

3、e,Cpno,Ccredit)SC(Sno,Cno,Grade),关系数据库标准语言SQL2,7,1.查询指定列,例1 查询全体学生的学号与姓名。,SELECT Sname,Sno,SdeptFROM Student;,例2 查询全体学生的姓名、学号、所在系。,SELECT Sno,SnameFROM Student;,关系数据库标准语言SQL2,8,2.查询全部列,例3 查询全体学生的详细记录。,SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 或SELECT *FROM Student;,关系数据库标准语言SQL2,9,3. 查询经过计算的值,S

4、ELECT子句的为表达式算术表达式字符串常量函数列别名等,关系数据库标准语言SQL2,10,例4 查全体学生的姓名及其出生年份。SELECT Sname,2007-SageFROM Student;输出结果: Sname 2007-Sage - - 王林 1989 张大民 1988 顾芳 1988 姜凡 1989 葛波 1988,算术表达式,可以给列或表达式起别名:SELECT Sname,2007-Sage AS BirthYearFROM Student;保留字AS可以省略,关系数据库标准语言SQL2,11,4. 消除取值重复的行,在SELECT子句中使用DISTINCT短语假设SC表中有

5、下列数据 Sno Cno Grade - - - 2007001 1 92 2007001 2 85 2007001 3 88 2007002 2 90 2007002 3 80,关系数据库标准语言SQL2,12,ALL 与 DISTINCT,例5 查询选修了课程的学生学号。 SELECT Sno FROM SC;或(默认 ALL) SELECT ALL Sno FROM SC;结果: Sno - 2007001 2007001 2007001 2007002 2007002,关系数据库标准语言SQL2,13,例 题,(2) SELECT DISTINCT Sno FROM SC;该语句则去掉

6、了重复元组结果: Sno -,关系数据库标准语言SQL2,14,例题(续),注意 DISTINCT短语的作用范围是所有目标列例:查询选修课程的各种成绩错误的写法SELECT DISTINCT Cno,DISTINCT GradeFROM SC;正确的写法 SELECT DISTINCT Cno,Grade FROM SC;,关系数据库标准语言SQL2,15,5.WHERE子句,常用的运算符,关系数据库标准语言SQL2,16,(1) 比较大小,例1 查询所有年龄在20岁以下的学生姓名及其年龄。 SELECT Sname,Sage FROM Student WHERE Sage = 20;,关系数

7、据库标准语言SQL2,17,(2) 确定范围,使用谓词 BETWEEN AND NOT BETWEEN AND 例2 查询年龄在2023岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。,SELECT Sname,Sdept,SageFROM StudentWHERE Sage BETWEEN 20 AND 23;,关系数据库标准语言SQL2,18,例题(续),例3 查询年龄不在2023岁之间的学生姓名、系别和年龄。SELECT Sname,Sdept,SageFROM StudentWHERE Sage NOT BETWEEN 20 AND 23;,关系数据库标准语言SQL2,19,使用

8、谓词 IN , NOT IN 例4查询计算机系(CS)、数学系(MA)学生的姓名和性别。SELECT Sname,SsexFROM StudentWHERE Sdept IN ( CS,MA);,(3) 确定集合,关系数据库标准语言SQL2,20,(3) 确定集合,例5查询不是计算机系、数学系的学生的姓名和性别。SELECT Sname,SsexFROM Student WHERE Sdept NOT IN ( CS,MA);,关系数据库标准语言SQL2,21,(4) 涉及空值的查询,使用谓词 IS NULL 或 IS NOT NULL “IS NULL” 不能用 “= NULL” 代替例13

9、 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL;,关系数据库标准语言SQL2,22,例题(续),例14 查所有有成绩的学生学号和课程号。 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;,关系数据库标准语言SQL2,23,(6) 多重条件查询,用逻辑运算符AND和 OR来联结多个查询条件 AND的优先级高于OR 可以用括号改变优先级可用来实现多种其他谓词 NOT IN NOT BETWEEN AND ,关

10、系数据库标准语言SQL2,24,例题,例15 查询计算机系年龄在20岁以下的学生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage20;,关系数据库标准语言SQL2,25,改写例4,例4 查询计算机系(CS)、数学系(MA)学生的姓名和性别。SELECT Sname,SsexFROM StudentWHERE Sdept IN ( CS,MA)可改写为: SELECT Sname,Ssex FROM Student WHERE Sdept= CS OR Sdept= MA ;,关系数据库标准语言SQL2,26,改写例2,例2 查询年龄在

11、2023岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。 SELECT Sname,Sdept,SageFROM StudentWHERE Sage BETWEEN 20 AND 23; 可改写为: SELECT Sname,Sdept,SageFROM Student WHERE Sage=20 AND Sage=23;,关系数据库标准语言SQL2,27,6.聚集函数,5类主要集函数(P137 表5-10)计数COUNT(DISTINCT|ALL *)COUNT(DISTINCT|ALL )计算总和SUM(DISTINCT|ALL ) 计算平均值AVG(DISTINCT|ALL ),关

12、系数据库标准语言SQL2,28,聚集函数(续),求最大值MAX(DISTINCT|ALL )求最小值MIN(DISTINCT|ALL )DISTINCT短语:在计算时要取消指定列中的重复值ALL短语:不取消重复值ALL为缺省值,关系数据库标准语言SQL2,29,例1 查询学生总人数。 SELECT COUNT(*) FROM Student;例2 查询选修了课程的学生人数。 SELECT COUNT(DISTINCT Sno) FROM SC;注:用DISTINCT以避免重复计算学生人数,关系数据库标准语言SQL2,30,例3 计算1号课程的学生平均成绩。 SELECT AVG(Grade)

13、FROM SC WHERE Cno= 1 ;例4 查询选修1号课程的学生最高分数。 SELECT MAX(Grade) FROM SC WHER Cno= 1 ;,关系数据库标准语言SQL2,31,7.GROUP BY子句分组,使用GROUP BY子句分组,细化聚集函数的作用对象 未对查询结果分组,聚集函数将作用于整个查询结果; 对查询结果分组后,聚集函数将分别作用于每个组;,关系数据库标准语言SQL2,32,使用GROUP BY子句分组,例1求各个课程号及相应的选课人数。 SELECT Cno, COUNT(Sno) FROM SC GROUP BY Cno;,关系数据库标准语言SQL2,3

14、3,使用GROUP BY子句分组(续),注意:GROUP BY子句的作用对象是查询的中间结果表分组方法:按指定的一列或多列值分组,值相等的为一组使用GROUP BY子句后,SELECT子句的列名列表中只能出现分组属性和聚集函数,关系数据库标准语言SQL2,34,使用HAVING短语筛选最终输出结果,例2 查询选修了3门以上课程的学生学号。 SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) 3;,关系数据库标准语言SQL2,35,使用HAVING短语筛选最终输出结果(续),注意:只有满足HAVING短语指定条件的组才输出HAVING短语与WHERE子

15、句的区别:作用对象不同WHERE子句作用于基表或视图,从中选择满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。,关系数据库标准语言SQL2,36,8. ORDER BY子句排序,使用ORDER BY子句 可以按一个或多个属性列排序 升序:ASC;降序:DESC;缺省值为升序当排序列含空值时ASC:排序列为空值的元组最后显示DESC:排序列为空值的元组最先显示,关系数据库标准语言SQL2,37,例1 查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。 SELECT Sno,Grade FROM SC WHERE Cno= 3 ORDER BY Grade DESC;

16、,关系数据库标准语言SQL2,38,查询结果,Sno Grade - - 2007010 2007024 2007007 92 2007003 82 2007010 82 2007009 75 2007014 61 2007002 55,关系数据库标准语言SQL2,39,例2 查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。 SELECT * FROM Student ORDER BY Sdept,Sage DESC; ORDER BY 5,4 DESC;,关系数据库标准语言SQL2,40,小结:SELECT语句的一般格式,SELECT ALL|DISTINCT

17、 FROM WHERE GROUP BY HAVING ORDER BY ASC|DESC ;,关系数据库标准语言SQL2,41,5.3.3 连接查询,连接查询中的连接条件通过WHERE子句表达,连接条件和元组选择条件之间用AND(与)操作符衔接;源表一般为多表;用来连接两个表的条件称为连接条件或连接谓词;连接谓词中的列名称为连接字段;连接字段不一定同名,但类型必须是可比的;,关系数据库标准语言SQL2,42,例1 查询每个学生的基本情况以及他所选修的课程情况。Student(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cname,Cpno,Ccredit)SC(

18、Sno,Cno,Grade),关系数据库标准语言SQL2,43,SELECT Student .*,SC.* FROM Student, SC WHERE Student .Sno =SC.Sno;,关系数据库标准语言SQL2,44,例2 求学生的学号、姓名、选修的课程名及成绩。Student(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cname,Cpno,Ccredit)SC(Sno,Cno,Grade),关系数据库标准语言SQL2,45,SELECT Student .Sno ,Sname,Cname,GradeFROM Student, Course, S

19、CWHERE Student .Sno =SC.Sno AND Course.Cno=SC.Cno;,关系数据库标准语言SQL2,46,例3 求选修了C1课程且成绩为90分以上的学生学号、姓名及成绩。Student(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cname,Cpno,Ccredit)SC(Sno,Cno,Grade),关系数据库标准语言SQL2,47,SELECT Student .Sno ,Sname, GradeFROM Student, SCWHERE Student .Sno =SC.Sno AND Cno=C1AND Grade90;,关系数据库标准语言SQL2,48,连接操作不只是在两个表之间进行,一个表内还可以进行自身连接操作。表自身的连接操作称为自身连接。嵌套查询:将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1