数据库概论3.ppt
四川农业大学四川农业大学数据库系统概论数据库系统概论An Introduction to Database System第三章第三章 关系数据库标准语言关系数据库标准语言SQLSQLAnIntroductiontoDatabaseSystemWhatisSQL?vData manipulation:ad-hoc queries and updatesSELECT*FROM Account WHERE Type=checking;v Data definition:creation of tables and viewsCREATE TABLE Account (Number integer NOT NULL,Owner character,Balance currency,Type character,PRIMARY KEY(Number);vControl:assertions to protect data integrity CHECK(Owner IS NOT NULL)AnIntroductiontoDatabaseSystem关系代数与关系代数与SQLv关系代数关系代数=queryonlyvSQL=datamanipulation+datadefinition+controlvSQLdatamanipulationissimilarto,butnotexactlythesameasrelationalalgebraSQLisbasedonsetandrelationaloperationswithcertainmodificationsandenhancementsWewillstudythedifferencesAnIntroductiontoDatabaseSystem本章重点与难点本章重点与难点vSQL是关系数据库的标准语言,对关系模型的是关系数据库的标准语言,对关系模型的发展和商用发展和商用DBMS的研制起着重要的作用。的研制起着重要的作用。v本章详细介绍本章详细介绍SQL的核心部分:的核心部分:数据定义、数据查询、数据更新、数据控制数据定义、数据查询、数据更新、数据控制,本章的本章的另一重点是视图的定义、查询、更新及用途。另一重点是视图的定义、查询、更新及用途。v本章难点本章难点:SQL的数据查询功能的数据查询功能AnIntroductiontoDatabaseSystem第三章第三章关系数据库标准语言关系数据库标准语言SQL3.1SQL概述概述3.2学生学生-课程数据库课程数据库3.3数据定义数据定义3.4数据查询数据查询3.5数据更新数据更新3.6视图视图3.7小结小结AnIntroductiontoDatabaseSystem3.1SQL概述概述vSQL(StructuredQueryLanguage)结构化查询语言,是关系数据库的标准语言结构化查询语言,是关系数据库的标准语言vSQL是一个通用的、功能极强的关系数据库语言是一个通用的、功能极强的关系数据库语言AnIntroductiontoDatabaseSystemSQL概述(续)概述(续)v3.1.1SQL的产生与发展的产生与发展v3.1.2SQL的特点的特点v3.1.3SQL的基本概念的基本概念AnIntroductiontoDatabaseSystemSQL标准的进展过程标准的进展过程标准标准大致页数大致页数发布日期发布日期nSQL/861986.10nSQL/89(FIPS127-1)120页页1989年年nSQL/92622页页1992年年nSQL991700页页1999年年nSQL20032003年年AnIntroductiontoDatabaseSystem3.1SQL概述概述v3.1.1SQL的产生与发展的产生与发展v3.1.2SQL的特点的特点v3.1.3SQL的基本概念的基本概念AnIntroductiontoDatabaseSystem3.1.2SQL的特点的特点1.综合统一综合统一n集数据定义语言(集数据定义语言(DDL),),数据操纵语言数据操纵语言(DML),),数据控制语言(数据控制语言(DCL)功能于一体。功能于一体。n可以独立完成数据库生命周期中的全部活动:可以独立完成数据库生命周期中的全部活动:定义关系模式,插入数据,建立数据库;定义关系模式,插入数据,建立数据库;对数据库中的数据进行查询和更新;对数据库中的数据进行查询和更新;数据库重构和维护数据库重构和维护数据库安全性、完整性控制等数据库安全性、完整性控制等n用户数据库投入运行后,可根据需要随时逐步修改用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行。模式,不影响数据的运行。n数据操作符统一数据操作符统一AnIntroductiontoDatabaseSystem2.高度非过程化高度非过程化v非关系数据模型的数据操纵语言非关系数据模型的数据操纵语言“面向过程面向过程”,必须制定存取路径必须制定存取路径vSQL只要提出只要提出“做什么做什么”,无须了解存取路径。,无须了解存取路径。v存取路径的选择以及存取路径的选择以及SQL的操作过程由系统自动的操作过程由系统自动完成。完成。AnIntroductiontoDatabaseSystem3.面向集合的操作方式面向集合的操作方式v非关系数据模型采用面向记录的操作方式,操作对非关系数据模型采用面向记录的操作方式,操作对象是一条记录象是一条记录vSQL采用采用集合操作集合操作方式方式v操作对象、查找结果可以是元组的集合操作对象、查找结果可以是元组的集合v一次插入、删除、更新操作的对象可以是元组一次插入、删除、更新操作的对象可以是元组的集合的集合AnIntroductiontoDatabaseSystem4.以同一种语法结构提供多种使用方式以同一种语法结构提供多种使用方式vSQL是独立的语言是独立的语言能够独立地用于联机交互的使用方式能够独立地用于联机交互的使用方式vSQL又是嵌入式语言又是嵌入式语言SQL能够嵌入到高级语言(例如能够嵌入到高级语言(例如C,C+,Java)程序中,供程序员设计程序时使用程序中,供程序员设计程序时使用AnIntroductiontoDatabaseSystem5.语言简洁,易学易用语言简洁,易学易用vSQL功能极强,完成核心功能只用了功能极强,完成核心功能只用了9个动词。个动词。AnIntroductiontoDatabaseSystem3.1SQL概述概述v3.1.1SQL的产生与发展的产生与发展v3.1.2SQL的特点的特点v3.1.3SQL的基本概念的基本概念AnIntroductiontoDatabaseSystemSQL的基本概念(续)的基本概念(续)SQL视图视图2视图视图1基本表基本表2基本表基本表1基本表基本表3基本表基本表4存储文件存储文件2存储文件存储文件1外模式外模式模模 式式内模式内模式SQL支持关系数据库三级模式结构支持关系数据库三级模式结构AnIntroductiontoDatabaseSystemSQL的基本概念(续)的基本概念(续)v基本表基本表n本身独立存在的表本身独立存在的表nSQL中一个关系就对应一个基本表中一个关系就对应一个基本表n一个一个(或多个或多个)基本表对应一个存储文件基本表对应一个存储文件n一个表可以带若干索引一个表可以带若干索引v存储文件存储文件n逻辑结构组成了关系数据库的内模式逻辑结构组成了关系数据库的内模式n物理结构是任意的,对用户透明物理结构是任意的,对用户透明v视图视图n从一个或几个基本表导出的表从一个或几个基本表导出的表n数据库中只存放视图的定义而不存放视图对应的数据数据库中只存放视图的定义而不存放视图对应的数据n视图是一个虚表视图是一个虚表n用户可以在视图上再定义视图用户可以在视图上再定义视图AnIntroductiontoDatabaseSystem第三章第三章关系数据库标准语言关系数据库标准语言SQL3.1SQL概述概述3.2学生学生-课程数据库课程数据库3.3数据定义数据定义3.4数据查询数据查询3.5数据更新数据更新3.6视图视图3.7小结小结AnIntroductiontoDatabaseSystem3.2学生学生-课程课程数据库数据库v学生学生-课程模式课程模式S-T:学生表:学生表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:学生选课表:SC(Sno,Cno,Grade)AnIntroductiontoDatabaseSystemStudent表表学学号号Sno姓姓名名Sname性性别别Ssex年年龄龄Sage所所在在系系Sdept200215121200215122200215123200515125李勇李勇刘晨刘晨王敏王敏张立张立男男女女女女男男20191819CSCSMAISAnIntroductiontoDatabaseSystemCourse表表课程号课程号Cno课程名课程名Cname先行课先行课Cpno学分学分Ccredit1234567数据库数据库数学数学信息系统信息系统操作系统操作系统数据结构数据结构数据处理数据处理PASCAL语言语言516764243424AnIntroductiontoDatabaseSystemSC表表学学号号Sno课程号课程号Cno成绩成绩Grade200215121200215121200215121200215122200215122123239285889080AnIntroductiontoDatabaseSystem第三章第三章关系数据库标准语言关系数据库标准语言SQL3.1SQL概述概述3.2学生学生-课程数据库课程数据库3.3数据定义数据定义3.4数据查询数据查询3.5数据更新数据更新3.6视图视图3.7小结小结AnIntroductiontoDatabaseSystem3.3数据定义数据定义SQL的数据定义功能的数据定义功能:模式定义、表定义、视图和索引的定义模式定义、表定义、视图和索引的定义 AnIntroductiontoDatabaseSystem三级模式三级模式AnIntroductiontoDatabaseSystem数据定义概述数据定义概述vSQL的数据定义功能的数据定义功能定义表定义表(模式模式)创建表创建表删除表删除表修改表定义修改表定义定义视图定义视图(外模式外模式)创建视图创建视图删除视图删除视图间接修改视图定义:删除间接修改视图定义:删除+创建创建AnIntroductiontoDatabaseSystem数据定义概述数据定义概述(续续)vSQL的数据定义功能(续)的数据定义功能(续)定义索引定义索引(内模式内模式)创建索引创建索引删除索引删除索引间接修改索引定义:删除间接修改索引定义:删除+创建创建AnIntroductiontoDatabaseSystem3.3数据定义数据定义v3.3.1模式的定义与删除模式的定义与删除v3.3.2基本表的定义、删除与修改基本表的定义、删除与修改v3.3.3索引的建立与删除索引的建立与删除AnIntroductiontoDatabaseSystem定义模式(续)定义模式(续)例例1定义一个学生定义一个学生-课程模式课程模式S-TCREATESCHEMA“S-T”AUTHORIZATIONWANG;为用户为用户WANG定义了一个模式定义了一个模式S-T例例2CREATESCHEMAAUTHORIZATIONWANG;隐含为用户名隐含为用户名WANGn如果没有指定如果没有指定,那么,那么隐含为隐含为AnIntroductiontoDatabaseSystem定义模式(续)定义模式(续)v定义模式实际上定义了一个定义模式实际上定义了一个命名空间v在这个空间中可以定义该模式包含的数据库对象,例如基本表、在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。视图、索引等。v在在CREATESCHEMA中可以接受中可以接受CREATETABLE,CREATEVIEW和和GRANT子句。子句。CREATESCHEMAAUTHORIZATION|AnIntroductiontoDatabaseSystem定义模式(续)定义模式(续)例例3CREATESCHEMATESTAUTHORIZATIONZHANGCREATETABLETAB1(COL1SMALLINT,COL2INT,COL3CHAR(20),COL4NUMERIC(10,3),COL5DECIMAL(5,2);为用户为用户ZHANG创建了一个模式创建了一个模式TEST,并在其中定义了一并在其中定义了一个表个表TAB1。AnIntroductiontoDatabaseSystem二、删除模式二、删除模式nDROPSCHEMAnCASCADE(级联级联)删除模式的同时把该模式中所有的数据库对象全部删除删除模式的同时把该模式中所有的数据库对象全部删除nRESTRICT(限制限制)如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。该删除语句的执行。当该模式中没有任何下属的对象时当该模式中没有任何下属的对象时才能执行。才能执行。AnIntroductiontoDatabaseSystem删除模式(续)删除模式(续)例例4DROPSCHEMAZHANGCASCADE;删除模式删除模式ZHANG同时该模式中定义的表同时该模式中定义的表TAB1也被删除也被删除AnIntroductiontoDatabaseSystem3.3数据定义数据定义v3.3.1模式的定义与删除模式的定义与删除v3.3.2基本表的定义、删除与修改基本表的定义、删除与修改v3.3.3索引的建立与删除索引的建立与删除AnIntroductiontoDatabaseSystem3.3.2基本表的定义、删除与修改基本表的定义、删除与修改一、定义基本表一、定义基本表CREATETABLE(,););v如果完整性约束条件涉及到该表的多个属性列,则必须如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表定义在表级上,否则既可以定义在列级也可以定义在表级。级。AnIntroductiontoDatabaseSystem定义基本表(续)定义基本表(续)v表级完整性约束与列级完整性约束表级完整性约束与列级完整性约束v常用完整性约束常用完整性约束主码约束:主码约束:PRIMARYKEY参照完整性约束参照完整性约束:FOREIGNKEY唯一性约束:唯一性约束:UNIQUE非空值约束:非空值约束:NOTNULL取值约束:取值约束:CHECKAnIntroductiontoDatabaseSystem建表语句的处理建表语句的处理AnIntroductiontoDatabaseSystemAnIntroductiontoDatabaseSystem学生表表Student例5 建立“学生”表Student,学号是主码,姓名取值唯一。CREATE TABLE Student (Sno CHAR(9)PRIMARY KEY,/*列级完整性约束条件*/Sname CHAR(20)UNIQUE,/*Sname取唯一值*/Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20);主码主码AnIntroductiontoDatabaseSystem课程表课程表Course 例6 建立一个“课程”表Course CREATE TABLE Course (Cno CHAR(4)PRIMARY KEY,Cname CHAR(40),Cpno CHAR(4),Ccredit SMALLINT,FOREIGN KEY(Cpno)REFERENCES Course(Cno);先修课先修课 Cpno是外码是外码 被参照表是被参照表是Course被参照列是被参照列是CnoAnIntroductiontoDatabaseSystem学生选课表学生选课表SC例7 建立一个“学生选课”表SCCREATETABLESC(SnoCHAR(9),CnoCHAR(4),GradeSMALLINT,PRIMARYKEY(Sno,Cno),/*主码由两个属性构成,必须作为表级完整性进行定义主码由两个属性构成,必须作为表级完整性进行定义*/FOREIGNKEY(Sno)REFERENCESStudent(Sno),/*表级完整性约束条件,表级完整性约束条件,Sno是外码,被参照表是是外码,被参照表是Student*/FOREIGNKEY(Cno)REFERENCESCourse(Cno)/*表级完整性约束条件,表级完整性约束条件,Cno是外码,被参照表是是外码,被参照表是Course*/);AnIntroductiontoDatabaseSystem二、数据类型二、数据类型vSQL中域的概念用中域的概念用数据类型数据类型来实现来实现v定义表的属性时定义表的属性时需要指明其数据类型及长度需要指明其数据类型及长度v选用哪种数据类型选用哪种数据类型n取值范围取值范围n要做哪些运算要做哪些运算AnIntroductiontoDatabaseSystem二、数据类型二、数据类型数据类型数据类型含义含义CHAR(n)长度为长度为n的定长字符串的定长字符串VARCHAR(n)最大长度为最大长度为n的变长字符串的变长字符串INT长整数(也可以写作长整数(也可以写作INTEGER)SMALLINT短整数短整数NUMERIC(p,d)定点数,由定点数,由p位数字(不包括符号、小数点)组成,小数后面有位数字(不包括符号、小数点)组成,小数后面有d位数字位数字REAL取决于机器精度的浮点数取决于机器精度的浮点数Double Precision取决于机器精度的双精度浮点数取决于机器精度的双精度浮点数FLOAT(n)浮点数,精度至少为浮点数,精度至少为n位数字位数字DATE日期,包含年、月、日,格式为日期,包含年、月、日,格式为YYYY-MM-DDTIME时间,包含一日的时、分、秒,格式为时间,包含一日的时、分、秒,格式为HH:MM:SSAnIntroductiontoDatabaseSystem三、模式与表三、模式与表v每一个基本表都属于某一个模式每一个基本表都属于某一个模式v一个模式包含多个基本表一个模式包含多个基本表v定义基本表所属模式定义基本表所属模式n方法一:在表名中明显地给出模式名方法一:在表名中明显地给出模式名Createtable“S-T”.Student(.);/*模式名为模式名为S-T*/Createtable“S-T”.Cource(.);Createtable“S-T”.SC(.);n方法二:在创建模式语句中同时创建表方法二:在创建模式语句中同时创建表n方法三:设置所属的模式方法三:设置所属的模式AnIntroductiontoDatabaseSystem模式与表(续)模式与表(续)v创建基本表(其他数据库对象也一样)时,若没有指定模创建基本表(其他数据库对象也一样)时,若没有指定模式,系统根据式,系统根据搜索路径搜索路径来确定该对象所属的模式来确定该对象所属的模式vRDBMS会使用模式列表中会使用模式列表中第一个存在的模式第一个存在的模式作为数据库作为数据库对象的模式名对象的模式名v若搜索路径中的模式名都不存在,系统将给出错误若搜索路径中的模式名都不存在,系统将给出错误v显示当前的搜索路径:显示当前的搜索路径:SHOWsearch_path;v搜索路径的当前默认值是:搜索路径的当前默认值是:$user,PUBLICAnIntroductiontoDatabaseSystem模式与表(续)模式与表(续)vDBA用户可以设置搜索路径,然后定义基本表用户可以设置搜索路径,然后定义基本表SETsearch_pathTO“S-T”,PUBLIC;CreatetableStudent(.);结果建立了结果建立了S-T.Student基本表。基本表。RDBMS发现搜索路径中第一个模式名发现搜索路径中第一个模式名S-T存在,就把该存在,就把该模式作为基本表模式作为基本表Student所属的模式。所属的模式。AnIntroductiontoDatabaseSystem四、修改基本表四、修改基本表vALTERTABLEADD完整性约束完整性约束DROPALTERCOLUMN;注:在注:在SQL中,更改列名:中,更改列名:SP_RENAME表名表名.原列名原列名,新列名新列名,COLUMNAnIntroductiontoDatabaseSystem修改基本表(续)修改基本表(续)例例8向向Student表增加表增加“入学时间入学时间”列,其数据类型为日期型。列,其数据类型为日期型。ALTERTABLEStudentADDS_entranceDATETIME;不论基本表中原来是否已有数据,新增加的列一律为空值。不论基本表中原来是否已有数据,新增加的列一律为空值。例例9将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。整数。ALTERTABLEStudentALTERCOLUMNSageINT;例例10增加课程名称必须取唯一值的约束条件。增加课程名称必须取唯一值的约束条件。ALTERTABLECourseADDUNIQUE(Cname);AnIntroductiontoDatabaseSystem五、删除基本表五、删除基本表DROPTABLERESTRICT|CASCADEnRESTRICT:删除表是有限制的。删除表是有限制的。欲删除的基本表不能被其他表的约束所引用欲删除的基本表不能被其他表的约束所引用如果存在依赖该表的对象,则此表不能被删除如果存在依赖该表的对象,则此表不能被删除nCASCADE:删除该表没有限制。删除该表没有限制。在删除基本表的同时,相关的依赖对象一起删除在删除基本表的同时,相关的依赖对象一起删除AnIntroductiontoDatabaseSystem删除基本表删除基本表(续续)例例11删除删除Student表表DROPTABLEStudentCASCADE;n基本表定义被删除,数据被删除基本表定义被删除,数据被删除n表上建立的索引、视图、触发器等一般也将被删除表上建立的索引、视图、触发器等一般也将被删除注注意意:在在SQL中中,CASCADERESTRICT出出现现在子表中在子表中AnIntroductiontoDatabaseSystem删除基本表删除基本表(续续)vDROPTABLE基本表删除基本表删除数据、表上的索引都删除数据、表上的索引都删除表上的视图往往仍然保留,但无法引用表上的视图往往仍然保留,但无法引用AnIntroductiontoDatabaseSystem删除基本表删除基本表(续续)vTRUNCATETABLEtruncatetableDepartments;Itremovesallrowsfromatableandreleasethestoragespaceusedbythetable.deletefromDepartments;Itremovesallrowsfromatablebutdoesnotreleasethestoragespaceusedbythetable.AnIntroductiontoDatabaseSystem删除基本表(续)删除基本表(续)例例12若表上建有视图,选择若表上建有视图,选择RESTRICT时表不能删除时表不能删除CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept=IS;DROPTABLEStudentRESTRICT;-ERROR:cannotdroptableStudentbecauseotherobjectsdependonitAnIntroductiontoDatabaseSystem删除基本表(续)删除基本表(续)例例12如果选择如果选择CASCADE时可以删除表,视图也自动被删时可以删除表,视图也自动被删除除DROPTABLEStudentCASCADE;-NOTICE:dropcascadestoviewIS_StudentSELECT*FROMIS_Student;-ERROR:relationIS_StudentdoesnotexistAnIntroductiontoDatabaseSystem删除基本表(续)删除基本表(续)序序号号 标准及主流数据库的处理方式标准及主流数据库的处理方式依赖基本表的对象依赖基本表的对象SQL99Kingbase ESORACLE 9iMS SQLSERVER 2000RCRCC1.索引索引无规定无规定2.视图视图保留保留保留保留保留保留3.DEFAULT,PRIMARY KEY,CHECK(只只含该表的列)含该表的列)NOT NULL 等约束等约束4.Foreign Key5.TRIGGER6.函数或存储过程函数或存储过程保留保留保留保留保留保留保留保留保留保留DROP TABLE时,SQL99 与 3个RDBMS的处理策略比较R表示表示RESTRICT,C表示表示CASCADE 表示不能删除基本表,表示不能删除基本表,表示能删除基本表,表示能删除基本表,保留保留表示删除基本表后,还保留依赖对表示删除基本表后,还保留依赖对象象 AnIntroductiontoDatabaseSystem3.3数据定义数据定义v3.3.1模式的定义与删除模式的定义与删除v3.3.2基本表的定义、删除与修改基本表的定义、删除与修改v3.3.3索引的建立与删除索引的建立与删除AnIntroductiontoDatabaseSystem3.3.3索引的建立与删除索引的建立与删除v建立索引的目的:加快查询速度建立索引的目的:加快查询速度v谁可以建立索引谁可以建立索引DBA或或表的属主(即建立表的人)表的属主(即建立表的人)DBMS一般会自动建立以下列上的索引一般会自动建立以下列上的索引PRIMARYKEYUNIQUEv谁维护索引谁维护索引DBMS自动完成自动完成v使用索引使用索引DBMS自动选择是否使用索引以及使用哪些索引自动选择是否使用索引以及使用哪些索引AnIntroductiontoDatabaseSystem索索引引vRDBMS中索引一般采用中索引一般采用B+树、树、HASH索引来实现索引来实现nB+树索引具有动态平衡的优点树索引具有动态平衡的优点nHASH索引具有查找速度快的特点索引具有查找速度快的特点v采用采用B+树,还是树,还是HASH索引索引则由具体的则由具体的RDBMS来决定来决定v索引是关系数据库的内部实现技术,属于索引是关系数据库的内部实现技术,属于内模式内模式的范畴的范畴vCREATEINDEX语句定义索引时,可以定义索引是唯一语句定义索引时,可以定义索引是唯一索引、非唯一索引或聚簇索引索引、非唯一索引或聚簇索引AnIntroductiontoDatabaseSystem一、建立索引一、建立索引v语句格式语句格式CREATEUNIQUECLUSTERINDEXON(,);用用指定要建索引的基本表名字指定要建索引的基本表名字索索引引可可以以建建立立在在该该表表的的一一列列或或多多列列上上,各各列列名名之之间间用用逗逗号号分分隔隔用用指指定定索索引引值值的的排排列列次次序序,升升序序:ASC,降降序序:DESC。缺省值:。缺省值:ASCUNIQUE表明此索引的每一个索引值只对应唯一的数据记录表明此索引的每一个索引值只对应唯一的数据记录CLUSTER表示要建立的索引是聚簇索引表示要建立的索引是聚簇索引AnIntroductiontoDatabaseSystem建立索引(续)建立索引(续)例例13CREATECLUSTEREDINDEXStusnameONStudent(Sname);在在Student表的表的Sname(姓名)列上建立一个聚簇索引姓名)列上建立一个聚簇索引v在最经常查询的列上建立聚簇索引以提高查询效率在最经常查询的列上建立聚簇索引以提高查询效率v一个基本表上最多只能建立一个聚簇索引一个基本表上最多只能建立一个聚簇索引v经常更新的列不宜建立聚簇索引经常更新的列不宜建立聚簇索引AnIntroductiontoDatabaseSystem建立索引建立索引(续)(续)v唯一值索引唯一值索引对于已含重复值的属性列不能建对于已含重复值的属性列不能建UNIQUE索引索引对对某某个个列列建建立立UNIQUE索索引引后后,插插入入新新记记录录时时DBMS会会自自动动检检查查新新记记录录在在该该列列上上是是否否取取了了重重复复值。这相当于增加了一个值。这相当于增加了一个UNIQUE约束约束AnIntroductiontoDatabaseSystem建立索引建立索引(续(续)v聚簇索引聚簇索引建建立立聚聚簇簇索索引引后后,基基表表中中数数据据也也需需要要按按指指定定的的聚聚簇簇属属性性值值的的升升序序或或降降序序存存放放。也也即即聚聚簇簇索索引引的的索索引引项项顺顺序序与与表表中中记记录的录的物理物理顺序一致顺序一致例:例:CREATECLUSTERDINDEXStusnameONStudent(Sname)在在Student表的表的Sname(姓名)列上建立一个聚簇索引,姓名)列上建立一个聚簇索引,而且而且Student表中的记录表中的记录将按照将按照Sname值的升序存放值的升序存放AnIntroductiontoDatabaseSystem建立索引建立索引(续)(续)在一个基本表上最多只能建立在一个基本表上最多只能建立一个一个聚簇索引聚簇索引聚簇索引的用途:对于某些类型的查询,可以聚簇索引的用途:对于某些类型的查询,可以提高查询效率提高查询效率聚簇索引的适用范围聚簇索引的适用范围很少对基表进行增删操作很少对基表进行增删操作很少对其中的变长列进行修改操作很少对其中的变长列进行修改操作AnIntroductiontoDatabaseSystemClustered/NonclusteredindexAnIntroductiontoDatabaseSystem建立索引(续)建立索引(续)例例14为为学学生生-课课程程数数据据库库中中的的Student,Course,SC三三个个表表建建立索引。立索引。CREATEUNIQUEINDEXStusnoONStudent(Sno);CREATEUNIQUEINDEXCoucnoONCourse(Cno);CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);Student表按学号升序建唯一索引表按学号升序建唯一索引Course表按课程号升序建唯一索引表按课程号升序建唯一索引SC表按学号升序和课程号降序建唯一索引表按学号升序和课程号降序建唯一索引AnIntroductiontoDatabaseSystem二、删除索引二、删除索引vDROPINDEX;删除索引时,系统会从数据字典中删去有关该索引的删除索引时,系统会从数据字典中删去有关该索引的描述。描述。例例15删除删除Student表的表的Stusname索引索引DROPINDEXstudent.Stusname;AnIntroductiontoDatabaseSystem第三章第三章关系数据库标准语言关系数据库标准语言SQL3.1SQL概述概述3.2学生学生-课程数据库课程数据库3.3数据定义数据定义3.4数据查询数据查询3.5数据更新数据更新3.6视图视图3.7小结小结AnIntroductiontoDatabaseSystem3.5数数据据更更新新3.5.1插入数据插入数据3.5.2修改数据修改数据3.5.3删除数据删除数据AnIntroductiontoDatabaseSystem3.5.1插入数据插入数据v两种插入数据方式两种插入数据方式1.插入元组插入元组2.插入子查询结果插入子查询结果可以一次插入多个元组可以一次插入多个元组AnIntroductiontoDatabaseSystem一、插入元组一、插入元组v语句格式语句格式INSERTINTO(,)VALUES(,)v功能功能n将新元组插入指定表中将新元组插入指定表中AnIntroductiontoDatabaseSystem插入元组(续)插入元组(续)vINTO子句子句n属性列的顺序可与表定义中的顺序不一致属性列的顺序可与表定义中的顺序不一致n没有指定属性列没有指定属性列n指定部分属性列指定部分属性列vVALUES子句子句n提供的值必须与提供的值必须与INTO子句匹配子句匹配值的个数值的个数值的类型值的类型AnIntroductiontoDatabaseSystem插入元组(续)插入元组(续)例例1将一个新学生元组(学号:将一个新学生元组(学号:200215128;姓名:陈;姓名:陈冬;性别:男;所在系:冬;性别:男;所在系:IS;年龄:;年龄:18岁)插入到岁)插入到Student表中。表中。INSERTINTOStudent(Sno,Sname,Ssex,Sdept,Sage)VALUES(200215128,陈冬陈冬,男男,IS,18);AnIntroductiontoDatabaseSystem插入元组(续)插入元组(续)例例2将学生张成民的信息插入到将学生张成民的信息插入到Student表中。表中。INSERTINTOStudentVALUES(200215126,张成民张成民,男男,18,CS);AnIntroductiontoDatabaseSystem插入元组(续)插入元组(续)例例3插入一条选课记录插入一条选课记录(200215128,1)。INSERTINTOSC(Sno,Cno)VALUES(200215128,1);RDBMS将在新插入记录的将在新插入记录的Grade列上自动地赋空值。列上自动地赋空值。或者:或者:INSERTINTOSCVALUES(200215128,1,NULL);AnIntroductiontoDatabaseSystem二、插入子查询结果二、插入子查询结果v语句格式语句格式INSERTINTO(,)子查询;子查询;v功能功能将子查询结果插入指定表中将子查询结果插入指定表中AnIntroductiontoDatabaseSystem插入子查询结果(续)插入子查询结果(续)vINTO子句子句(与插入元组类似与插入元组类似)v子查询子查询nSELECT子句目标列必须与子句目标列必须与INTO子句匹配子句匹配值的个数值的个数值的类型值的类型AnIntroductiontoDatabaseSystem插入子查询结果(续)插入子查询结果(续)例例4对每一个系,求学生的平均年龄,并把结果对每一个系,求学生的平均年龄,并把结果存入数据库。存入数据库。第一步:建表第一步:建表CREATETABLEDept_age(SdeptCHAR(15)/*系名系名*/Avg_ageSMALLINT);/*学生平均年龄学生平均年龄*/AnIntroductiontoDatabaseSystem插入子查询结果(续)插入子查询结果(续)第二步:插入数据第二步:插入数据INSERTINTODept_age(Sdept,Avg_age)SELECTSdept,AVG(Sage)FROMStudentGROUPBYSdept;AnIntroductiontoDatabaseSystem插入子查询结果(续)插入子查询结果(续)vRDBMS在执行插入语句时会检查所插元组是否破坏表上已定在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则义的完整性规则实体完整性实体完整性参照完整性参照完整性用户定义的完整性用户定义的完整性NOTNULL约