AnIntroductiontoDatabaseSystem信息工程教研室数据库系统概论AnIntroductiontoDatabaseSystem主讲:赵云AnIntroductiontoDatabaseSystem关系演算域关系演算元组关系演算关系数据库标准语言(SQL)模式定义与删除基本表的定义、删除与修改索引的建立与删除数据库系统概论AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL视图1视图2SQL基本表3存储文件2存储文件1基本表4基本表1基本表2外模式模式内模式3.1.2SQL语言的基本概念(sql支持三级模式结构)AnIntroductiontoDatabaseSystem1、SQL的功能SQL命令可以用来建立和删除数据库、数据表及索引,使用SELECT语句从表中取得所需的数据,使用UPDATE命令修改已存在的记录数据,使用INSERT和DELETE命令插入和删除记录数据,并可对记录数据进行分类汇总和定义数据库用户的权限等功能。第三章关系数据库标准语言SQLAnIntroductiontoDatabaseSystem2、SQL的分类(1)DDL(DataDefinitionLanguage,数据定义语言):用于定义数据的结构,比如创建、修改或者删除数据库对象;(2)DML(DataManipulationLanguage,数据操作语言):用于向数据库添加、修改和删除数据,检索指定数据等操作;(3)DCL(DataControlLanguage,数据控制语言):用于定义数据库用户的权限。第三章关系数据库标准语言SQLAnIntroductiontoDatabaseSystem3.2数据定义关系数据库支持三级结构,其外模式,模式和内模式中的基本对象是表,视图和索引,因此数据定义功能包括模式定义、表定义,视图定义和索引定义。第三章关系数据库标准语言SQL操作对象操作方式创建删除修改模式CREATESCHEMADROPSCHEMA表CREATETABLEDROPTABLEALTERTABLE视图CREATEVIEWDROPVIEW索引CREATEINDEXDROPINDEXAnIntroductiontoDatabaseSystem数据定义语言是SQL中定义数据库中数据结构的语言,它允许数据库管理员(DBA)或用户创建、删除或更改应用程序中所使用到的各种数据库对象(Tables、Views、Indexes)。第三章关系数据库标准语言SQLAnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL3.3.1、模式的定义与删除一、定义模式:定义数据库的命名空间,在这个空间中可以进一步定义该模式包含的数据库对象。CREATESCHEMA模式名AUTHORIZATION用户名[表定义子句|授权定义子句|视图定义子句]AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL例:定义一个学生-课程模式S-TCREATESCHEMAS-TAUTHORIZATIONWANG例:定义一个学生-课程模式S-T,并且在其中定义一个表TAB1CREATESCHEMAS-TAUTHORIZATIONZHANGCREATETABLETAB1(COL1SMALLINT,COL2INT,….);AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL例:定义一个学生-课程模式S-TDROPSCHEMAZHANGCASCADE二、删除模式DROPSCHEMA模式名CASCADE|RESTRICTCASCADE(级联),表示在删除模式的同时把模式中所有的数据库对象全部删除RESTRICT(限制),表示如果该模式中已经定义了下属的数据库对象,则拒绝该删除语句的执行。只有当该模式中没有任何下属的对象时才能执行DROPSCHEMA语句AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL3.3.2定义、删除与修改基本表一、定义基本表基本格式:CREATETABLE表名(列名数据类型[列级完整性约束条件][,列名数据类型[列级完整性约束条件]]…[,表级完整性约束条件]);其中表名是所要定义的基本表的名字。数据类型:实现域的概念.AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL例1建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且取值也唯一。CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,SnameCHAR(20)UNIQUE,SsexCHAR(1),SageINT,SdeptCHAR(15));AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQLStudentSnoSnameSsexSageSdeptAnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL例如:建立一个“课程”表Course.CREATETABLECourse(CnoCHAR(4)PRIMARYKEY,CnameCHAR(40),CpnoCHAR(4),CcreditSMALLINT,FOREIGNKEYCpnoREFERENCESCourse(Cno));AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL例如:建立学生选课的表.CREATETABLESC(SnoCHAR(7),CnoCHAR(4),GradeSMALLINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno),FOREIGNKEY(Cno)REFERENCESCourse(Cno));AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL练习:建立一个“供应商”表S(Sno,Sname,Status,city),分别表示:供应商代码、供应商名、供应商状态,供应商所在的城市。其中供应商代码不能为空,且取值唯一,且供应商的名字是唯一的。CREATETABLES(SnoCHAR(3)PRIMARYKEY,SnameCHAR(30)UNIQUE,StatusCHAR(8),CityCHAR(20));AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL一、模式与表定义基本表所属的模式有三种格式:1、在表名中明显地给出模式名CREATETABLE模式名.表名()2、在创建模式语句的同时创建表3、设置所属的模式,这样在创建表时表名中不必给出模式名AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL二、修改基本表基本格式:ALTERTABLE表名[ADD新列名数据类型[完整性约束]][DROP完整性约束名][ALTERCOLUMN列名数据类型];其中表名是要修改的基本表的名字。ADD子句用于增加新列和新的完整性约束条件;DROP子句用于删除指定的完整性约束条件;ALTERCOLUMN子句用于修改原有的列定义,包括修改列名和数据类型AnIntroductiontoDatabaseSystem例2:向Student表中加入入学年龄列,类型为日期型。ALTERTABLEstudentADDScomeDATE;练习:向Student表中加入班级号,类型为字符型;向Student表中加入籍贯,类型为字符型;向供应商表“S”加入Zap(邮政编码)字段;例3:将年龄的数据类型改为半长整数。ALTERTABLEStudentALTERCOLUMNSageSMALLINT;练习:将供应商表的Status字段改为整型。例4:删除学生姓名必须取值唯一的约束ALTERTABLEStudentDROPUNIQUE(Sname);第三章关系数据库标准语言SQLAnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQLSQL语句没有提供删除属性列的语句,用户只能间接实现这一功能,即先把表中要保留的列及其内容复制到一个新表中,然后删除原表,再将新表重新命名为原表。AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL三、删除表格式:DROPTABLE表名CASCADE|RESTRICTCASCADE(级联),该表的删除没有限制条件,在删除基本表的同时,相关的依赖对象,如视图,都将被删除RESTRICT(限制),该表的删除有限制条件。欲删除的基本表不能被其他表的约束所应用(如FOREIGNKEY等约束)不能有视图,不能有触发器,不能有存储过程或函数等。其中表名即为要删除的表字。例如:删除Student表DROPTABLEStudentCASCADE;AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL3.2.2建立与删除索引创建索引的主要目的是加速数据的处理。在关系型数据库管理系统(RDBMS)收到客户端的查询(Query)请求时,数据库自动将查询做速度最佳化处理。所谓最佳化处理,是利用索引或其他可提高效率的方法,完成数据查询操作。在数据表中,使用索引可以迅速地查到表中的数据,而不必扫描整个表。其优点为:(1)可以大大加快数据的查询速度,同时使查询得到优化,提高系统性能。(2)通过创建唯一索引能保证表中该列数据的唯一性。(3)可加快表与表之间的连接。因此应在重要的列上建立索引。AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL1.建立索引基本格式:CREATE[UNIQUE][CLUSTER]INDEX索引名ON表名(列名[次序[,列名[次序]]……);次序:ASC,DESC表名是要建索引的基本表的名字[UNIQUE]表示此索引的每个索引值只对应唯一的数据记录。[CLUSTER]表示要建立的索引是聚簇索引。聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL例6:为学生-课程数据库中的Student,Course,SC三个表建立索引。其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。CREATEUNIQUEINDEXStusnoONStudent(Sno);CREATEUNIQUEINDEXCoucnoONCourse(Cno);CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL练习:设有一个供应商S、零件P、工程项目J、供销情况SPJ,希望建立四个索引。其中,供应商S按Sno的升序;零件P按Pno的升序;工程项目J按Jno的升序;供销情况SPJ按Sno的升序,按Pno的降序按Jno的升序。CREATEUNIQUEINDEXS-SNOONS(Sno);CREATEUNIQUEINDEXP-PNOONP(Pno);CREATEUNIQUEINDEXJ-JNOONJ(Jno);CREATEUNIQUEINDEXSPJ-NOONSPJ(SnoASC,PnoDESC,JNOASC);AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL2.删除索引基本格式:DROPINDEX索引名;例如.删除Stude