第三章关系数据库标准语言SQL课件复习课程

上传人:youn****329 文档编号:136951084 上传时间:2020-07-04 格式:PPT 页数:136 大小:683.50KB
返回 下载 相关 举报
第三章关系数据库标准语言SQL课件复习课程_第1页
第1页 / 共136页
第三章关系数据库标准语言SQL课件复习课程_第2页
第2页 / 共136页
第三章关系数据库标准语言SQL课件复习课程_第3页
第3页 / 共136页
第三章关系数据库标准语言SQL课件复习课程_第4页
第4页 / 共136页
第三章关系数据库标准语言SQL课件复习课程_第5页
第5页 / 共136页
点击查看更多>>
资源描述

《第三章关系数据库标准语言SQL课件复习课程》由会员分享,可在线阅读,更多相关《第三章关系数据库标准语言SQL课件复习课程(136页珍藏版)》请在金锄头文库上搜索。

1、第三章关系数据库标准语言SQL,本章主要教学内容:,数据定义、查询、数据更新视图数据控制嵌入式SQL,3.1SQL概述,3.1.1SQL的特点,SQL是一个介于关系代数与关系演算之间的结构化查询语言,其功能不只是查询。SQL是一个通用的、功能极强的关系数据库查询语言。,1.一体化特点;,2.高度非过程化;,3.面向集合的操作方式;,4.对待不同的工作方式采用统一的语法结构;,5.语言简洁,易学易用;,6.视图数据结构,3.1.2SQL语言的基本概念,SQL语言支持关系数据库三级模式结构视图、基本表和存储文件。,外模式,模式,内模式,利用SQL进行数据库操作可分三个阶段进行:,定义数据库结构,定

2、义关系模式;向已定义的数据库中添加、删除和修改数据;对已存在数据库进行各种查询与统计。,3.2.1定义、删除与修改基本表,一、定义基本表,命令格式:,CREATETABLE(,):所要定义的基本表的名字,说明:组成该表的各个属性(列):涉及相应属性列的完整性约束条件:涉及一个或多个属性列的完整性约束条件,例1建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。CREATETABLEStudent(SnoCHAR(5)NOTNULLUNIQUE,SnameCHAR(20)UN

3、IQUE,SsexCHAR(1),SageINT,SdeptCHAR(15),常用完整性约束:唯一性约束:UNIQUE非空值约束:NOTNULL参照完整性约束主码约束:PRIMARYKEY,例2建立一个“学生选课”表SC,它由学号Sno、课程号Cno,修课成绩Grade组成。,CREATETABLESC(SnoCHAR(5),CnoCHAR(3),Gradeint),二、修改扩充基本表,ALTERTABLEADD完整性约束DROPMODIFY;,说明:要修改的基本表ADD子句:增加新列和新的完整性约束条件DROP子句:删除指定的完整性约束条件MODIFY子句:用于修改列名和数据类型,命令格式:

4、,例4将年龄的数据类型改为半字长整数。,ALTERTABLEStudentMODIFYSageSMALLINT,注:修改原有的列定义有可能会破坏已有数据。,例5删除学生姓名必须取唯一值的约束。,ALTERTABLEStudentDROPUNIQUE(Sname),例3向Student表增加“入学时间”列,其数据类型为日期型。,ALTERTABLEStudentADDScomeDATE,注:不论基本表中原来是否已有数据,新增加的列一律为空。,三、删除基本表,DROPTABLE,命令格式:,说明:删除基本表及其数据,释放相应的存储空间,同时系统也自动删除在此表上建立的各种索引,也删除了在该表上授予

5、的操作权限。表上的视图往往仍然保留,但无法引用。,例7删除Student表,DROPTABLEStudent,3.2.2建立与删除索引,建立索引是加快查询速度的有效手段建立索引DBA或表的属主(即建立表的人)根据需要建立有些DBMS自动建立以下列上的索引PRIMARYKEYUNIQUE维护索引(DBMS自动完成)使用索引DBMS自动选择是否使用索引以及使用哪些索引,一、建立索引,命令格式:CREATEUNIQUECLUSTERINDEXON(,);,说明:用指定要建索引的基本表名字索引可以建立在该表的一列或多列上,各列名之间用逗号分隔用指定索引值的排列次序,升序:ASC,降序:DESC。缺省值

6、:ASCUNIQUE表明此索引的每一个索引值只对应唯一的数据记录CLUSTER表示要建立的索引是聚簇索引,所谓聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。,例8为学生-课程数据库中的Student,Course,SC三个表建立索引。其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。,CREATEUNIQUEINDEXStusnoONStudent(Sno)CREATEUNIQUEINDEXCoucnoONCourse(Cno)CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC),

7、说明:,(1)唯一值索引对于已含重复值的属性列不能建UNIQUE索引对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值。这相当于增加了一个UNIQUE约束,(2)聚簇索引建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇索引的索引项顺序与表中记录的物理顺序一致。,例:CREATECLUSTERINDEXStusnameONStudent(Sname)在Student表的Sname(姓名)列上建立一个聚簇索引,而且Student表中的记录将按照Sname值的升序存放,(3)在一个基本表上最多只能建立一个聚簇索引;,(4)聚簇索引的

