您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 数据库概论-第3章-关系数据库标准语言SQL
AnIntroductiontoDatabaseSystem浙江大学生物医学工程与仪器科学学院数据库系统概论AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQLAnIntroductiontoDatabaseSystemSQL发展历史1974年,Boyce和Chamberlin提出SQL(StructuredQueryLanguage)1975年,IBM的SanJoseResearchLaboratory研制了SystemR原型并实现了SQL1986.10,ANSI批准了SQL作为美国标准SQL-861987年,ISO也通过了这一标准1989年,ANSI公布了SQL-891992年,ANSI公布了SQL-92目前使用的新标准SQL-99AnIntroductiontoDatabaseSystemSQL重要性大多数数据库均用SQL作为共同的数据存储语言和标准接口,使不同的数据库系统之间的互操作有了共同的基础有人把确立SQL委关系数据库语言标准及其后的发展称为一场革命SQL对数据库以外的领域也产生了很大影像SQL已成为数据库领域中的一个主流语言AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL3.1SQL概述3.2数据定义3.3查询3.4数据更新3.5视图3.6数据控制3.7嵌入式SQL3.8小结AnIntroductiontoDatabaseSystem3.1SQL概述SQL的特点1.综合统一2.高度非过程化3.面向集合的操作方式4.以同一种语法结构提供两种使用方法5.语言简洁,易学易用AnIntroductiontoDatabaseSystem1.综合统一集DDL、DML、DCL的功能于一体非关系模型分模式DDL、外模式DDL、DSDL、DML可以在运行后根据需要随时修改模式非关系模型需停止数据库运行,转储数据,修改模式并编译后再重装数据库数据操作符统一查找、插入、删除、修改每一种操作都只需一种操作符AnIntroductiontoDatabaseSystem2.高度非过程化只需提出“做什么”,而无需指明“怎么做”。无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成AnIntroductiontoDatabaseSystem3.面向集合的操作方式不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的结合非关系数据库采用面向记录的操作方式AnIntroductiontoDatabaseSystem4.以同一种语法结构提供两种使用方式既是自含式语言,又是嵌入式语言可独立地应用于联机交互的使用方式能够嵌入到高级语言程序中两种使用方式下,SQL语言的语法结构基本上是一致的。AnIntroductiontoDatabaseSystem5.语言简捷,易学易用表3.1SQL语言的动词SQL功能动词数据定义CREATE,DROP,ALTER数据查询SELECT数据操纵INSERT,UPDATEDELETE数据控制GRANT,REVOKEAnIntroductiontoDatabaseSystemSQL语言的基本概念SQL视图1视图2基本表1基本表2基本表3基本表4存储文件1存储文件2外模式模式内模式AnIntroductiontoDatabaseSystemSQL语言的基本概念(续)SQL语言可以对基本表和视图进行查询或其它操作基本表是本身独立存在的表,一个表带若干索引一个或多个基本表对应一个存储文件,它的物理结构是透明的视图是从一个或多个基本表导出的表,不存放数据,是一个虚表。视图上可以再定义视图AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL3.1SQL概述3.2数据定义3.3查询3.4数据更新3.5视图3.6数据控制3.7嵌入式SQL3.8小结AnIntroductiontoDatabaseSystem3.2数据定义表3.2SQL的数据定义语句操作方式操作对象创建删除修改表CREATETABLEDROPTABLEALTERTABLE视图CREATEVIEWDROPVIEW索引CREATEINDEXDROPINDEXAnIntroductiontoDatabaseSystem3.2.1定义语句格式CREATETABLE表名(列名数据类型[列级完整性约束条件][,列名数据类型[列级完整性约束条件]]…[,表级完整性约束条件]);表名:所要定义的基本表的名字列名:组成该表的各个属性(列)列级完整性约束条件:涉及相应属性列的完整性约束条件表级完整性约束条件:涉及一个或多个属性列的完整性约束条件AnIntroductiontoDatabaseSystem例题[例1]建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。CREATETABLEStudent(SnoCHAR(5)NOTNULLUNIQUE,SnameCHAR(20)UNIQUE,SsexCHAR(1),SageINT,SdeptCHAR(15));AnIntroductiontoDatabaseSystem例题(续)SnoSnameSsexSageSdept ↑ ↑ ↑ ↑ ↑字符型 字符型 字符型 整数 字符型长度为5长度为20长度为1 长度为15不能为空值AnIntroductiontoDatabaseSystem定义基本表(续)常用完整性约束主码约束:PRIMARYKEY唯一性约束:UNIQUE非空值约束:NOTNULL参照完整性约束PRIMARYKEY与UNIQUE的区别?AnIntroductiontoDatabaseSystem例题(续)[例]建立一个“学生选课”表SC,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno,Cno)为主码。CREATETABLESC(SnoCHAR(5),CnoCHAR(3),Gradeint,Primarykey(Sno,Cno));AnIntroductiontoDatabaseSystem二、修改基本表ALTERTABLE表名[ADD新列名数据类型[完整性约束]][DROP完整性约束名][MODIFY列名数据类型];表名:要修改的基本表ADD子句:增加新列和新的完整性约束条件DROP子句:删除指定的完整性约束条件MODIFY子句:用于修改列名和数据类型AnIntroductiontoDatabaseSystem语句格式(续)删除属性列直接/间接删除把表中要保留的列及其内容复制到一个新表中删除原表再将新表重命名为原表名直接删除属性列:(新)例:ALTERTABLEStudentDropSname;AnIntroductiontoDatabaseSystem例题[例2]向Student表增加“入学时间”列,其数据类型为日期型。ALTERTABLEStudentADDScomeDATE;不论基本表中原来是否已有数据,新增加的列一律为空值。AnIntroductiontoDatabaseSystem[例3]将年龄的数据类型改为半字长整数。ALTERTABLEStudentMODIFYSageSMALLINT;注:修改原有的列定义有可能会破坏已有数据AnIntroductiontoDatabaseSystem例题[例4]删除学生姓名必须取唯一值的约束。ALTERTABLEStudentDROPUNIQUE(Sname);AnIntroductiontoDatabaseSystem三、删除基本表DROPTABLE表名;基本表删除数据、表上的索引都删除表上的视图往往仍然保留,但无法引用删除基本表时,系统会从数据字典中删去有关该基本表及其索引的描述(标准中没有,认为表建立后就永久存在)AnIntroductiontoDatabaseSystem例题[例5]删除Student表DROPTABLEStudent;AnIntroductiontoDatabaseSystem3.2.2建立与删除索引建立索引是加快查询速度的有效手段建立索引DBA或表的属主(即建立表的人)根据需要建立有些DBMS自动建立以下列上的索引PRIMARYKEYUNIQUE维护索引DBMS自动完成使用索引DBMS自动选择是否使用索引以及使用哪些索引AnIntroductiontoDatabaseSystem一、建立索引语句格式CREATE[UNIQUE][CLUSTER]INDEX索引名ON表名(列名[次序][,列名[次序]]…);用表名指定要建索引的基本表名字索引可以建立在该表的一列或多列上,各列名之间用逗号分隔用次序指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASCUNIQUE表明此索引的每一个索引值只对应唯一的数据记录CLUSTER表示要建立的索引是聚簇索引AnIntroductiontoDatabaseSystem例题[例6]为学生-课程数据库中的Student,Course,SC三个表建立索引。其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。CREATEUNIQUEINDEXStusnoONStudent(Sno);CREATEUNIQUEINDEXCoucnoONCourse(Cno);CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);AnIntroductiontoDatabaseSystem建立索引(续)唯一值索引对于已含重复值的属性列不能建UNIQUE索引对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值。这相当于增加了一个UNIQUE约束AnIntroductiontoDatabaseSystem建立索引(续)聚簇索引建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇索引的索引项顺序与表中记录的物理顺序一致例:CREATECLUSTERINDEXStusnameONStudent(Sname);在Student表的Sname(姓名)列上建立一个聚簇索引,而且Student表中的记录将按照Sname值的升序存放AnIntroductiontoDatabaseSystem建立索引(续)在一个基本表上最多只能建立一个聚簇索引聚簇索引的用途:对于某些类型的查询,可以提高查询效率聚簇索引的适用范围很少对基表进行增删操作很少对其中的变长列进行修改操作AnIntroductiontoDatabaseSystem二、删除索引DROPINDEX索引名;删除索引时,系统会从数据字典中删去有关该索引的描述。[例7]删除Student表的Stusname索引。DROPINDEXStusname;AnIntroductiontoDatabaseSystem3.3查询3.3.1概述3.3.2单表查询3.3.3连接查询3.3.4嵌套查询3.3.5集合查询3.3.6小结AnIntroductiontoDatabaseSystem3.3.1概述语句格式SELECT[ALL|DISTINCT]目标列表达式[,目标列表达式]…FROM表名或视图名[,表名或视图名]…[WHERE条件表达式][GROUPBY列名1[HAVING条件表达式]][ORDERBY列名2[ASC|DESC]];AnIntroductiontoDatabaseSystem语句格式SELECT
本文标题:数据库概论-第3章-关系数据库标准语言SQL
链接地址:https://www.777doc.com/doc-3807755 .html