(精品)Chapter4.ppt

上传人:s****8 文档编号:68124941 上传时间:2022-12-27 格式:PPT 页数:234 大小:591KB
返回 下载 相关 举报
(精品)Chapter4.ppt_第1页
第1页 / 共234页
(精品)Chapter4.ppt_第2页
第2页 / 共234页
点击查看更多>>
资源描述

《(精品)Chapter4.ppt》由会员分享,可在线阅读,更多相关《(精品)Chapter4.ppt(234页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、普通高等教育十一五规划教材普通高等教育十一五规划教材数据库原理教程数据库原理教程范明、叶阳东、邱保志、职为梅范明、叶阳东、邱保志、职为梅 编著编著科学出版社,科学出版社,2008第第4章章 关系数据库标准语言关系数据库标准语言SQL第第4章章 关系数据库标准语言关系数据库标准语言SQLn4.1 引言引言n4.2 数据定义数据定义n4.3 数据查询数据查询n4.4 数据更新数据更新n4.5 视图视图n4.6 嵌入式嵌入式SQL4.1 引言引言引言引言nSQL(Structured Query Language)结构化查询语言,是关系数据库的)结构化查询语言,是关系数据库的标准语言标准语言nSQL

2、是一个通用的、功能极强的关系数据库语言是一个通用的、功能极强的关系数据库语言背景背景nSQL语言最早称为语言最早称为Sequel,是,是Boyce和和Chamberlin1974年提出的。年提出的。nSequel不断发展,并更名为不断发展,并更名为SQL由于由于SQL,功能丰富,语言简洁,使用,功能丰富,语言简洁,使用灵活,倍受用户和业界欢迎,被众多计算机公司和软件公司所采用。灵活,倍受用户和业界欢迎,被众多计算机公司和软件公司所采用。n1974年由年由Boyce和和Chamberlin提出,在提出,在IBM公司的公司的System R上实现。上实现。n1986年被美国国家标准局(年被美国国家

3、标准局(ANSI)批准为关系数据库语言的美国标准。)批准为关系数据库语言的美国标准。n1987年国际标准化组织(年国际标准化组织(ISO)通过这一标准)通过这一标准n自自SQL-92以来,以来,SQL标准的规模开始变大(标准的规模开始变大(SQL-89标准大约标准大约120页,页,SQL-92标准超过标准超过620页,而页,而SQL-99标准多达标准多达1700页)。页)。n目前,大多数商品化目前,大多数商品化DBMS支持支持SQL-92主要部分(初级标准和部分中、主要部分(初级标准和部分中、高级的标准),并在其他方面有一些扩展。高级的标准),并在其他方面有一些扩展。nSQL-99扩充太快,过

4、于庞大,扩充太快,过于庞大,DBMS开发商对实现开发商对实现SQL-99似乎不太积似乎不太积极。极。n本书关于本书关于SQL的介绍主要基于的介绍主要基于SQL-92背景背景标准标准 大致页数大致页数 发布日期发布日期nSQL/86 1986.10nSQL/89(FIPS 127-1)120页页 1989年年nSQL/92 622页页 1992年年nSQL99 1700页页 1999年年nSQL2003 360页页 2003年年SQL数据库体系结构要点数据库体系结构要点n一个一个SQL模式是表和约束的集合模式是表和约束的集合n一个表由行集组成,表有基本表、视图、导出表一个表由行集组成,表有基本表

5、、视图、导出表n一个基本表可以跨一个一个基本表可以跨一个/多存储文件,一个存储文件可存放一个多存储文件,一个存储文件可存放一个/多个基多个基本表,每个存储文件与外部存储器上的一个物理文件对应。本表,每个存储文件与外部存储器上的一个物理文件对应。nSQL查询可以对基本表、视图查询查询可以对基本表、视图查询n用户可以是应用程序或终端用户用户可以是应用程序或终端用户基本表基本表基本表基本表文件文件视图视图用户用户SQL概述概述nSQL是一种完整的数据库语言,它提供了丰富的功能是一种完整的数据库语言,它提供了丰富的功能nSQL的使用方式的使用方式nSQL的表的类型的表的类型SQL概述概述(续续)nSQ

6、L的功能的功能nSQL的数据定义语言(的数据定义语言(DDL)提供了模式定义、修改和删除,基本)提供了模式定义、修改和删除,基本表定义、修改和删除、域定义修改和删除。表定义、修改和删除、域定义修改和删除。nSQL的数据操纵语言(的数据操纵语言(DML)提供了数据查询子语言。)提供了数据查询子语言。SQL的数据的数据查询子语言是关系完备的,并且具有关系代数和关系演算的双重特查询子语言是关系完备的,并且具有关系代数和关系演算的双重特征。征。nSQL DML不仅包括数据查询,而且包括数据更新(数据插入、删除不仅包括数据查询,而且包括数据更新(数据插入、删除和修改)语句,允许用户更新数据库。和修改)语

