数据库系统概论:第4章 关系数据库标准语言——SQL语言4_第1页
数据库系统概论:第4章 关系数据库标准语言——SQL语言4_第2页
数据库系统概论:第4章 关系数据库标准语言——SQL语言4_第3页
数据库系统概论:第4章 关系数据库标准语言——SQL语言4_第4页
数据库系统概论:第4章 关系数据库标准语言——SQL语言4_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、4.3 数据查询 SQL语言中最重要、最核心的操作就是数据查询。关系代数的运算在关系数据库中主要由SQL数据查询来体现。 1 SELECT 语句完整的句法: 其基本格式为:SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;23. 使用聚组函数聚组函数:聚组函数返回值是根据一组输入得到的,输入个数只有在执行完查询并且所有行都取出时才确定。聚组函数分类:函数 描述 AVG 返回一列的平均值(该列必须是数字型的值) COUNT 返回非NULL值的行数,*表示返回所有行数 MAX 返回一列的最大值 MIN 返回一

2、列的最小值 SUM 返回一列的和(该列必须是数字型的值) 3 下面我们以学生选课系统为例说明SELECT语句的各种用法。学生表:Student(Sno,Sname,Sex,Age,Dept) 4课程表:Course(Cno,Cname,Tname,Cpno,Credit) 5选课表:SC(Sno,Cno,Grade) 6例:查询学生表中的总人数 select count(*) from student;例:查询选修了课程的学生总人数 select count( distinct sno) from sc;7例:查询选修c3课程的平均成绩、最高成绩和最低成绩 select avg(grade),

3、max(grade),min(grade) from sc where cno=c3;例:查询学号为05880101学生选修课程的成绩 总和 select sum(grade) from sc where sno=05880101;84. 对查询结果分组分组问题的引出:(1)查询选课信息表中的课程号及其选修该课程的学生学号。select cno,sno from sc;9(2)查询选课信息表中选修了c1课程的学生人数。10(3)查询选课表中每门课程的课程号及这门课程的选修人数 11(4)查询至少5个人选修了的课程号以及相应的选课人数。12例:查询选修3门及其以上课程的学生学号 SELECT S

4、no FROM SC GROUP BY Sno HAVING COUNT(Cno)=3;13HAVING子句与WHERE子句的区别是: WHERE子句的作用是在分组之前过滤数据。 WHERE条件中不能包含聚组函数。 使用WHERE条件选择满足条件的行。 HAVING子句的作用是在分组之后过滤数据。 HAVING条件中经常包含聚组函数。 使用HAVING条件选择满足条件的组。使用HAVING子句时必须首先使用GROUP BY进行分组。 14练习:查询每个学生的学号和平均成绩; select sno,avg(grade) from sc group by sno;为评选一等奖学金,需查询平均成绩8

5、0的学生的学号及其平均成绩。 select sno,avg(grade) from sc group by sno having avg(grade)80;155.对查询结果进行排序 ORDER BY子句可指定按照一个或多个属性列的升序(ASC)或者降序(DESC)重新排列查询结果。省略不写,默认为升序排列。 16例:查询选修c3课程的学生学号及成绩,查询结果按照成绩的降序排列 SELECT Sno, Grade FROM SC WHERE Cno= c3; ORDER BY Grade DESC; 17例:查询所有学生的基本信息,查询结果按学生年龄的升序排列,年龄相同时则按学号降序排列 SE

6、LECT * FROM Student ORDER BY Age ASC, Sno DESC;18查询男生的人数大于50人的系别名称以及男生人数,要求结果按照系别名称进行升序排列.Select dept, count(sno)From studentWhere sex=男Group by deptHaving count(sno)50Order by dept asc;19连接查询是指通过两个或两个以上的关系表或视图的连接操作来实现的查询。连接查询是关系数据库中最主要的查询,包括等值连接、非等值连接、自然连接、自身连接、外连接和复合条件连接等。4.3.3 连接查询20连接基础知识连接查询中用于

7、连接两个表的条件称为连接条件或连接谓词。 一般格式为: 必须是可比的21 SELECT Student.*, SC.* FROM Student, SC WHERE Student.Sno=SC.Sno;1.等值连接当连接运算符为“=”时,称为等值连接。使用其他运算符时,称为非等值连接。例:查询每个同学基本信息及其选修课程的情况。22SELECT Student.*, SC.* FROM Student, SCWHERE Student.Sno=SC.Sno;23 如果是按照两个表中的相同属性进行等值连接,并且在结果中去掉了重复的属性列,我们称之为自然连接。例:用自然连接来完成查询每个同学基本

8、信息及其选修课程的情况。2.自然连接 SELECT Student.Sno,Sname,Sex,Age,Dept,Cno,Grade FROM Student, SC WHERE Student.Sno=SC.Sno;24Select student.*, sc.* from student, sc where student.sno=sc.sno;Select student.sno, sname, sex, age, dept,cno, gradefrom student, sc where student.sno=sc.sno;改成自然连接等值连接去掉重复属性2526 连接条件用于多个表

9、之间的连接,限制条件用于限制所选取的记录要满足什么条件,这种连接称为复合条件连接。 3.复合条件连接27例:查询选修课程号为c1,并且成绩不及格的学生学号、姓名和系别名称SELECT Student.Sno,Sname,DeptFROM Student,SCWHERE Student.Sno=SC.Sno /*连接条件*/ and Cno=c1 /*限制条件*/ and Grade60; /*限制条件*/28例:查询计算机系选修maths课程的学生姓名、授课教师名以及这门课程的成绩 SELECT Sname,Tname,GradeFROM Student,Course,SCWHERE Stud

10、ent.Sno=SC.Sno /*连接条件*/ and Course.Cno=SC.Cno /*连接条件*/ and Dept=计算机系 /*限制条件*/ and Cname=maths; /*限制条件*/ 多个表之间连接,WHERE子句中有多个连接条件。n个表之间的连接至少由 n-1个连接条件。29 select x.sno from sc x, sc y where x.sno=y.sno and o=c1 and o=c2 ;例:在SC表中查询至少选修课程号为c1和c2的学生学号 4.自身连接305. 外连接例:查询每个学生及其选修课程的情况(若某一个学生没有选课,只输出学生的基本情况信息,其选课信息为空值。) SELECT Student.Sno, Sname , Sex , age , dept , Cno , Grade FROM

温馨提示

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

评论

0/150

提交评论