资源描述:
《《数据库原理与技术》-第3章 关系数据库语言SQLppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三章关系数据库语言SQL3.1SQL概述SQL语言集数据查询(dataquery)、数据操纵(datamanipulation)、数据定义(datadefinition)和数据控制(datacontrol)功能于一体,充分体现了关系数据语言的特点和优点。1.综合统一2.高度非过程化3.面向集合的操作方式(元组集合)4.以同一种语法结构提供两种使用方式(自含式,嵌入式)5.语言简洁,易学易用13.2数据定义3.2.1定义、删除、修改基本表例1建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Sse
2、x、年龄Sage、所在系Sdept五个属性组成,其中学号属性不能为空,并且其值是唯一的。CREATETABLEStudent(SnoCHAR(5)NOTNULLUNIQUE,SnameCHAR(20),SsexCHAR(2),SageINT,SdeptCHAR(15))22.修改基本表例2向Student表增加“入学时间”列,其数据类型为日期型。ALTERTABLEStudentADDScomeDATE注意:修改原有的列定义有可能会破坏已有数据。33.删除基本表例3删除Student表DROPTABLEStudent
3、注意:基本表定义一旦删除,表中的数据、此表上建立的索引和视图都将自动被删除。3.2.2建立与删除索引1.建立索引CREATE[UNIQUE][CLUSTER]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…)次序可选ASC(升序)或DESC(降序),缺省为ASC。注意:建立聚簇索引后,更新索引列数据时,往往导致表中记录的物理顺序的变更,代价较大。4例4为学生—课程数据库中的Student,Course两个表建立索引。其中Student表按学号升序建立唯一索引,Course表按课程号降
4、序建立唯一索引。CREATEUNIQUEINDEXStusnoONStudent(Sno)CREATEUNIQUEINDEXCousnoONCourse(CnoDESC)2.删除索引例5删除Student表的Stusname索引DROPINDEXStusname53.3查询1.一般查询以后均以下列三个表为操作对象:Student(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cname,Cpno,Credit)SC(Sno,Cno,Grade)6例6查询所有选修过课的学生的学号。SELEC
5、TSno FROMSC等价于SELECTAllSno FROMSC要去掉重复行,应写:SELECTDISTINCTSno FROMSC72.条件查询例7查信息系(IS)、数学系(MA)和计算机科学系(CS)的学生的姓名和性别。SELECTSname,Ssex FROMStudentWHERESdeptIN('IS','MA','CS')例8查询学号为95001的学生的详细情况。SELECT* FROMStudentWHERESnoLIKE’95001’等价于:SELECT* FROMStudentWHERESno='
6、95001'8SQL提供的集函数:COUNT([DISTINCT
7、ALL]*)统计元组个数COUNT([DISTINCT
8、ALL]<列名>)统计一列中值的个数SUM([DISTINCT
9、ALL]<列名>)计算一列值的总和(此列必须是数值型)AVG([DISTINCT
10、ALL<列名>)计算一列值的平均值(此列必须是数值型)MAX([DISTINCT
11、ALLL]<列名>)求一列中最大值MIN([DISTINCT
12、ALL]<列名>)求一列中最小值9例9查询各个课程号与相应的选课人数。SELECTCno,COUNT(Sno)
13、FROMSCGROUPBYCnoHAVING短语作用于组,从中选择满足条件的组。例10查询选修了3门以上课程的学生的学号。SELECTSnoFROMSCGROUPBYSnoHAVINGCOUNT(*)>3103.连接查询例11查询每个学生及其选修课程的情况。SELECTStudent.*,SC.*FROMStudent,SCWHEREStudent.Sno=SC.Sno(列Sno重复)例12自然连接Student和SC表。SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grad
14、eFROMStudent,SCWHEREStudent.Sno=SC.Sno(列Sno不重复)114.带有ANY或ALL谓词的子查询>ANY大于子查询结果中的某个值<ANY小于子查询结果中的某个值>=ANY大于等于子查询结果中的某个值<=ANY小于等于子查询结果中的某个值=ANY等于子查询结果中的某个值!=ANY或<>ANY不等于子查询结果中的