CH关系数据库标准语言SQL2.ppt
- 文档编号:1387082
- 上传时间:2022-10-21
- 格式:PPT
- 页数:98
- 大小:1.19MB
CH关系数据库标准语言SQL2.ppt
《CH关系数据库标准语言SQL2.ppt》由会员分享,可在线阅读,更多相关《CH关系数据库标准语言SQL2.ppt(98页珍藏版)》请在冰豆网上搜索。
第三章关系数据库标准语言SQL
(2),主讲:
林芳,第三章关系数据库标准语言SQL,3.1SQL概述3.2学生-课程数据库3.3数据定义3.4数据查询3.5数据更新3.6视图3.7小结,数据查询,语句格式SELECTALL|DISTINCT,FROM,WHEREGROUPBYHAVINGORDERBYASC|DESC;,3.4数据查询,3.4.1单表查询3.4.2连接查询3.4.3嵌套查询3.4.4集合查询3.4.5Select语句的一般形式,3.4.1单表查询,查询仅涉及一个表:
一、选择表中的若干列二、选择表中的若干元组三、ORDERBY子句四、聚集函数五、GROUPBY子句,一、选择表中的若干列,1.查询指定列例1查询全体学生的学号与姓名。
SELECTSno,SnameFROMStudent;例2查询全体学生的姓名、学号、所在系。
SELECTSname,Sno,SdeptFROMStudent;-目标列的顺序可以与表中顺序不同,2.查询全部列,两种方法在SELECT关键字后面列出所有列名将指定为*例3查询全体学生的详细记录。
SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;或SELECT*FROMStudent;,3.查询经过计算的值,SELECT子句的可以为:
算术表达式字符串常量函数列别名,查询经过计算的值(续),例4查全体学生的姓名及其出生年份。
SELECTSname,2009-SageFROMStudent;,-SQLServer2000日期相关函数:
-GetDate()取当前日期时间-Year(日期)取年份Month(日期)月份Day(日期)日,SELECTSname,Year(GetDate()-SageFROMStudent;,查询经过计算的值(续),例5查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名SELECTSname,YearofBirth:
,2009-Sage,LOWER(Sdept)FROMStudent;,查询经过计算的值(续),使用列别名改变查询结果的列标题:
SELECTSnameNAME,YearofBirth:
BIRTH,2009-SageBIRTHDAY,LOWER(Sdept)DEPARTMENTFROMStudent;输出结果:
二、选择表中的若干元组,如果没有指定DISTINCT关键词,则缺省为ALL例6查询选修了课程的学生学号。
SELECTSnoFROMSC;等价于:
SELECTALLSnoFROMSC;执行上面的SELECT语句后,结果为:
Sno200215121200215121200215121200215122200215122,1.消除取值重复的行,指定DISTINCT关键词,去掉表中重复的行SELECTDISTINCTSnoFROMSC;执行结果:
Sno200215121200215122,2.查询满足条件的元组,表3.4常用的查询条件,
(1)比较大小,例7查询计算机科学系全体学生的名单。
SELECTSnameFROMStudentWHERESdept=CS;例8查询所有年龄在20岁以下的学生姓名及其年龄。
SELECTSname,SageFROMStudentWHERESage20;例9查询考试成绩有不及格的学生的学号。
SELECTDISTINCTSnoFROMSCWHEREGrade60;,
(2)确定范围,谓词:
BETWEENANDNOTBETWEENAND例10查询年龄在2023岁(包括20岁和23岁)之间的学生的姓名、系别和年龄SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;例11查询年龄不在2023岁之间的学生姓名、系别和年龄SELECTSname,Sdept,SageFROMStudentWHERESageNOTBETWEEN20AND23;,(3)确定集合,谓词:
IN,NOTIN例12查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
SELECTSname,SsexFROMStudentWHERESdeptIN(IS,MA,CS);例13查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。
SELECTSname,SsexFROMStudentWHERESdeptNOTIN(IS,MA,CS);,(4)字符匹配,谓词:
NOTLIKEESCAPE1)匹配串为固定字符串例14查询学号为200215121的学生的详细情况。
SELECT*FROMStudentWHERESnoLIKE200215121;等价于:
SELECT*FROMStudentWHERESno=200215121;,字符匹配(续),2)匹配串为含通配符的字符串%:
代表任意长度(长度可以为0)的字符串_:
代表单个字符注:
SQLServer2000中一个下划线就可表示一个汉字例15查询所有姓刘学生的姓名、学号和性别。
SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE刘%;例16查询姓欧阳且全名为三个汉字的学生的姓名。
SELECTSnameFROMStudentWHERESnameLIKE欧阳_;,字符匹配(续),例17查询名字中第2个字为阳字的学生的姓名和学号。
SELECTSname,SnoFROMStudentWHERESnameLIKE_阳%;例18查询所有不姓刘的学生姓名。
SELECTSname,Sno,SsexFROMStudentWHERESnameNOTLIKE刘%;,字符匹配(续),3)使用换码字符ESCAPE将通配符转义为普通字符例19查询DB_Design课程的课程号和学分。
SELECTCno,CcreditFROMCourseWHERECnameLIKEDB_DesignESCAPE;-ESCAPE表示“”为换码字符例20查询以DB_开头,且倒数第3个字符为i的课程的详细情况。
SELECT*FROMCourseWHERECnameLIKEDB_%i__ESCAPE;,(5)涉及空值的查询,谓词:
ISNULL或ISNOTNULL“IS”不能用“=”代替例21某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
查询缺少成绩的学生的学号和相应的课程号。
SELECTSno,CnoFROMSCWHEREGradeISNULL;例22查所有有成绩的学生学号和课程号。
SELECTSno,CnoFROMSCWHEREGradeISNOTNULL;,(6)多重条件查询,逻辑运算符:
AND和OR来联结多个查询条件AND的优先级高于OR可以用括号改变优先级可用来实现多种其他谓词NOTINNOTBETWEENAND,多重条件查询(续),例23查询计算机系年龄在20岁以下的学生姓名。
SELECTSnameFROMStudentWHERESdept=CSANDSage20;,多重条件查询(续),改写例12例12查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
SELECTSname,SsexFROMStudentWHERESdeptIN(IS,MA,CS)可改写为:
SELECTSname,SsexFROMStudentWHERESdept=ISORSdept=MAORSdept=CS;,三、ORDERBY子句,ORDERBY子句可以按一个或多个属性列排序升序:
ASC;降序:
DESC;缺省值为升序当排序列含空值时ASC:
排序列为空值的元组最后显示DESC:
排序列为空值的元组最先显示,ORDERBY子句(续),例24查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
SELECTSno,GradeFROMSCWHERECno=3ORDERBYGradeDESC;例25查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。
SELECT*FROMStudentORDERBYSdept,SageDESC;,四、聚集函数,聚集函数:
计数COUNT(DISTINCT|ALL*)COUNT(DISTINCT|ALL)计算总和SUM(DISTINCT|ALL)计算平均值AVG(DISTINCT|ALL)最大最小值MAX(DISTINCT|ALL)MIN(DISTINCT|ALL),聚集函数(续),例26查询学生总人数。
SELECTCOUNT(*)FROMStudent;例27查询选修了课程的学生人数。
SELECTCOUNT(DISTINCTSno)FROMSC;例28计算1号课程的学生平均成绩。
SELECTAVG(Grade)FROMSCWHERECno=1;,聚集函数(续),例29查询选修1号课程的学生最高分数。
SELECTMAX(Grade)FROMSCWHERECno=1;例30查询学生200215122选修课程的总学分数。
SELECTSUM(Ccredit)FROMSC,CourseWHERESno=200215122ANDSC.Cno=Course.Cno;,五、GROUPBY子句,GROUPBY子句分组,细化聚集函数的作用对象未对查询结果分组,聚集函数将作用于整个查询结果对查询结果分组后,聚集函数将分别作用于每个组作用对象是查询的中间结果表按指定的一列或多列值分组,值相等的为一组注意:
在SQLServer中,使用GroupBy子句后,Select子句的字段列表达式只能是分组依据和聚集函数,GROUPBY子句(续),例31求各个课程号及相应的选课人数。
SELECTCno,COUNT(Sno)FROMSCGROUPBYCno;查询结果:
CnoCOUNT(Sno)122234344433548,GROUPBY子句(续),例32查询选修了3门以上课程的学生学号。
SELECTSnoFROMSCGROUPBYSnoHAVINGCOUNT(*)3;,GROUPBY子句(续),HAVING短语与WHERE子句的主要区别是作用对象不同WHERE子句作用于基表或视图,从中选择满足条件的元组HAVING短语作用于组,从中选择满足条件的组。
3.4数据查询,3.4.1单表查询3.4.2连接查询3.4.3嵌套查询3.4.4集合查询3.4.5Select语句的一般形式,3.4.2连接查询,连接查询:
同时涉及多个表的查询例30查询学生200215122选修课程的总学分数。
SELECTSUM(Ccredit)FROMSC,CourseWHERESno=200215122ANDSC.Cno=Course.Cno;,3.4.2连接查询,连接条件或连接谓词:
用来连接两个表的条件格式1:
.格式2:
.BETWEEN.AND.连接字段:
连接谓词中的列名称,连接条件中的各连接字段类型必须是可比的,但名字不必是相同的,连接操作的执行过程,3种可能的执行过程嵌套循环法(NESTED-LOOP)排序合并法(SORT-MERGE)常用于=连接索引连接(INDEX-JOIN),嵌套循环法(NESTED-LOOP),首先在表1中找到第一个元组,然后从头开始扫描表2,逐一查找满足连接件的元组,找到后就将表1中的第一个元组与该
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CH 关系 数据库 标准 语言 SQL2