数据库语言SQL——数据查询1ppt课件_第1页
数据库语言SQL——数据查询1ppt课件_第2页
数据库语言SQL——数据查询1ppt课件_第3页
数据库语言SQL——数据查询1ppt课件_第4页
数据库语言SQL——数据查询1ppt课件_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

.,第4章数据查询,4.1基本查询4.2嵌套查询4.3连接查询,在“学生学籍数据库”中创建了以下三个关系模式:学生信息表(学号,姓名,性别,年龄,系别)课程信息表(课程号,课程名,学分)选修信息表(学号,课程号,成绩),SQL数据查询语句是SELECT语句,语法:SELECTFROMWHEREGROUPBYHAVINGORDERBY,SELECT语句说明SELECT语句中必须有:SELECT子句、FROM子句其余子句可选:WHERE子句、GROUPBY子句、HAVING子句、ORDERBY子句,SELECT语句说明(1)SELECT,称为SELECT子句。用于指定整个查询结果表中包含的列。假定已经执行完FROM、WHERE、GROUPBY、HAVING子句,SELECT子句指定的目标列组成表就为整个查询的结果表。(2)FROM,称为FROM子句。是整个查询语句的数据来源,通常称为数据源表。,单表查询单表查询指的是在一个源表中查找所需的数据。,下面首先说明单表查询SELECT语句中的各个子句,3.3.2单表查询,1.SELECT子句(1)查询表中若干列在SELECT子句的中指定整个查询结果表中出现的若干个列名,各列名之间用逗号分隔。【例3.3.1】,查询全体学生的学号与姓名,SELECT学号,姓名FROMStudents,(2)查询表中所有的列可以用*来代替表的所有列。【例3.3.2】,查询全部课程的基本信息,Select*from表名,Select*from课程信息表,(2)选择表中所有列可以用*来代替表的所有列。【例】查询全体学生的学号、姓名、性别、年龄、所在系。SELECT*FROM学生信息表,(3)查询经过计算的值,例:查询全体学生的姓名及其出生年份。SELECT姓名,2011-年龄FROM学生信息表输出结果:,(4)设置列的别名所谓别名,就是给另一个名字,主要是为了方便阅读。设置列别名的方法有:原列名AS列别名,【例】查询全体学生的学号、姓名,并为原来的中文列名设置英文别名:,Select学号assno,姓名assname,年龄assagefrom学生信息表,例:查询全体学生的姓名及其出生年份。输出结果:,SELECT姓名,2010-年龄as出生年份FROM学生信息表,(4)使用DISTINCT消除结果表中完全重复的行【例】显示所有选课学生的学号,并去掉重复行。解:SELECTDISTINCT学号FROM选修信息表与DISTINCT相反的是ALL,ALL表示保留结果表中的重复行。默认情况下是ALL,表示保留重复行。,练习1:,1、查询全体课程的课程号、课程名,并为其设置别名CNO,CNAME。3、查询选修了课程的学生的学号。(去掉结果中重复的行),3.WHERE子句,WHERE中常用的运算符:比较运算符和逻辑运算符。比较运算符用于比较两个数值之间的大小是否相等。常用的比较运算符有:=、=、!、!80,练习2:,1、查询“系别”不是“英语”的所有学生的基本信息。2、查询所有年龄在20岁以上的学生姓名、系别及其年龄。,(2)基于BETWEENAND的查询,基本格式:列名BETWEEN下限值AND上限值等价于:列名=下限值AND列名=80AND成绩18【例】求选修了C1课程或C2课程的学生学号、成绩。解:SELECT学号,成绩FROM选修信息表WHERE课程号=C1OR课程号=C2,练习3:,1、查询既不是艺术系、数学系,也不是旅游系的学生的姓名和性别。2、查询所有不姓张学生的姓名、学号、和性别。3、查询年龄在1719岁(包括17岁和19岁)之间的学生的姓名、系别和年龄。4、查询选修1号或2号课程的学生的学号、课程号、成绩。,对查询结果排序,使用ORDERBY子句可以按一个或多个属性列排序升序:ASC;降序:DESC;默认值为升序,注:DESC是descend降序意思;ASC是ascend升序的意思,对查询结果排序(续)按一个属性列排序,查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。SELECT学号,成绩FROM选修信息表WHERE课程号=3ORDERBY成绩DESC,对查询结果排序(续)按多个属性列排序,查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。,SELECT*FROM学生信息表ORDERBY系别,年龄DESC,练习4,查询选修信息表的基本信息,结果按学号升序排列,同一学号按课程号降序排列.查询学生信息表的学号、姓名、年龄,结果按年龄升序排列,同一年龄学生按学号升序排列。,(7)使用统计函数的查询统计函数也称为集合函数或聚集函数,其作用是对一组值进行计算并返回一个值。,常用函数,【例】求选修了1号课程的学生的平均成绩。SELECTAVG(成绩)AS平均成绩FROM选修信息表WHERE课程号=1【例】选修了1号课程的学生的最高分SELECTMAX(成绩)AS最高分FROM选修信息表WHERE课程号=1,【例】求学生的总人数SELECTCOUNT(*)AS学生的总人数FROM学生信息表等价于:SELECTCOUNT(学号)AS学生的总人数FROM学生信息表【例】查询选修了课程的学生人数。,SELECTCOUNT(DISTINCT学号)FROM选修信息表注:用DISTINCT以避免重复计算学生人数,4.GROUPBY子句,有时我们需要把FROM、WHERE子句产生的表按某种原则分成若干组,然后再对每个组进行统计,一组形成一行,最后把所有这些行组成一个表GROUPBY子句在WHERE子句后边。一般形式为:GROUPBY,n【例】求选修每门课程的学生人数。解:SELECT课程号,COUNT(学号)AS选修人数FROM选修信息表GROUPBY课程号,注意:1、select字句中如果有统计函数,则不允许出现其他的列名,除非是groupby字句的列名总之:包含GROUPBY子句的查询语句中,SELECT子句的列名,要么是统计函数,要么是包含在GROUPBY子句中的列名下列语句是错误的:,Select学号,avg(成绩)from选修信息表,SELECT学号,课程号,COUNT(学号)AS选修人数FROM选修信息表GROUPBY课程号,5.HAVING子句,HAVING子句指定GROUPBY生成的组表的选择条件。它的一般形式为:HAVINGHAVING子句必须与GROUPBY子句一起使用。WHERE子句用来筛选FROM子句中指定的操作所产生的行。GROUPBY子句用来分组WHERE子句的输出。HAVING子句用来指定选择组的条件,满足条件的组被选。,【例】查询选修课程大于等于2门课的学生的学号、平均成绩、选修的门数。解:SELECT学号,AVG(成绩)AS平均成绩,COUNT(*)AS选修门数FROM选修信息表GROUPBY学号HAVINGCOUNT(*)=2,【例】查询学生的学号、平均成绩、选修的门数。解:SELECT学号,AVG(成绩)AS平均成绩,COUNT(*)AS选修门数FROM选修信息表GROUPBY学号,注意:where子句作用于基本表,从中选出满足条件的行,having字句作用于组,从中选出满足条件的组,例题,查询有3门以上课程是90分以上的学生的学号及(90分以上的)课程数,SELECT学号,COUNT(课程号)FROM选修信息表WHERE成绩=9

温馨提示

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

评论

0/150

提交评论