db_chapter03关系数据库标准语言.ppt
《db_chapter03关系数据库标准语言.ppt》由会员分享,可在线阅读,更多相关《db_chapter03关系数据库标准语言.ppt(190页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、普通高等教育十五规划教材普通高等教育十五规划教材数据库系统概论数据库系统概论主讲:张中军主讲:张中军ftp:/122.206.151.225 用户名:用户名:s_zzj 密码:空密码:空第第3章章 关系数据库标准语言关系数据库标准语言SQL第第3章章 关系数据库标准语言关系数据库标准语言SQLn3.1 引言引言n3.2 数据定义数据定义n3.3 数据查询数据查询n3.4 数据更新数据更新n3.5 视图视图3.1 引言引言引言引言nSQL(Structured Query Language)结构化查询语结构化查询语言言,是关系数据库的,是关系数据库的标准语言标准语言nSQL是一个通用的、功能极强
2、的关系数据库语言是一个通用的、功能极强的关系数据库语言背景背景nSQL语言最早称为语言最早称为Sequel,是,是Boyce和和Chamberlin1974年提出的。年提出的。nSequel不断发展,并更名为不断发展,并更名为SQL由于由于SQLn1974年在年在IBM公司的公司的System R上实现。上实现。n1986年被美国国家标准局(年被美国国家标准局(ANSI)批准为关系数据库语言的美国标准。)批准为关系数据库语言的美国标准。n1987年国际标准化组织(年国际标准化组织(ISO)通过这一标准)通过这一标准n自自SQL-92以来,以来,SQL标准的规模开始变大(标准的规模开始变大(SQ
3、L-89标准大约标准大约120页,页,SQL-92标准超过标准超过620页,而页,而SQL-99标准多达标准多达1700页)。页)。n目前,大多数商品化目前,大多数商品化DBMS支持支持SQL-92主要部分(初级标准和部分中、主要部分(初级标准和部分中、高级的标准),并在其他方面有一些扩展。高级的标准),并在其他方面有一些扩展。nSQL-99扩充太快,过于庞大,扩充太快,过于庞大,DBMS开发商对实现开发商对实现SQL-99似乎不太积似乎不太积极。极。背景背景标准标准 大致页数大致页数 发布日期发布日期nSQL/86 1986.10nSQL/89(FIPS 127-1)120页页 1989年年
4、nSQL/92 622页页 1992年年nSQL99 1700页页 1999年年nSQL2003 3600页页 2003年年SQL概述概述nSQL是一种完整的数据库语言,它提供是一种完整的数据库语言,它提供了丰富的功能了丰富的功能nSQL的使用方式的使用方式nSQL的表的类型的表的类型SQL概述概述(续续)nSQL的功能的功能nSQL的的数据定义语言数据定义语言(DDL)提供了模式定义、修改和)提供了模式定义、修改和删除,基本表定义、修改和删除、域定义修改和删除。删除,基本表定义、修改和删除、域定义修改和删除。nSQL的的数据操纵语言数据操纵语言(DML)提供了数据查询子语言。)提供了数据查询
5、子语言。SQL的数据查询子语言具有关系代数和关系演算的双重的数据查询子语言具有关系代数和关系演算的双重特征。特征。nSQL DML不仅包括数据查询,而且包括不仅包括数据查询,而且包括数据更新数据更新(数据(数据插入、删除和修改)语句,允许用户更新数据库。插入、删除和修改)语句,允许用户更新数据库。nSQL DDL还允许用户还允许用户定义视图定义视图,并且,并且SQL DML允许用允许用户对视图进行查询和受限的更新操作。户对视图进行查询和受限的更新操作。SQL概述概述(续续)nSQL的功能的功能(续续)nSQL DDL允许用户定义允许用户定义各种完整性约束条件各种完整性约束条件,并在数据,并在数
6、据库访问时库访问时自动检查自动检查,确保数据库操作不会破坏完整性约,确保数据库操作不会破坏完整性约束条件。束条件。nSQL DDL还包括还包括授权定义授权定义,用来定义用户对数据库对象,用来定义用户对数据库对象(基本表、视图等)的访问权限,防止非法访问,确保(基本表、视图等)的访问权限,防止非法访问,确保数据库的安全性。数据库的安全性。nSQL还还支持事务支持事务,提供了定义事务开始和结束的语句,提供了定义事务开始和结束的语句nSQL的使用方式的使用方式n独立使用独立使用n嵌入到通用程序设计语言中嵌入到通用程序设计语言中SQL概述概述(续续)nSQL的表的类型的表的类型n基本表(基本表(bas
7、e table)n 持久基本表持久基本表(persistent base table)n 全局临时表(全局临时表(global temporary table)n 局部临时表局部临时表(local temporary table)n导出表导出表 SQL的特点的特点nSQL的特点的特点n集多种数据库语言于一体集多种数据库语言于一体 n高度非过程化高度非过程化 n面向集合的操作方式面向集合的操作方式 n一种语法两种使用方式一种语法两种使用方式 n功能强大,语言简洁功能强大,语言简洁 SQL的特点的特点(续续)n1.集多种数据库语言于一体集多种数据库语言于一体(综合统一)(综合统一)n非关系模型的数
8、据语言一般分为:非关系模型的数据语言一般分为:n模式数据定义语言(模式模式数据定义语言(模式DDL)n外模式数据定义语言(外模式外模式数据定义语言(外模式DDL,子模式,子模式DDL)n数据存储有关的描述语言(数据存储有关的描述语言(DSDL)n数据操纵语言(数据操纵语言(DML)n当用户数据库投入运行后,如果要修改模式,必须停当用户数据库投入运行后,如果要修改模式,必须停止运行,转储数据,修改模式并编译后再重装数据库止运行,转储数据,修改模式并编译后再重装数据库SQL的特点的特点(续续)n1.集多种数据库语言于一体集多种数据库语言于一体(续续)nSQL语言集数据定义语言(语言集数据定义语言(
9、DDL),数据操纵语言),数据操纵语言(DML),数据控制语言(),数据控制语言(DCL)功能于一体。)功能于一体。n可以独立完成数据库生命周期中的全部活动可以独立完成数据库生命周期中的全部活动n定义关系模式,插入数据,建立数据库;定义关系模式,插入数据,建立数据库;n 对数据库中的数据进行查询和更新;对数据库中的数据进行查询和更新;n 数据库重构和维护数据库重构和维护n 数据库安全性、完整性控制等数据库安全性、完整性控制等n用户数据库投入运行后,可根据需要随时逐步修改模式,用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行。不影响数据的运行。n数据操作符统一,查找、插入、删除
10、、更新等只需一种数据操作符统一,查找、插入、删除、更新等只需一种操作符操作符SQL的特点的特点(续续)n2.高度非过程化高度非过程化n非关系数据模型的数据操纵语言非关系数据模型的数据操纵语言“面向过程面向过程”,必须使,必须使用类似于指针的机制,指定存取路径用类似于指针的机制,指定存取路径nSQL只要提出只要提出“做什么做什么”,无须了解存取路径。,无须了解存取路径。n例如,使用例如,使用SQL语言表达查询时,用户只需要正确地语言表达查询时,用户只需要正确地表达需要哪些信息,这些信息在哪些关系中,结果元表达需要哪些信息,这些信息在哪些关系中,结果元组应当满足什么条件组应当满足什么条件 n系统将
11、考察多种执行方案,选择并运行一个最优的执行系统将考察多种执行方案,选择并运行一个最优的执行方案得到结果。方案得到结果。n大大减轻了用户负担大大减轻了用户负担n有利于提高数据的独立性有利于提高数据的独立性 SQL的特点的特点(续续)n3.面向集合的操作方式面向集合的操作方式n非关系数据模型采用面向记录的操作方式,操作非关系数据模型采用面向记录的操作方式,操作对象是一条记录对象是一条记录nSQL采用集合操作方式采用集合操作方式n 操作对象、查找结果可以是元组的集合操作对象、查找结果可以是元组的集合n 一次插入、删除、更新操作的对象可以是元一次插入、删除、更新操作的对象可以是元组的集合组的集合SQL
12、的特点的特点(续续)n4.一种语法两种使用方式一种语法两种使用方式 nSQL是独立的语言是独立的语言n能够独立地用于联机交互的使用方式能够独立地用于联机交互的使用方式nSQL又是嵌入式语言又是嵌入式语言n SQL能够嵌入到高级语言(例如能够嵌入到高级语言(例如C,C+,Java)程)程序中,供程序员设计程序时使用序中,供程序员设计程序时使用SQL的特点的特点(续续)n5.功能强大功能强大,语言简洁语言简洁nSQL是一种完整地数据库语言,其功能涵盖数据定义、是一种完整地数据库语言,其功能涵盖数据定义、数据操纵、数据控制等数据管理的主要需求。数据操纵、数据控制等数据管理的主要需求。n但但SQL语言
13、相对比较简洁,其核心动词只有语言相对比较简洁,其核心动词只有9个(个(p81)。)。nSQL 语言的语法简单,与英语口语的风格类似,易学易语言的语法简单,与英语口语的风格类似,易学易用。用。3.2 数据定义数据定义3.2 数据定义数据定义nSQL的数据定义语言的数据定义语言DDL包括定义模式、关系包括定义模式、关系(SQL称之为基本表)、视图、索引、授权等。称之为基本表)、视图、索引、授权等。n本节介绍如何定义基本表、索引和模式,本节介绍如何定义基本表、索引和模式,n3.6节将介绍如何定义和使用视图,节将介绍如何定义和使用视图,n授权定义将在后面章节讨论授权定义将在后面章节讨论SQL的数据类型
14、的数据类型nSQL支持许多内置的数据类型支持许多内置的数据类型n允许用户定义新的域(数据)类型。允许用户定义新的域(数据)类型。nSQL支持的数据类型包括支持的数据类型包括nCHARACTERnCHARACTER VARYINGnBITnBIT VARYINGnINTEGERnSMALLINTSQL的数据类型的数据类型(续续)nSQL支持的数据类型支持的数据类型nNUMERICnFLOATnREALnDOUBLE PRECISIONnDATETIMEnTIMESTAMPnINTERVALSQL的数据类型的数据类型(续续)nCHAR(n):定长字符串,长度:定长字符串,长度n由用户指定。省略由用
15、户指定。省略(n)时,时,长度为长度为1。CHAR的全称是的全称是CHARACTER。nVARCHAR(n):变长字符串,最大长度:变长字符串,最大长度n由用户指定。由用户指定。VARCHAR的全称是的全称是CHARACTER VARYINGn定长和变长字符串的差别主要表现在前者需要固定长度定长和变长字符串的差别主要表现在前者需要固定长度的空间,而后者占用的空间在最大长度范围内是可改变的空间,而后者占用的空间在最大长度范围内是可改变的。的。nBIT(n):定长二进位串,长度:定长二进位串,长度n由用户指定。省略由用户指定。省略(n)时,长时,长度为度为1。nBIT VARYING(n):变长二
16、进位串,最大长度:变长二进位串,最大长度n由用户指定。由用户指定。SQL的数据类型的数据类型(续续)nINT:整数,其值域依赖于具体实现。整数,其值域依赖于具体实现。INT的全称是的全称是INTEGER。nSMALLINT:小整数,其值域依赖于具体实现,但小于小整数,其值域依赖于具体实现,但小于INT的值域的值域nNUMERIC(p,d):p位有效数字的定点数,其中小数点右边位有效数字的定点数,其中小数点右边占占d位。位。nFLOAT(n):精度至少为:精度至少为n位数字的浮点数,其值域依赖于位数字的浮点数,其值域依赖于实现。实现。nREAL:实数,精度依赖于实现。:实数,精度依赖于实现。nD
17、OUBLE PRECISION:双精度实数,精度依赖于实现,但:双精度实数,精度依赖于实现,但精度比精度比REAL高。高。SQL的数据类型的数据类型(续续)nDATETIME:日期时间,包括年、月、日、时、分、秒,:日期时间,包括年、月、日、时、分、秒,格式为格式为YYYY-MM-DD hh-mm-ss。nTIMESTAMP:时间戳,是:时间戳,是DATE和和TIME的结合的结合nINTERVAL:时间间隔。:时间间隔。SQL允许对允许对DATE、TIME和和INTERVAL类型的值进行计算。类型的值进行计算。SQL的数据类型的数据类型(续续)nSQL提供提供DATEPART(field,Va
18、r),从,从DATETIME类型变量类型变量Var中提取字段中提取字段field。n对于对于DATETIME类型的变量,类型的变量,field可以是可以是YEAR、MONTH、DAY、HOUR、MINUTE、SECOND;n例如,如果例如,如果d是是DATETIME类型,则类型,则DATEPART(YEAR,d)返回返回d中的年份。中的年份。定义、修改和删除基本表定义、修改和删除基本表n说明说明:n本章,我们将本章,我们将“表表”和和“关系关系”视为同义词(尽视为同义词(尽管它们实际上有差别)管它们实际上有差别)n将将“属性属性”、“属性列属性列”和和“列列”视为同义词视为同义词n使用使用“元
19、组元组”或或“记录记录”表示表的行。表示表的行。n术语术语“基本表基本表”主要用于表示持久基本表,而主要用于表示持久基本表,而“表表”泛指基本表和导出表(包括视图)泛指基本表和导出表(包括视图)定义、修改和删除基本表定义、修改和删除基本表(续续)n符号约定符号约定 n表示表示X是需要进一步定义或说明语言成分。是需要进一步定义或说明语言成分。nX表示表示X可以缺省或出现一次。可以缺省或出现一次。nX表示表示X可以出现一次。可以出现一次。nX|Y表示或者表示或者X出现,或者出现,或者Y出现,但二者不能同时出现。出现,但二者不能同时出现。nSQL语言的保留字(如语言的保留字(如CREATE)不区分大
20、小写。为醒)不区分大小写。为醒目起见,对于目起见,对于SQL语句中的语句中的SQL的保留字,我们使用大的保留字,我们使用大写。写。nSQL语句用语句用分号分号结束。一个结束。一个SQL语句可以写在一行或多行中,语句可以写在一行或多行中,各种空白符号用于分隔不同的词。良好的语句的书写风格使各种空白符号用于分隔不同的词。良好的语句的书写风格使得程序赏心悦目、易于阅读。得程序赏心悦目、易于阅读。定义基本表定义基本表n创建一个基本表要对基本表创建一个基本表要对基本表命名命名,定义表的每个列,并定义,定义表的每个列,并定义表的表的完整性约束条件完整性约束条件。nSQL语言使用语言使用CREATE TAB
21、LE语句创建基本表,其基本格语句创建基本表,其基本格式如下:式如下:CREATE TABLE (,);n是标识符,对定义的基本表命名;是标识符,对定义的基本表命名;n圆括号中包括一个或多个圆括号中包括一个或多个,零个或多个,零个或多个,中间用,中间用逗号逗号隔开隔开 定义基本表定义基本表(续续)n定义每个属性(列)的名称、类型、缺省值和定义每个属性(列)的名称、类型、缺省值和列上的约束条件,格式如下:列上的约束条件,格式如下:n DEFAULT ,n其中,其中,是标识符,对定义的列命名;是标识符,对定义的列命名;n定义列的取值类型,它可以是定义列的取值类型,它可以是3.2.1节介绍的任节介绍的
22、任意类型,也可以是用户定义的域类型(见意类型,也可以是用户定义的域类型(见5.3节);节);n可选短语可选短语“DEFAULT”定义列上的缺省值,定义列上的缺省值,是是中的一个特定值或中的一个特定值或NULL;n每个列上可以定义零个或多个约束条件,约束列的取每个列上可以定义零个或多个约束条件,约束列的取值值定义基本表定义基本表(续续)n列约束定义格式如下列约束定义格式如下CONSTRAINT n其中可选短语其中可选短语“CONSTRAINT”为列约束命名为列约束命名n常用的列约束包括:常用的列约束包括:nNOT NULL:不允许该列取空值:不允许该列取空值n不加不加NOT NULL限制时,该列
23、可以取空值。限制时,该列可以取空值。nPRIMARY KEY:指明该列是主码,值非空、惟一。:指明该列是主码,值非空、惟一。nUNIQUE:该列上的值必须惟一:该列上的值必须惟一n相当于说明该列为候选码。相当于说明该列为候选码。nCHECK():指明该列的值必须满足的条件,:指明该列的值必须满足的条件,其中其中是一个涉及该列的布尔表达式是一个涉及该列的布尔表达式定义基本表定义基本表(续续)n一个表可以包含零个或多个一个表可以包含零个或多个,用于定义主码、,用于定义主码、其他候选码、外码和表上的其它约束。表约束定义定义形式其他候选码、外码和表上的其它约束。表约束定义定义形式如下:如下:CONST
24、RAINT n其中可选短语其中可选短语“CONSTRAINT”为表约束命名为表约束命名 nPRIMARY KEY(A1,Ak):说明属性列:说明属性列A1,Ak构构成该关系的主码。当主码只包含一个属性时,也可以用成该关系的主码。当主码只包含一个属性时,也可以用列约束定义主码。列约束定义主码。nUNIQUE(A1,Ak):说明属性:说明属性A1,Ak上值必须惟上值必须惟一一n相当于说明相当于说明A1,Ak构成该关系的候选码构成该关系的候选码n当候选码只包含一个属性时,也可以用列约束定义候当候选码只包含一个属性时,也可以用列约束定义候选码。选码。定义基本表定义基本表(续续)nCHECK():说明该
25、表上的一个完整性约束条件。:说明该表上的一个完整性约束条件。通常,通常,是一个涉及该表一个或多个列的布尔表达是一个涉及该表一个或多个列的布尔表达式式n外码比较复杂,它具有如下形式:外码比较复杂,它具有如下形式:FOREIGN KEY(A1,Ak)REFERENCES ()n属性属性A1,Ak是关系(表)的外码是关系(表)的外码n给出被参照关系的表名给出被参照关系的表名n给出被参照关系的主码给出被参照关系的主码n说明违反参照完整性时需要采取的措施说明违反参照完整性时需要采取的措施定义基本表定义基本表(续续)n例例3.1 下面的语句创建教师表下面的语句创建教师表TeachersCREATE TAB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- db_chapter03 关系 数据库 标准 语言
限制150内