8、适用范围很少对基表进行增删操作很少对其中的变长列进行修改操作,二、删除索引,DROPINDEX,例9删除Student表的Stusname索引。,DROPINDEXStusname;,注意:建立索引是为了减少查询操作时间,但如果数据增加删改频繁,系统会花费许多时间来维护索引。,命令格式:,3.3查询,语句格式SELECTALL|DISTINCT,FROM,WHEREGROUPBYHAVINGORDERBYASC|DESC,功能:根据WHERE子句中的条件,从FROM后面列出的表名中找出满足条件的元组,按SELECT子句后面给出的列名1,列名2等目标列的顺序,选出元组中的分量形成结果表。,说明:

9、SELECT子句:指定要显示的属性列FROM子句:指定查询对象(基本表或视图)WHERE子句:指定查询条件GROUPBY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。HAVING短语:筛选出只有满足指定条件的组ORDERBY子句:对查询结果表按指定列值的升序(ASC)或降序(DESC)排序,3.3.1单表查询,查询仅涉及一个表,是一种最简单的查询操作,一、选择表中的若干列二、选择表中的若干元组三、对查询结果排序四、使用集函数五、对查询结果分组,一、选择表中的若干列,例1查询全体学生的学号与姓名。,1.查询指定列:,SELECTSno,SnameFRO

10、MStudent,例2查询全体学生的姓名、学号、所在系。,SELECTSname,Sno,SdeptFROMStudent,例3查询全体学生的详细记录。,SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent或SELECT*FROMStudent,2.查询全部列:,3.查询经过计算的值:,SELECT子句的为表达式算术表达式字符串常量函数列别名,例4查全体学生的姓名及其出生年份。,SELECTSname,2000-SageFROMStudent,Sname2000-Sage李勇1976刘晨1977王名1978张立1978,输出结果:,例5查询全体学生的姓名、出生年

11、份和所在系,要求用小写字母表示所有系名。,SELECTSname,YearofBirth:,2000-Sage,ISLOWER(Sdept)FROMStudent,输出结果:SnameYearofBirth:2000-SageISLOWER(Sdept)李勇YearofBirth:1976cs刘晨YearofBirth:1977is王名YearofBirth:1978ma张立YearofBirth:1977is,例6使用列别名改变查询结果的列标题,SELECTSnameNAME,YearofBirth:BIRTH,2000-SageBIRTHDAY,ISLOWER(Sdept)DEPARTME

12、NTFROMStudent;,输出结果:NAMEBIRTHBIRTHDAYDEPARTMENT李勇YearofBirth:1976cs刘晨YearofBirth:1977is王名YearofBirth:1978ma张立YearofBirth:1977is,二、选择表中的若干元组,1.消除取值重复的行,方法:在SELECT子句中使用DISTINCT短语。,假设SC表中有下列数据SnoCnoGrade9500119295001285950013889500229095002380,例7查询选修了课程的学生学号。,(1)SELECTSnoFROMSC,(2)SELECTDISTINCTSnoFROM

13、SC,结果1,结果2,结果1:Sno9500195001950019500295002,结果2:Sno9500195002,注意:DISTINCT短语的作用范围是所有目标列。,例:查询选修课程的各种成绩错误的写法SELECTDISTINCTCno,DISTINCTGradeFROMSC正确的写法SELECTDISTINCTCno,GradeFROMSC,2.查询满足条件的元组,见P95表3.3,(1)比较大小:,在WHERE子句的中使用比较运算符=,=,!,!逻辑运算符NOT+比较运算符,例8查询所有年龄在20岁以下的学生姓名及其年龄。,SELECTSname,SageFROMStudentW

14、HERESage20,例9查询考试成绩有不及格的学生的学号,SELECTDISTINCTSnoFROMSCWHEREGrade60,(2)确定范围:,使用谓词BETWEENAND、NOTBETWEENAND,例10查询年龄在2023岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。,SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23,年龄不在2023之间的学生:SageNOTBETWEEN20AND23,(3)确定集合:,使用谓词IN,NOTIN,:用逗号分隔的一组取值,例11查询信息系(IS)、数学系(MA)和计算机科学系(C

15、S)学生的姓名和性别。,SELECTSname,SsexFROMStudentWHERESdeptIN(IS,MA,CS);,查询既不是信息系、数学系,也不是计算机科学系的学生:SdeptNOTIN(IS,MA,CS),(4)字符匹配:,格式:NOTLIKEESCAPE,功能:查找指定的属性列值与相匹配的元组。匹配串可以是一个完整的字符串,也可以含有通配符。,通配符:%和_%(百分号):代表任意长度的字符串;_(下横线):代表任意单个字符。,例:a%b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab等都满足该匹配串,例:a_b表示以a开头,以b结尾的长度为3的任意字符串。如

16、acb,afb等都满足该匹配串,例12查询学号为95001的学生的详细情况。,SELECT*FROMStudentWHERESnoLIKE95001,或SELECT*FROMStudentWHERESno=95001;,注:当匹配模板为固定字符串时,可以用=运算符取代LIKE谓词用!=或运算符取代NOTLIKE谓词,例13查询所有姓刘学生的姓名、学号和性别。,SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE刘%,例14查询姓欧阳且全名为三个汉字的学生的姓名。,SELECTSnameFROMStudentWHERESnameLIKE欧阳_,注意:一个汉字占两个字符的位置,所以匹配串需要两个。,例13查询所有姓刘学生的姓名、学号和性别。,SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE刘%,例14查询姓欧阳且全名为三个汉字的学生的姓名。,SELECTSnameFROMStudentWHERESnameLIKE欧阳_,例15查询名字中第2个字为阳字的学生的姓名和学号。,SELE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号