版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第5章,关系数据库标准语言SQL,2,主 要 内 容,5.1 SQL的功能及特点 5.2 数据定义语句 5.3 数据查询语句 5.4 数据更新语句 5.6 数据控制语句,3,5.3.1 查询语句语法,SELECT ALL|DCSTINCT FROM WHERE GROUP BY HAVING ORDER BY ASC|DESC ;,4,SELECT子句:指定要显示的属性列; FROM子句:指定查询对象(基本表或视图); WHERE子句:指定查询条件; GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中使用聚集函数。 HAVING短语:筛选出只有满
2、足指定条件的组; ORDER BY子句:对查询结果表按指定列值的升序或降序排序;,5.3.1 查询语句语法,5,5.3.2 简单查询,指FROM子句中仅涉及一个表的查询,是一种最简单的查询操作。 一、选择表中的若干列 二、选择表中的若干元组 三、对查询结果排序 四、使用聚集函数 五、对查询结果分组,6,示例数据库,学生课程库,包含3个基本表,结构为: Student(Sno,Sname,Ssex,Sage,Sdept) Course(Cno,Cname,Cpno,Ccredit) SC(Sno,Cno,Grade),7,1.查询指定列,例1 查询全体学生的学号与姓名。,SELECT Sname
3、,Sno,Sdept FROM Student;,例2 查询全体学生的姓名、学号、所在系。,SELECT Sno,Sname FROM Student;,8,2.查询全部列,例3 查询全体学生的详细记录。,SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 或 SELECT * FROM Student;,9,3. 查询经过计算的值,SELECT子句的为表达式 算术表达式 字符串常量 函数 列别名等,10,例4 查全体学生的姓名及其出生年份。 SELECT Sname,2007-Sage FROM Student; 输出结果: Sname 2007-S
4、age - - 王林 1989 张大民 1988 顾芳 1988 姜凡 1989 葛波 1988,算术表达式,可以给列或表达式起别名:SELECT Sname,2007-Sage AS BirthYear FROM Student; 保留字AS可以省略,11,4. 消除取值重复的行,在SELECT子句中使用DISTINCT短语 假设SC表中有下列数据 Sno Cno Grade - - - 2007001 1 92 2007001 2 85 2007001 3 88 2007002 2 90 2007002 3 80,12,ALL 与 DISTINCT,例5 查询选修了课程的学生学号。 SEL
5、ECT Sno FROM SC; 或(默认 ALL) SELECT ALL Sno FROM SC; 结果: Sno - 2007001 2007001 2007001 2007002 2007002,13,例 题,(2) SELECT DISTINCT Sno FROM SC; 该语句则去掉了重复元组 结果: Sno - 2007001 2007002,14,例题(续),注意 DISTINCT短语的作用范围是所有目标列 例:查询选修课程的各种成绩 错误的写法 SELECT DISTINCT Cno,DISTINCT Grade FROM SC; 正确的写法 SELECT DISTINCT C
6、no,Grade FROM SC;,15,5.WHERE子句,常用的运算符,16,(1) 比较大小,例1 查询所有年龄在20岁以下的学生姓名及其年龄。 SELECT Sname,Sage FROM Student WHERE Sage = 20;,17,(2) 确定范围,使用谓词 BETWEEN AND NOT BETWEEN AND 例2 查询年龄在2023岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。,SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23;,18,例题(续),例3 查询年龄不在2023岁之
7、间的学生姓名、系别和年龄。 SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23;,19,使用谓词 IN , NOT IN 例4查询计算机系(CS)、数学系(MA)学生的姓名和性别。 SELECT Sname,Ssex FROM Student WHERE Sdept IN ( CS,MA);,(3) 确定集合,20,(3) 确定集合,例5查询不是计算机系、数学系的学生的姓名和性别。 SELECT Sname,Ssex FROM Student WHERE Sdept NOT IN ( CS,MA);,21,
8、(4) 涉及空值的查询,使用谓词 IS NULL 或 IS NOT NULL “IS NULL” 不能用 “= NULL” 代替 例13 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL;,22,例题(续),例14 查所有有成绩的学生学号和课程号。 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;,23,(6) 多重条件查询,用逻辑运算符AND和 OR来联结多个查询条件 AND的优先级高于OR 可以用括号改变
9、优先级 可用来实现多种其他谓词 NOT IN NOT BETWEEN AND ,24,例题,例15 查询计算机系年龄在20岁以下的学生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage20;,25,改写例4,例4 查询计算机系(CS)、数学系(MA)学生的姓名和性别。 SELECT Sname,Ssex FROM Student WHERE Sdept IN ( CS,MA) 可改写为: SELECT Sname,Ssex FROM Student WHERE Sdept= CS OR Sdept= MA ;,26,改写例2,例2 查询
10、年龄在2023岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。 SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23; 可改写为: SELECT Sname,Sdept,Sage FROM Student WHERE Sage=20 AND Sage=23;,27,6.聚集函数,5类主要集函数(P137 表5-10) 计数 COUNT(DISTINCT|ALL *) COUNT(DISTINCT|ALL ) 计算总和 SUM(DISTINCT|ALL ) 计算平均值 AVG(DISTINCT|ALL ),28,
11、聚集函数(续),求最大值 MAX(DISTINCT|ALL ) 求最小值 MIN(DISTINCT|ALL ) DISTINCT短语:在计算时要取消指定列中的重复值 ALL短语:不取消重复值 ALL为缺省值,29,例1 查询学生总人数。 SELECT COUNT(*) FROM Student; 例2 查询选修了课程的学生人数。 SELECT COUNT(DISTINCT Sno) FROM SC; 注:用DISTINCT以避免重复计算学生人数,30,例3 计算1号课程的学生平均成绩。 SELECT AVG(Grade) FROM SC WHERE Cno= 1 ; 例4 查询选修1号课程的学
12、生最高分数。 SELECT MAX(Grade) FROM SC WHER Cno= 1 ;,31,7.GROUP BY子句分组,使用GROUP BY子句分组,细化聚集函数的作用对象 未对查询结果分组,聚集函数将作用于整个查询结果; 对查询结果分组后,聚集函数将分别作用于每个组;,32,使用GROUP BY子句分组,例1求各个课程号及相应的选课人数。 SELECT Cno, COUNT(Sno) FROM SC GROUP BY Cno;,33,使用GROUP BY子句分组(续),注意: GROUP BY子句的作用对象是查询的中间结果表 分组方法:按指定的一列或多列值分组,值相等的为一组 使用
13、GROUP BY子句后,SELECT子句的列名列表中只能出现分组属性和聚集函数,34,使用HAVING短语筛选最终输出结果,例2 查询选修了3门以上课程的学生学号。 SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) 3;,35,使用HAVING短语筛选最终输出结果(续),注意: 只有满足HAVING短语指定条件的组才输出 HAVING短语与WHERE子句的区别:作用对象不同 WHERE子句作用于基表或视图,从中选择满足条件的元组。 HAVING短语作用于组,从中选择满足条件的组。,36,8. ORDER BY子句排序,使用ORDER BY子句 可以
14、按一个或多个属性列排序 升序:ASC;降序:DESC;缺省值为升序 当排序列含空值时 ASC:排序列为空值的元组最后显示 DESC:排序列为空值的元组最先显示,37,例1 查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。 SELECT Sno,Grade FROM SC WHERE Cno= 3 ORDER BY Grade DESC;,38,查询结果,Sno Grade - - 2007010 2007024 2007007 92 2007003 82 2007010 82 2007009 75 2007014 61 2007002 55,39,例2 查询全体学生情况,查询结
15、果按所在系的系号升序排列,同一系中的学生按年龄降序排列。 SELECT * FROM Student ORDER BY Sdept,Sage DESC; ORDER BY 5,4 DESC;,40,小结:SELECT语句的一般格式,SELECT ALL|DISTINCT FROM WHERE GROUP BY HAVING ORDER BY ASC|DESC ;,41,5.3.3 连接查询,连接查询中的连接条件通过WHERE子句表达,连接条件和元组选择条件之间用AND(与)操作符衔接; 源表一般为多表; 用来连接两个表的条件称为连接条件或连接谓词; 连接谓词中的列名称为连接字段; 连接字段不一
16、定同名,但类型必须是可比的;,42,例1 查询每个学生的基本情况以及他所选修的课程情况。 Student(Sno,Sname,Ssex,Sage,Sdept) Course(Cno,Cname,Cpno,Ccredit) SC(Sno,Cno,Grade),43,SELECT Student .*,SC.* FROM Student, SC WHERE Student .Sno =SC.Sno;,44,例2 求学生的学号、姓名、选修的课程名及成绩。 Student(Sno,Sname,Ssex,Sage,Sdept) Course(Cno,Cname,Cpno,Ccredit) SC(Sno,Cno,Grade),45,SELECT Student .Sno ,Sname,Cname,Grade FROM Student, Course, SC WHERE Student .Sno =SC.Sno AND Course.Cno=SC.Cno;,46,例3 求选修了C1课程且成绩为90分以上的学生学号、姓名及成绩。 Student(Sno,Sname,Ssex,Sage,Sdept) Cour
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海旅游高等专科学校《ASP.NET程序设计》2025-2026学年第一学期期末试卷(B卷)
- 上海政法学院《安全生产法律法规知识》2025-2026学年第一学期期末试卷(B卷)
- 护理部培训创新实践
- 上海电力大学《安全工程》2025-2026学年第一学期期末试卷(A卷)
- 上海现代化工职业学院《安全管理工程》2025-2026学年第一学期期末试卷(A卷)
- 上海现代化工职业学院《安全与伦理》2025-2026学年第一学期期末试卷(A卷)
- 上海海洋大学《阿拉伯国家历史与文化常识》2025-2026学年第一学期期末试卷(B卷)
- 上海海洋大学《安全人机工程学》2025-2026学年第一学期期末试卷(B卷)
- 上海海关学院《安全防范系统工程》2025-2026学年第一学期期末试卷(B卷)
- 护理会诊的成本效益分析
- 2026年江苏苏锡常镇四市高三二模高考生物试卷(含答案详解)
- 2024全国高中数学联赛山东赛区预赛试卷(含解析)
- 2026年国企中层干部公开遴选笔试试卷(附答案)
- 2026年小学生安全知识竞赛试题库及答案
- 2026年北京市东城区高三二模英语试卷(含答案)
- 武汉市2026届高三年级四月供题(武汉四调)语文+答案
- 2026年《碳达峰碳中和综合评价考核办法》培训课件
- 2026年及未来5年市场数据中国代驾服务行业市场深度评估及投资战略规划报告
- 云天化集团有限责任公司招聘笔试题库2026
- 汽车吊安全检查要点
- 豆腐加工厂建设方案
评论
0/150
提交评论