7、句,允许用户更新数据库。nSQL DDL还允许用户定义视图,并且还允许用户定义视图,并且SQL DML允许用户对视图进允许用户对视图进行查询和受限的更新操作。行查询和受限的更新操作。SQL概述概述(续续)nSQL的功能的功能(续续)nSQL DDL允许用户定义各种完整性约束条件,并在数据库访问时自允许用户定义各种完整性约束条件,并在数据库访问时自动检查,确保数据库操作不会破坏完整性约束条件。动检查,确保数据库操作不会破坏完整性约束条件。nSQL DDL还包括授权定义,用来定义用户对数据库对象(基本表、还包括授权定义,用来定义用户对数据库对象(基本表、视图等)的访问权限,防止非法访问,确保数据库

8、的安全性。视图等)的访问权限,防止非法访问,确保数据库的安全性。nSQL还支持事务,提供了定义事务开始和结束的语句还支持事务,提供了定义事务开始和结束的语句nSQL不是应用开发语言,只提供对数据库的操作功能,不能完成对不是应用开发语言,只提供对数据库的操作功能,不能完成对屏幕的控制、菜单管理、报表生成屏幕的控制、菜单管理、报表生成nSQL的使用方式的使用方式n独立使用独立使用n嵌入到通用程序设计语言中嵌入到通用程序设计语言中SQL概述概述(续续)nSQL的表的类型的表的类型n基本表(基本表(base table)n 持久基本表(持久基本表(persistent base table)n 全局临

9、时表(全局临时表(global temporary table)n 局部临时表局部临时表(local temporary table)n导出表:根据查询表达式,由一个或多个基本表直接或间接导出导出表:根据查询表达式,由一个或多个基本表直接或间接导出 n视图:命名的导出表视图:命名的导出表SQL的特点的特点nSQL的特点的特点n集多种数据库语言于一体集多种数据库语言于一体 n高度非过程化高度非过程化 n面向集合的操作方式面向集合的操作方式 n一种语法两种使用方式一种语法两种使用方式 n功能强大,语言简洁功能强大,语言简洁 SQL的特点的特点(续续)n1.集多种数据库语言于一体(综合统一)集多种数

10、据库语言于一体(综合统一)n非关系模型的数据语言一般分为:非关系模型的数据语言一般分为:n模式数据定义语言(模式模式数据定义语言(模式DDL)n外模式数据定义语言(外模式外模式数据定义语言(外模式DDL,子模式,子模式DDL)n数据存储有关的描述语言(数据存储有关的描述语言(DSDL)n数据操纵语言(数据操纵语言(DML)n当用户数据库投入运行后,如果要修改模式,必须停止运行,转当用户数据库投入运行后,如果要修改模式,必须停止运行,转储数据,修改模式并编译后再重装数据库储数据,修改模式并编译后再重装数据库SQL的特点的特点(续续)n1.集多种数据库语言于一体集多种数据库语言于一体(续续)nSQ

11、L语言集数据定义语言(语言集数据定义语言(DDL),数据操纵语言(),数据操纵语言(DML),数据),数据控制语言(控制语言(DCL)功能于一体。)功能于一体。n可以独立完成数据库生命周期中的全部活动可以独立完成数据库生命周期中的全部活动n定义关系模式,插入数据,建立数据库;定义关系模式,插入数据,建立数据库;n 对数据库中的数据进行查询和更新;对数据库中的数据进行查询和更新;n 数据库重构和维护数据库重构和维护n 数据库安全性、完整性控制等数据库安全性、完整性控制等n用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行。

12、据的运行。n数据操作符统一,查找、插入、删除、更新等只需一种操作符数据操作符统一,查找、插入、删除、更新等只需一种操作符SQL的特点的特点(续续)n2.高度非过程化高度非过程化n非关系数据模型的数据操纵语言非关系数据模型的数据操纵语言“面向过程面向过程”,必须使用类似于指,必须使用类似于指针的机制,指定存取路径针的机制,指定存取路径nSQL只要提出只要提出“做什么做什么”,无须了解存取路径。,无须了解存取路径。n例如,使用例如,使用SQL语言表达查询时,用户只需要正确地表达需要哪语言表达查询时,用户只需要正确地表达需要哪些信息,这些信息在哪些关系中,结果元组应当满足什么条件些信息,这些信息在哪

13、些关系中,结果元组应当满足什么条件 n系统将考察多种执行方案,选择并运行一个最优的执行方案得到结系统将考察多种执行方案,选择并运行一个最优的执行方案得到结果。果。n大大减轻了用户负担大大减轻了用户负担n有利于提高数据的独立性有利于提高数据的独立性 SQL的特点的特点(续续)n3.面向集合的操作方式面向集合的操作方式n非关系数据模型采用面向记录的操作方式,操作对象是一条记录非关系数据模型采用面向记录的操作方式,操作对象是一条记录nSQL采用集合操作方式采用集合操作方式n 操作对象、查找结果可以是元组的集合操作对象、查找结果可以是元组的集合n 一次插入、删除、更新操作的对象可以是元组的集合一次插入

14、、删除、更新操作的对象可以是元组的集合SQL的特点的特点(续续)n4.一种语法两种使用方式一种语法两种使用方式 nSQL是独立的语言是独立的语言n能够独立地用于联机交互的使用方式能够独立地用于联机交互的使用方式nSQL又是嵌入式语言又是嵌入式语言n SQL能够嵌入到高级语言(例如能够嵌入到高级语言(例如C,C+,Java)程序中,供程)程序中,供程序员设计程序时使用序员设计程序时使用SQL的特点的特点(续续)n5.功能强大语言简洁功能强大语言简洁nSQL是一种完整地数据库语言,其功能涵盖数据定义、数据操纵、是一种完整地数据库语言,其功能涵盖数据定义、数据操纵、数据控制等数据管理的主要需求。数据

15、控制等数据管理的主要需求。n但但SQL语言相对比较简洁,其核心动词只有语言相对比较简洁,其核心动词只有9个。个。nSQL 语言的语法简单,与英语口语的风格类似,易学易用。语言的语法简单,与英语口语的风格类似,易学易用。4.2 数据定义数据定义4.2 数据定义数据定义nSQL的数据定义语言的数据定义语言DDL包括定义模式、域、关系(包括定义模式、域、关系(SQL称之为基本表)称之为基本表)、视图、索引、断言、授权等。、视图、索引、断言、授权等。n本节介绍如何定义基本表、索引和模式,本节介绍如何定义基本表、索引和模式,n4.5节将介绍如何定义和使用视图,节将介绍如何定义和使用视图,n域、断言和授权

16、定义将在第域、断言和授权定义将在第5章讨论章讨论SQL的数据类型的数据类型nSQL支持许多内置的数据类型支持许多内置的数据类型n允许用户定义新的域(数据)类型。允许用户定义新的域(数据)类型。nSQL支持的数据类型包括支持的数据类型包括nCHARACTER(n):长度为:长度为n的定长字符串的定长字符串nCHARACTER VARYING(n):最大长度为最大长度为n的变长字符串的变长字符串nBIT(n):长度为):长度为n的二进制位串的二进制位串nBIT VARYING(n):最大长度为:最大长度为n的变长二进制位串的变长二进制位串nINTEGER:长度为:长度为4BnSMALLINT:长度

17、为长度为2BSQL的数据类型的数据类型(续续)nSQL支持的数据类型支持的数据类型nNUMERIC(p,d):定点数,定点数,p位数字,小数点后位数字,小数点后d位位nDECIMAL:(同上)(同上)n FLOAT(n):浮点数,精度至少浮点数,精度至少n位数字位数字nREAL:浮点数浮点数nDOUBLE PRECISION:双精度浮点数:双精度浮点数nDATE:日期:日期YYYY-MM-DDnTIME:时间:时间HH:MM:SSnTIMESTAMP:时标,即日期时间:时标,即日期时间nINTERVAL:时间间隔:时间间隔SQL的数据类型的数据类型(续续)nCHAR(n):定长字符串,长度:定

18、长字符串,长度n由用户指定。省略由用户指定。省略(n)时,长度为时,长度为1。CHAR的全称是的全称是CHARACTER。nVARCHAR(n):变长字符串,最大长度:变长字符串,最大长度n由用户指定。由用户指定。VARCHAR的全的全称是称是CHARACTER VARYINGn定长和变长字符串的差别主要表现在前者需要固定长度的空间,而定长和变长字符串的差别主要表现在前者需要固定长度的空间,而后者占用的空间在最大长度范围内是可改变的。后者占用的空间在最大长度范围内是可改变的。nBIT(n):定长二进位串,长度:定长二进位串,长度n由用户指定。省略由用户指定。省略(n)时,长度为时,长度为1。n

19、BIT VARYING(n):变长二进位串,最大长度:变长二进位串,最大长度n由用户指定。由用户指定。nINT:整数,其值域依赖于具体实现。整数,其值域依赖于具体实现。INT的全称是的全称是INTEGER。nSMALLINT:小整数,其值域依赖于具体实现,但小于小整数,其值域依赖于具体实现,但小于INT的值域的值域SQL的数据类型的数据类型(续续)nNUMERIC(p,d):p位有效数字的定点数,其中小数点右边占位有效数字的定点数,其中小数点右边占d位。位。nDEC(p,d):p位有效数字的定点数,其中小数点右边占位有效数字的定点数,其中小数点右边占d位。位。DEC的全的全称是称是DECIMA

20、L。nFLOAT(n):精度至少为:精度至少为n位数字的浮点数,其值域依赖于实现。位数字的浮点数,其值域依赖于实现。nREAL:实数,精度依赖于实现。:实数,精度依赖于实现。nDOUBLE PRECISION:双精度实数,精度依赖于实现,但精度比:双精度实数,精度依赖于实现,但精度比REAL高。高。nDATE:日期,包括年、月、日,格式为:日期,包括年、月、日,格式为YYYY-MM-DD。nTIME:时间,包括时、分、秒,格式为:时间,包括时、分、秒,格式为HH:MM:SS。TIME(n)可以表可以表示比秒更小的单位,秒后取示比秒更小的单位,秒后取n位。位。nTIMESTAMP:时间戳,是:时

21、间戳,是DATE和和TIME的结合的结合nINTERVAL:时间间隔。:时间间隔。SQL允许对允许对DATE、TIME和和INTERVAL类型类型的值进行计算。的值进行计算。SQL的数据类型的数据类型(续续)nSQL提供提供ETRACT(field FROM Var),从,从DATE、TIME和和TIMESTAMP类型变量类型变量Var从提取字段从提取字段field。n对于对于DATE类型的变量,类型的变量,field可以是可以是YEAR、MONTH和和DAY;n对于对于TIME类型的变量,类型的变量,field可以是可以是HOUR、MINUTE和和SECOND;n而对于而对于TIMESTAM

22、P类型类型field可以是可以是YEAR、MONTH、DAY、HOUR、MINUTE和和SECONDn例如,如果例如,如果d是是DATE类型,则类型,则ETRACT(YEAR FROM d)返回返回d中的年份。中的年份。定义、修改和删除基本表定义、修改和删除基本表n说明:说明:n本章,我们将本章,我们将“表表”和和“关系关系”视为同义词(尽管它们实际上有差视为同义词(尽管它们实际上有差别)别)n将将“属性属性”、“属性列属性列”和和“列列”视为同义词视为同义词n使用使用“元组元组”或或“记录记录”表示表的行。表示表的行。n术语术语“基本表基本表”主要用于表示持久基本表,而主要用于表示持久基本表

23、,而“表表”泛指基本表和泛指基本表和导出表(包括视图导出表(包括视图)定义、修改和删除基本表定义、修改和删除基本表(续续)n符号约定符号约定 n表示表示X是需要进一步定义或说明语言成分。是需要进一步定义或说明语言成分。nX表示表示X可以缺省或出现一次。可以缺省或出现一次。nX表示表示X可以出现一次。可以出现一次。nX|Y表示或者表示或者X出现,或者出现,或者Y出现,但二者不能同时出现。出现,但二者不能同时出现。nSQL语言的保留字(如语言的保留字(如CREATE)不区分大小写。为醒目起见,对)不区分大小写。为醒目起见,对于于SQL语句中的语句中的SQL的保留字,我们使用大写。的保留字,我们使用

24、大写。nSQL语句用分号结束。一个语句用分号结束。一个SQL语句可以写在一行或多行中,各种空白语句可以写在一行或多行中,各种空白符号用于分隔不同的词。良好的语句的书写风格使得程序赏心悦目、易符号用于分隔不同的词。良好的语句的书写风格使得程序赏心悦目、易于阅读。于阅读。定义基本表定义基本表n创建一个基本表要对基本表命名,定义表的每个列,并定义表的完整性创建一个基本表要对基本表命名,定义表的每个列,并定义表的完整性约束条件。约束条件。nSQL语言使用语言使用CREATE TABLE语句创建基本表,其基本格式如下:语句创建基本表,其基本格式如下:CREATE TABLE (,);n是标识符,对定义的

25、基本表命名;是标识符,对定义的基本表命名;n圆括号中包括一个或多个圆括号中包括一个或多个,零个或多个,零个或多个,中,中间用逗号隔开间用逗号隔开 定义基本表定义基本表(续续)n定义每个属性(列)的名称、类型、缺省值和列上的约束定义每个属性(列)的名称、类型、缺省值和列上的约束条件,格式如下:条件,格式如下:n DEFAULT ,n其中,其中,是标识符,对定义的列命名;是标识符,对定义的列命名;n定义列的取值类型,它可以是定义列的取值类型,它可以是4.2.1节介绍的任意类型,节介绍的任意类型,也可以是用户定义的域类型(见也可以是用户定义的域类型(见5.3节);节);n可选短语可选短语“DEFAU

26、LT”定义列上的缺省值,定义列上的缺省值,是是中的一个特定值或中的一个特定值或NULL(空值);(空值);n每个列上可以定义零个或或多个约束条件,约束列的取值每个列上可以定义零个或或多个约束条件,约束列的取值定义基本表定义基本表(续续)n列约束定义格式如下列约束定义格式如下CONSTRAINT n其中可选短语其中可选短语“CONSTRAINT”为列约束命名为列约束命名n常用的列约束包括:常用的列约束包括:nNOT NULL:不允许该列取空值:不允许该列取空值n不加不加NOT NULL限制时,该列可以取空值。限制时,该列可以取空值。nPRIMARY KEY:指明该列是主码,其值非空、惟一。:指明

27、该列是主码,其值非空、惟一。nUNIQUE:该列上的值必须惟一:该列上的值必须惟一n相当于说明该列为候选码。相当于说明该列为候选码。nCHECK():指明该列的值必须满足的条件,其中:指明该列的值必须满足的条件,其中是一个涉及该列的布尔表达式是一个涉及该列的布尔表达式定义基本表定义基本表(续续)n一个表可以包含零个或多个一个表可以包含零个或多个,用于定义主码、其他候选码、,用于定义主码、其他候选码、外码和表上的其它约束。表约束定义定义形式如下:外码和表上的其它约束。表约束定义定义形式如下:CONSTRAINT n其中可选短语其中可选短语“CONSTRAINT”为表约束命名为表约束命名 nPRI

28、MARYKEY(A1,Ak):说明属性列:说明属性列A1,Ak构成该关系的主构成该关系的主码。当主码只包含一个属性时,也可以用列约束定义主码。码。当主码只包含一个属性时,也可以用列约束定义主码。nUNIQUE(A1,Ak):说明属性列:说明属性列A1,Ak上的值必须惟一上的值必须惟一n相当于说明相当于说明A1,Ak构成该关系的候选码构成该关系的候选码n当候选码只包含一个属性时,也可以用列约束定义候选码。当候选码只包含一个属性时,也可以用列约束定义候选码。nCHECK():说明该表上的一个完整性约束条件。通常,:说明该表上的一个完整性约束条件。通常,是一个涉及该表一个或多个列的布尔表达式是一个涉

29、及该表一个或多个列的布尔表达式定义基本表定义基本表(续续)n外码比较复杂,它具有下形式:外码比较复杂,它具有下形式:FOREIGN KEY(A1,Ak)REFERENCES ()n属性属性A1,Ak是关系(表)的外码是关系(表)的外码n给出被参照关系的表名给出被参照关系的表名n给出被参照关系的主码给出被参照关系的主码n说明违反参照完整性时需要采取的措施(详见第说明违反参照完整性时需要采取的措施(详见第5章)章)定义基本表定义基本表(续续)n例例4.1 下面的语句创建教师表下面的语句创建教师表TeachersCREATE TABLE Teachers (Tno CHAR(7)PRIMARY KE

30、Y,Tname CHAR(10)NOT NULL,Sex CHAR(2)CHECK(Sex=男男 OR Sex=女女),Birthday DATE,Title CHAR(6),Dno CHAR(4),FOREIGN KEY(Dno)REFERENCES Departments(Dno);定义基本表定义基本表(续续)n创建创建选课选课表表SC用如下语句:用如下语句:CREATE TABLE SC(SnoCHAR(9),CnoCHAR(5),Grade SMALLINT CHECK(Grade=0 AND Grade=100),PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sn

31、o)REFERENCES Students(Sno),FOREIGN KEY(Cno)REFERENCES Courses(Cno);定义基本表定义基本表(续续)CREATE TABLE Departments(Dno CHAR(4)PRIMARY KEY,Dname CHAR(10),Dheadno CHAR(7),FOREIGN KEY(Dheadno)REFERENCES Teachers(Tno);CREATE TABLE Students(SnoCHAR(9)PRIMARY KEY,SnameCHAR(10)NOT NULL,Sex CHAR(2)CHECK(Sex=男男 OR Se

32、x=女女),BirthdayDATE,EnrollyearCHAR(4),SpecialityCHAR(20),DnoCHAR(3),FOREIGN KEY(Dno)REFERENCES Department(Dno);定义基本表定义基本表(续续)CREATE TABLE Courses(CnoCHAR(5)PRIMARY KEY,Cname CHAR(20)NOT NULL,PeriodSMALLINT,CreditSMALLINT);CREATE TABLE Teaches(TnoCHAR(7),CnoCHAR(5),TCscoreSMALLINT,PRIMARY KEY(Tno,Cno)

33、,FOREIGN KEY(Tno)REFERENCES Teachers(Tno),FOREIGN KEY(Cno)REFERENCES Courses(Cno);修改基本表修改基本表n基本表创建好以后,在某些情况下需要修改它的结构。基本表创建好以后,在某些情况下需要修改它的结构。nSQL允许允许n添加列定义添加列定义n修改或删除列的缺省值修改或删除列的缺省值n删除列删除列n添加表约束添加表约束n删除表约束。删除表约束。n使用使用ALTER TABLE语句修改基本表语句修改基本表修改基本表修改基本表(续续)n1.向基本表添加新的列向基本表添加新的列 ALTER TABLE ADD COLUMN

34、 nCOLUMN可以省略(下同)可以省略(下同)n和创建基本表相同,但是新添加的列一般不允许用和创建基本表相同,但是新添加的列一般不允许用NOT NULL说明。说明。n2.对于已经存在的列,对于已经存在的列,SQL-92只允许修改或删除列的缺省值,语句形只允许修改或删除列的缺省值,语句形式为:式为:ALTER TABLE ALTER COLUMN SET DEFAULT|DROP DEFAULTnSET DEFAULT 以新的缺省值替换原来的缺省值以新的缺省值替换原来的缺省值nDROP DEFAULT删除缺省值删除缺省值修改基本表修改基本表(续续)n3.删除已存在的列删除已存在的列ALTER

35、TABLE DROP COLUMN CASCADE|RESTRICTnCASCADE表示级联,删除将成功,并且依赖于该列的数据库对象表示级联,删除将成功,并且依赖于该列的数据库对象(如涉及该列的视图)也一并删除(如涉及该列的视图)也一并删除nRESTRICT表示受限,仅当没有依赖于该列的数据库对象时删除才表示受限,仅当没有依赖于该列的数据库对象时删除才能成功能成功n4.添加表约束添加表约束 ALTER TABLE ADD n其中其中与创建基本表相同。与创建基本表相同。修改基本表修改基本表(续续)n5.删除表约束删除表约束 ALTER TABLE DROP CONSTRAINT CASCADE|

36、RESTRICTn其中被删除的约束一定是命名的约束,给出约束名其中被删除的约束一定是命名的约束,给出约束名nCASCADE导致删除约束并且同时删除依赖于该约束的数据库对象导致删除约束并且同时删除依赖于该约束的数据库对象nRESTRICT仅当不存在依赖于该约束的数据库对象时才删除该约束。仅当不存在依赖于该约束的数据库对象时才删除该约束。修改基本表修改基本表(续续)n例例4.2 在在Courses中增加一个新列中增加一个新列Pno,表示课程的先行课的课程号,可,表示课程的先行课的课程号,可以用以用 ALTER TABLE Courses ADD Pno CHAR(5);n在在Students的的S

37、ex列设置缺省值列设置缺省值“女女”可以减少大约一半学生性别的输入。可以减少大约一半学生性别的输入。可以用如下语句来设置缺省值:可以用如下语句来设置缺省值:ALTER TABLE Students ALTER Sex SET DEFAULT 女女;n而删除而删除Sex上的缺省值可以用上的缺省值可以用 ALTER TABLE Students ALTER Sex DROP DEFAULT;n删除删除Courses中的中的Pno列可以用列可以用 ALTER TABLE Courses DROP Pno;删除基本表删除基本表n当不需要某个基本表时,可以使用当不需要某个基本表时,可以使用DROP TA

38、BLE语句将它删除。语句语句将它删除。语句格式为:格式为:DROP TABLE CASCADE RESTRICTnCASCADE表示及联删除,依赖于表的数据对象(最常见的是视图)表示及联删除,依赖于表的数据对象(最常见的是视图)也将一同被删除也将一同被删除nRESTRICT表示受限删除,如果基于该表定义有视图,或者有其他表示受限删除,如果基于该表定义有视图,或者有其他表引用该表(如表引用该表(如CHECK、FOREIGN KEY等约束),或者该表有等约束),或者该表有触发器、存储过程或函数等,则不能删除。触发器、存储过程或函数等,则不能删除。n删除基本表导致存放在表中的数据和表定义都将被彻底删

39、除。删除基本表导致存放在表中的数据和表定义都将被彻底删除。删除基本表删除基本表(续续)n例例4.3 如果用如下语句删除如果用如下语句删除SC表表DROP TABLE SC RESTRICT;n则仅当没有依赖于则仅当没有依赖于SC的任何数据库对象删除才能成功。然而,如果的任何数据库对象删除才能成功。然而,如果用用DROP TABLE SC CASCADE;n则表则表SC和依赖它的数据库对象都被彻底删除和依赖它的数据库对象都被彻底删除n注意:基本表一旦被删除,这种删除是永久的,不可恢复的。基本表中注意:基本表一旦被删除,这种删除是永久的,不可恢复的。基本表中的数据及在该表上建立的视图、索引将全部被

40、删除掉。因此执行删除基的数据及在该表上建立的视图、索引将全部被删除掉。因此执行删除基本表的操作时要格外小心。本表的操作时要格外小心。创建和删除索引创建和删除索引n索引类似于书的目录。索引类似于书的目录。n索引可以加快表之间的连接速度,加快表的排序和分组工作。索引可以加快表之间的连接速度,加快表的排序和分组工作。n索引属于物理存储的路径概念,而不是逻辑的概念。索引属于物理存储的路径概念,而不是逻辑的概念。n索引由索引由DBA或表的属主负责建立和删除,其他用户不能随意建立和删除或表的属主负责建立和删除,其他用户不能随意建立和删除索引。索引。n索引由索引由DBMS自动选择和维护。索引通常分为惟一性索

41、引(每一个索引自动选择和维护。索引通常分为惟一性索引(每一个索引值对应一个数据行)和非惟一性索引;也可以分为聚族索引和非聚族索值对应一个数据行)和非惟一性索引;也可以分为聚族索引和非聚族索引。引。创建索引创建索引n通常,通常,DBMS自动为主码建立索引自动为主码建立索引n其他索引需要用其他索引需要用CREATE INDEX语句创建。创建索引的语句格式为:语句创建。创建索引的语句格式为:CREATE UNIQUE CLUSTER INDEX ON (,)n为建立的索引命名为建立的索引命名n是要建立索引的基本表的名字是要建立索引的基本表的名字n索引可以建在该表的一列或多列上,各列名间用逗号分隔;每

42、个索引可以建在该表的一列或多列上,各列名间用逗号分隔;每个后可以用后可以用指定索引值的排列次序指定索引值的排列次序n次序可以是次序可以是ASC(升序)和(升序)和DESC(降序),缺省值为(降序),缺省值为ASC。创建索引创建索引(续续)nUNIQUE表示该索引为惟一性索引。表示该索引为惟一性索引。UNIQUE缺省时,创建的索引缺省时,创建的索引为非唯一性索引。为非唯一性索引。nCLUSTER表示建立的索引是聚簇索引,缺省时为非聚簇索引。表示建立的索引是聚簇索引,缺省时为非聚簇索引。n创建索引不仅创建索引结构,而且将索引的定义存储在数据字典中。创建索引不仅创建索引结构,而且将索引的定义存储在数

43、据字典中。创建索引创建索引(续续)n例例4.4 在在Students的的Dno上创建一个名为上创建一个名为Student_Dept的索引的索引n可以用:可以用:CREATE INDEX Student_Dept ON Students(Dno);n而在而在Teachers上的上的Dno创建一个名为创建一个名为Teacher-Dept的聚簇索引可以用:的聚簇索引可以用:CREATE CLUSTER INDEX Teacher_Dept ON Teachers(Dno);n注意:学生流动性比较大,注意:学生流动性比较大,Students更新频繁,不适合创建聚簇索更新频繁,不适合创建聚簇索引;而教师

44、相对稳定,可以考虑按所在院系在引;而教师相对稳定,可以考虑按所在院系在Teachers上创建聚簇上创建聚簇索引。索引。删除索引删除索引n索引索引旦建立,就由系统来选择和维护,无需用户干预,但当删除一些旦建立,就由系统来选择和维护,无需用户干预,但当删除一些不必要的索引时,可用下列语句来实现:不必要的索引时,可用下列语句来实现:DROP INDEX n删除索引时,系统将删除索引结构,并同时从数据字典中删去有关删除索引时,系统将删除索引结构,并同时从数据字典中删去有关该索引的定义。该索引的定义。n例例4.5 删除索引删除索引Student_Dept。DROP INDEX Student_Dept;

45、模式的定义和删除模式的定义和删除n支持支持SQL的的DBMS提供了一个提供了一个SQL环境(环境(SQL-environment)。)。nSQL环境包括环境包括n零个或多个目录零个或多个目录n零个或多个用户标识符(称作授权标识符)零个或多个用户标识符(称作授权标识符)n零个或多个模块和目录中的模式描述的零个或多个模块和目录中的模式描述的SQL数据。数据。nDBMS为关系的命名提供了一个三级层次结构为关系的命名提供了一个三级层次结构n顶层由目录(顶层由目录(catalog)组成)组成n每个目录中包含一些模式(每个目录中包含一些模式(schema)n而而SQL对象(关系、视图等)都包含在模式内。对

46、象(关系、视图等)都包含在模式内。模式的定义和删除模式的定义和删除(续续)n注意:注意:nSQL环境中的目录不能重名环境中的目录不能重名n同一目录下的模式不能重名同一目录下的模式不能重名n同一模式下的关系不能重名同一模式下的关系不能重名n一个关系由目录名、模式名和关系名惟一确定,例如一个关系由目录名、模式名和关系名惟一确定,例如nCatalog2.Supply-schema.Suppliersn确定确定Catalog2目录下目录下Supply-schema模式中的模式中的Suppliers关系。如果关关系。如果关系在默认目录的默认模式中,则可以省略目录名和模式名前缀系在默认目录的默认模式中,则

47、可以省略目录名和模式名前缀模式的定义和删除模式的定义和删除(续续)n为了进行数据库操作,首先必须连接到数据库为了进行数据库操作,首先必须连接到数据库n当用户(程序)连接到数据库时,系统为该连接建立一个默认的目当用户(程序)连接到数据库时,系统为该连接建立一个默认的目录和模式。录和模式。n目录的创建、设置和删除依赖于具体实现,不包含在目录的创建、设置和删除依赖于具体实现,不包含在SQL标准中标准中n可以用可以用CREATE SCHEMA和和DROP SCHEMA创建和删除模式创建和删除模式创建模式创建模式n谁有权创建模式依赖于实现谁有权创建模式依赖于实现n通常,通常,DBMS规定只有规定只有DB

48、A和或经和或经DBA授权创建模式的用户才能创授权创建模式的用户才能创建模式建模式n创建模式的语句格式有两种创建模式的语句格式有两种n第一种格式第一种格式CREATE SCHEMA n创建一个以创建一个以命名的模式,并可以在创建模式的同时为该模命名的模式,并可以在创建模式的同时为该模式创建或不创建模式元素。式创建或不创建模式元素。n可以是表定义、视图定义、断言定义、授权定义等。可以是表定义、视图定义、断言定义、授权定义等。n这种格式没有授权其他用户访问创建的模式,以后可以用授权语句这种格式没有授权其他用户访问创建的模式,以后可以用授权语句授权。授权。创建模式创建模式(续续)n第二种格式第二种格式

49、CREATE SCHEMA AUTHORIZATION n与第一种的区别在于它将创建的模式授权予与第一种的区别在于它将创建的模式授权予指定的用户指定的用户n当当缺省时,用缺省时,用作为模式名作为模式名n实际上,创建一个模式就相当于创建一个数据库(微软的实际上,创建一个模式就相当于创建一个数据库(微软的SQL Server用用CREATE DATABSE)。)。创建模式创建模式(续续)n例例4.6 为为WangQiang创建一个名为创建一个名为Supply_schema的模式,可以用:的模式,可以用:CREATE SCHEMA Supply_schema AUTHORIZATION WangQi

50、ang;n所创建的模式在当前目录下,并为所创建的模式在当前目录下,并为WangQiang所拥有所拥有n如果用如果用CREATE SCHEMA Supply_schema;n则创建一个名为则创建一个名为Supply_schema的模式,但未向任何用户授权的模式,但未向任何用户授权n如果用如果用 CREATE SCHEMA AUTHORIZATION WangQiang;n则为则为WangQiang创建一个模式,并用创建一个模式,并用WangQiang命名命名 创建模式创建模式(续续)n还可以在创建模式的同时创建该模式中的对象还可以在创建模式的同时创建该模式中的对象n例如例如CREATE SCHE

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com