您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > chapter03关系数据库标准语言
普通高等教育十五规划教材数据库系统概论主讲:张中军用户名:s_zzj密码:空第3章关系数据库标准语言SQL第3章关系数据库标准语言SQL3.1引言3.2数据定义3.3数据查询3.4数据更新3.5视图3.1引言引言SQL(StructuredQueryLanguage)结构化查询语言,是关系数据库的标准语言SQL是一个通用的、功能极强的关系数据库语言背景SQL语言最早称为Sequel,是Boyce和Chamberlin1974年提出的。Sequel不断发展,并更名为SQL由于SQL1974年在IBM公司的SystemR上实现。1986年被美国国家标准局(ANSI)批准为关系数据库语言的美国标准。1987年国际标准化组织(ISO)通过这一标准自SQL-92以来,SQL标准的规模开始变大(SQL-89标准大约120页,SQL-92标准超过620页,而SQL-99标准多达1700页)。目前,大多数商品化DBMS支持SQL-92主要部分(初级标准和部分中、高级的标准),并在其他方面有一些扩展。SQL-99扩充太快,过于庞大,DBMS开发商对实现SQL-99似乎不太积极。背景标准大致页数发布日期SQL/861986.10SQL/89(FIPS127-1)120页1989年SQL/92622页1992年SQL991700页1999年SQL20033600页2003年SQL概述SQL是一种完整的数据库语言,它提供了丰富的功能SQL的使用方式SQL的表的类型SQL概述(续)SQL的功能SQL的数据定义语言(DDL)提供了模式定义、修改和删除,基本表定义、修改和删除、域定义修改和删除。SQL的数据操纵语言(DML)提供了数据查询子语言。SQL的数据查询子语言具有关系代数和关系演算的双重特征。SQLDML不仅包括数据查询,而且包括数据更新(数据插入、删除和修改)语句,允许用户更新数据库。SQLDDL还允许用户定义视图,并且SQLDML允许用户对视图进行查询和受限的更新操作。SQL概述(续)SQL的功能(续)SQLDDL允许用户定义各种完整性约束条件,并在数据库访问时自动检查,确保数据库操作不会破坏完整性约束条件。SQLDDL还包括授权定义,用来定义用户对数据库对象(基本表、视图等)的访问权限,防止非法访问,确保数据库的安全性。SQL还支持事务,提供了定义事务开始和结束的语句SQL的使用方式独立使用嵌入到通用程序设计语言中SQL概述(续)SQL的表的类型基本表(basetable)持久基本表(persistentbasetable)全局临时表(globaltemporarytable)局部临时表(localtemporarytable)导出表SQL的特点SQL的特点集多种数据库语言于一体高度非过程化面向集合的操作方式一种语法两种使用方式功能强大,语言简洁SQL的特点(续)1.集多种数据库语言于一体(综合统一)非关系模型的数据语言一般分为:模式数据定义语言(模式DDL)外模式数据定义语言(外模式DDL,子模式DDL)数据存储有关的描述语言(DSDL)数据操纵语言(DML)当用户数据库投入运行后,如果要修改模式,必须停止运行,转储数据,修改模式并编译后再重装数据库SQL的特点(续)1.集多种数据库语言于一体(续)SQL语言集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。可以独立完成数据库生命周期中的全部活动定义关系模式,插入数据,建立数据库;对数据库中的数据进行查询和更新;数据库重构和维护数据库安全性、完整性控制等用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行。数据操作符统一,查找、插入、删除、更新等只需一种操作符SQL的特点(续)2.高度非过程化非关系数据模型的数据操纵语言“面向过程”,必须使用类似于指针的机制,指定存取路径SQL只要提出“做什么”,无须了解存取路径。例如,使用SQL语言表达查询时,用户只需要正确地表达需要哪些信息,这些信息在哪些关系中,结果元组应当满足什么条件系统将考察多种执行方案,选择并运行一个最优的执行方案得到结果。大大减轻了用户负担有利于提高数据的独立性SQL的特点(续)3.面向集合的操作方式非关系数据模型采用面向记录的操作方式,操作对象是一条记录SQL采用集合操作方式操作对象、查找结果可以是元组的集合一次插入、删除、更新操作的对象可以是元组的集合SQL的特点(续)4.一种语法两种使用方式SQL是独立的语言能够独立地用于联机交互的使用方式SQL又是嵌入式语言SQL能够嵌入到高级语言(例如C,C++,Java)程序中,供程序员设计程序时使用SQL的特点(续)5.功能强大,语言简洁SQL是一种完整地数据库语言,其功能涵盖数据定义、数据操纵、数据控制等数据管理的主要需求。但SQL语言相对比较简洁,其核心动词只有9个(p81)。SQL语言的语法简单,与英语口语的风格类似,易学易用。3.2数据定义3.2数据定义SQL的数据定义语言DDL包括定义模式、关系(SQL称之为基本表)、视图、索引、授权等。本节介绍如何定义基本表、索引和模式,3.6节将介绍如何定义和使用视图,授权定义将在后面章节讨论SQL的数据类型SQL支持许多内置的数据类型允许用户定义新的域(数据)类型。SQL支持的数据类型包括CHARACTERCHARACTERVARYINGBITBITVARYINGINTEGERSMALLINTSQL的数据类型(续)SQL支持的数据类型NUMERICFLOATREALDOUBLEPRECISIONDATETIMETIMESTAMPINTERVALSQL的数据类型(续)CHAR(n):定长字符串,长度n由用户指定。省略(n)时,长度为1。CHAR的全称是CHARACTER。VARCHAR(n):变长字符串,最大长度n由用户指定。VARCHAR的全称是CHARACTERVARYING定长和变长字符串的差别主要表现在前者需要固定长度的空间,而后者占用的空间在最大长度范围内是可改变的。BIT(n):定长二进位串,长度n由用户指定。省略(n)时,长度为1。BITVARYING(n):变长二进位串,最大长度n由用户指定。SQL的数据类型(续)INT:整数,其值域依赖于具体实现。INT的全称是INTEGER。SMALLINT:小整数,其值域依赖于具体实现,但小于INT的值域NUMERIC(p,d):p位有效数字的定点数,其中小数点右边占d位。FLOAT(n):精度至少为n位数字的浮点数,其值域依赖于实现。REAL:实数,精度依赖于实现。DOUBLEPRECISION:双精度实数,精度依赖于实现,但精度比REAL高。SQL的数据类型(续)DATETIME:日期时间,包括年、月、日、时、分、秒,格式为YYYY-MM-DDhh-mm-ss。TIMESTAMP:时间戳,是DATE和TIME的结合INTERVAL:时间间隔。SQL允许对DATE、TIME和INTERVAL类型的值进行计算。SQL的数据类型(续)SQL提供DATEPART(field,Var),从DATETIME类型变量Var中提取字段field。对于DATETIME类型的变量,field可以是YEAR、MONTH、DAY、HOUR、MINUTE、SECOND;例如,如果d是DATETIME类型,则DATEPART(YEAR,d)返回d中的年份。定义、修改和删除基本表说明:本章,我们将“表”和“关系”视为同义词(尽管它们实际上有差别)将“属性”、“属性列”和“列”视为同义词使用“元组”或“记录”表示表的行。术语“基本表”主要用于表示持久基本表,而“表”泛指基本表和导出表(包括视图)定义、修改和删除基本表(续)符号约定X表示X是需要进一步定义或说明语言成分。[X]表示X可以缺省或出现一次。{X}表示X可以出现一次。X|Y表示或者X出现,或者Y出现,但二者不能同时出现。SQL语言的保留字(如CREATE)不区分大小写。为醒目起见,对于SQL语句中的SQL的保留字,我们使用大写。SQL语句用分号结束。一个SQL语句可以写在一行或多行中,各种空白符号用于分隔不同的词。良好的语句的书写风格使得程序赏心悦目、易于阅读。定义基本表创建一个基本表要对基本表命名,定义表的每个列,并定义表的完整性约束条件。SQL语言使用CREATETABLE语句创建基本表,其基本格式如下:CREATETABLE表名(列定义,…,列定义[列约束][,表约束定义,…,表约束定义]);表名是标识符,对定义的基本表命名;圆括号中包括一个或多个列定义,零个或多个表约束定义,中间用逗号隔开定义基本表(续)列定义定义每个属性(列)的名称、类型、缺省值和列上的约束条件,格式如下:列名类型[DEFAULT缺省值][列约束定义,…,列约束定义]其中,列名是标识符,对定义的列命名;类型定义列的取值类型,它可以是3.2.1节介绍的任意类型,也可以是用户定义的域类型(见5.3节);可选短语“DEFAULT缺省值”定义列上的缺省值,缺省值是类型中的一个特定值或NULL;每个列上可以定义零个或多个约束条件,约束列的取值定义基本表(续)列约束定义格式如下[CONSTRAINT约束名]列约束其中可选短语“CONSTRAINT约束名”为列约束命名常用的列约束包括:NOTNULL:不允许该列取空值不加NOTNULL限制时,该列可以取空值。PRIMARYKEY:指明该列是主码,值非空、惟一。UNIQUE:该列上的值必须惟一相当于说明该列为候选码。CHECK(条件):指明该列的值必须满足的条件,其中条件是一个涉及该列的布尔表达式定义基本表(续)一个表可以包含零个或多个表约束定义,用于定义主码、其他候选码、外码和表上的其它约束。表约束定义定义形式如下:[CONSTRAINT约束名]表约束其中可选短语“CONSTRAINT约束名”为表约束命名PRIMARYKEY(A1,…,Ak):说明属性列A1,…,Ak构成该关系的主码。当主码只包含一个属性时,也可以用列约束定义主码。UNIQUE(A1,…,Ak):说明属性A1,…,Ak上值必须惟一相当于说明A1,…,Ak构成该关系的候选码当候选码只包含一个属性时,也可以用列约束定义候选码。定义基本表(续)CHECK(条件):说明该表上的一个完整性约束条件。通常,条件是一个涉及该表一个或多个列的布尔表达式外码比较复杂,它具有如下形式:FOREIGNKEY(A1,…,Ak)REFERENCES外表名(外表主码)[参照触发动作]属性A1,…,Ak是关系(表)的外码外表名给出被参照关系的表名外表主码给出被参照关系的主码参照触发动作说明违反参照完整性时需要采取的措施定义基本表(续)例3.1下面的语句创建教师表TeachersCREATETABLETeachers(TnoCHAR(7)PRIMARYKEY,TnameCHAR(10)NOTNULL,SexCHAR(2)CHECK(Sex=‘男’ORSex=‘女’),BirthdayDATETIME,TitleCHAR(6),DnoCHAR(4),FOREIGNKEY(Dno)REFERENCESDepartments(Dno));主码列约束表级约束定义基本表(续)创建选课表SC用如下语句:CREATETABLESC(SnoCHAR(9),CnoCHAR(5),GradeSMALLINTCHECK(Grade=0AN
本文标题:chapter03关系数据库标准语言
链接地址:https://www.777doc.com/doc-3246503 .html