数据库原理与应用课件第4章关系数据库的标准语言SQL2_第1页
数据库原理与应用课件第4章关系数据库的标准语言SQL2_第2页
数据库原理与应用课件第4章关系数据库的标准语言SQL2_第3页
数据库原理与应用课件第4章关系数据库的标准语言SQL2_第4页
数据库原理与应用课件第4章关系数据库的标准语言SQL2_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

第4章关系数据库的标准语言SQL第4章关系数据库的标准语言SQL4.1SQL语言4.3数据查询4.4数据操作语句4.6索引4.5视图4.2数据定义4.3数据查询4.3.1基本查询4.3.2聚合函数查询4.3.3对数据进行分组统计4.3.4连接查询4.3.5嵌套查询4.3.6集合查询掌握查询语句的基本格式及单表查询的方法。教学目标能够进行单表的查询,掌握使用聚集函数查询、分组查询的方法。技能目标单表的基本查询、聚集查询和分组统计查询重点单表的基本查询、聚集查询和分组统计查询难点SQ语言的主要功能?数据定义包括哪些语句?

返回`4.3.1基本查询语句格式

SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]…FROM<表名或视图名>[,<表名或视图名>]…[WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>]][ORDERBY<列名2>[ASC|DESC]];

4.3.1基本查询1、查询指定列

[例1]查询全体学生的学号与姓名。

SELECTSno,Sname FROMStudent;

[例2]查询全体学生的姓名、学号、所在系。

SELECTSname,Sno,Sdept FROMStudent;4.3.1基本查询2、选出所有属性列:在SELECT关键字后面列出所有列名将<目标列表达式>指定为*[例3]查询全体学生的详细记录。SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;或SELECT*FROMStudent;3、

消除重复的行

如果没有指定DISTINCT关键词,则缺省为ALL

[例4]查询选修了课程的学生学号。

SELECTSnoFROMSC; 等价于:

SELECTALLSnoFROMSC; 执行上面的SELECT语句后,结果为:

Sno 200215121 200215121 200215121 200215122 2002151224.3.1基本查询4.3.1基本查询指定DISTINCT关键词,去掉表中重复的行

SELECTDISTINCTSnoFROMSC;执行结果:

Sno 200215121 2002151225、查询限定行数

[例5]显示学生表Student中前2行数据。SELECTTOP2*FROMStdent4.3.1基本查询4.3.1基本查询SELECT子句的<目标列表达式>可以为:算术表达式字符串常量函数列别名[例6]查全体学生的姓名及其出生年份。SELECTSname,2003-Sage/*假定当年的年份为2003年*/FROMStudent;

输出结果:

Sname2003-Sage

李勇 1983

刘晨 1985

王敏 1986

张立 19854.3.1基本查询4.3.1基本查询[例7]查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名SELECTSname,‘YearofBirth:',2003-Sage,

LOWER(Sdept)FROMStudent;输出结果:

Sname'YearofBirth:'2003-SageISLOWER(Sdept)

李勇YearofBirth:1983 cs

刘晨YearofBirth:1985 is

王敏YearofBirth:1986 ma

张立YearofBirth:1985 is4.3.1基本查询使用列别名改变查询结果的列标题:

SELECTSnameNAME,'YearofBirth:’

BIRTH,

2000-SageBIRTHDAY,LOWER(Sdept)DEPARTMENT FROM

Student;输出结果:

NAMEBIRTHBIRTHDAYDEPARTMENT------------------------------------------------------

李勇YearofBirth:1983cs

刘晨YearofBirth:1985is

王敏YearofBirth:1986ma

张立YearofBirth:1985is4.3.1基本查询查询条件谓词比较=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比较运算符确定范围BETWEENAND,NOTBETWEENAND确定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重条件(逻辑运算)AND,OR,NOT表4.3常用的查询条件4.3.1基本查询[例8]查询计算机科学系全体学生的名单。

SELECTSnameFROMStudentWHERESdept=‘CS’;[例9]查询所有年龄在20岁以下的学生姓名及其年龄。

SELECTSname,SageFROMStudentWHERESage<20;[例10]查询考试成绩有不及格的学生的学号。

SELECTDISTINCTSnoFROMSCWHEREGrade<60;4.3.1基本查询谓词:BETWEEN…AND…NOTBETWEEN…AND…[例11]查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄

SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;[例12]查询年龄不在20~23岁之间的学生姓名、系别和年龄

SELECTSname,Sdept,Sage FROMStudent WHERESageNOTBETWEEN20AND23;4.3.1基本查询谓词:

[NOT]LIKE‘<匹配串>’[ESCAPE‘<换码字符>’]匹配串为固定字符串[例13]查询学号为200215121的学生的详细情况。

SELECT*FROMStudentWHERESnoLIKE‘200215121';等价于:

SELECT*FROMStudentWHERESno='200215121';4.3.1基本查询2)匹配串为含通配符的字符串[例14]查询所有姓刘学生的姓名、学号和性别。

SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE‘刘%’;[例15]查询姓"欧阳"且全名为三个汉字的学生的姓名。

SELECTSnameFROMStudentWHERESnameLIKE'欧阳__';4.3.1基本查询[例16]查询名字中第2个字为"阳"字的学生的姓名和学号。

SELECTSname,SnoFROMStudentWHERESnameLIKE‘__阳%’;[例17]查询所有不姓刘的学生姓名。

SELECTSname,Sno,SsexFROMStudentWHERESnameNOTLIKE'刘%';4.3.1基本查询3)使用换码字符将通配符转义为普通字符

[例18]查询DB_Design课程的课程号和学分。

SELECTCno,CcreditFROMCourseWHERECnameLIKE'DB\_Design'ESCAPE'\‘;[例19]查询以"DB_"开头,且倒数第3个字符为i的课程的详细情况。

SELECT*FROMCourseWHERECnameLIKE'DB\_%i__'ESCAPE'\‘;

ESCAPE'\'表示“\”为换码字符

4.3.1基本查询谓词:

ISNULL或ISNOTNULL“IS”不能用“=”代替

[例20]某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。

SELECTSno,CnoFROMSCWHEREGradeISNULL[例21]查所有有成绩的学生学号和课程号。

SELECTSno,CnoFROMSCWHEREGradeISNOTNULL;4.3.1基本查询逻辑运算符:AND和OR来联结多个查询条件

AND的优先级高于OR

可以用括号改变优先级可用来实现多种其他谓词

[NOT]IN[NOT]BETWEEN…AND…4.3.1基本查询[例22]查询计算机系年龄在20岁以下的学生姓名。

SELECTSnameFROMStudentWHERESdept='CS'ANDSage<20;4.3.1基本查询改写[例9][例9]查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。SELECTSname,SsexFROMStudentWHERESdeptIN('IS','MA','CS')可改写为:SELECTSname,SsexFROMStudentWHERESdept='IS'ORSdept='MA'ORSdept='CS';4.3.1基本查询ORDERBY子句可以按一个或多个属性列排序升序:ASC;降序:DESC;缺省值为升序当排序列含空值时ASC:排序列为空值的元组最后显示DESC:排序列为空值的元组最先显示4.3.1基本查询[例23]查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。

SELECTSno,GradeFROMSCWHERECno='3'ORDERBYGradeDESC;[例24]查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。

SELECT*FROMStudentORDERBYSdept,SageDESC;4.3数据查询4.3.1基本查询4.3.2聚合函数查询4.3.3对数据进行分组统计4.3.4连接查询4.3.5嵌套查询4.3.6集合查询4.3.2聚合函数查询聚合函数:计数COUNT([DISTINCT|ALL]*)COUNT([DISTINCT|ALL]<列名>)计算总和SUM([DISTINCT|ALL]<列名>) 计算平均值AVG([DISTINCT|ALL]<列名>)最大最小值

MAX([DISTINCT|ALL]<列名>)

MIN([DISTINCT|ALL]<列名>)4.3.2聚合函数查询[例26]查询学生总人数。

SELECTCOUNT(*)FROMStudent;

[例27]查询选修了课程的学生人数。

SELECTCOUNT(DISTINCTSno)FROMSC;

[例28]计算1号课程的学生平均成绩。

SELECTAVG(Grade)FROMSCWHERECno='1';4.3.2聚合函数查询[例29]查询选修1号课程的学生最高分数。

SELECTMAX(Grade)FROMSCWHERCno=‘1’;[例30]查询学生200215012选修课程的总学分数。

SELECTSUM(Ccredit)FROMSC,CourseWHERSno='200215012'ANDSC.Cno=Course.Cno;4.3数据查询4.3.1基本查询4.3.2聚合函数查询4.3.3对数据进行分组统计4.3.4连接查询4.3.5嵌套查询4.3.6集合查询4.3.3对数据进行分组统计GROUPBY子句分组:细化聚集函数的作用对象未对查询结果分组,聚集函数将作用于整个查询结果对查询结果分组后,聚集函数将分别作用于每个组作用对象是查询的中间结果表按指定的一列或多列值分组,值相等的为一组4.3.3对数据进行分组统计[例31]求各个课程号及

温馨提示

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

评论

0/150

提交评论