您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 61关系数据库标准语言SQL
江南大学2015第3章关系数据库标准语言SQL江南大学2015本章内容3.1SQL语言的基本概念与特点3.2SQL数据定义3.3SQL数据查询3.4SQL数据更新3.5视图3.6SQL数据控制3.7嵌入式SQL语言*习题江南大学20153.1SQL语言的基本概念与特点3.1.1语言的发展及标准化3.1.2SQL语言的基本概念3.1.3SQL语言的主要特点返回本章首页江南大学20153.1.1语言的发展及标准化在70年代初,E.F.Codd首先提出了关系模型。70年代中期,IBM公司在研制SYSTEMR关系数据库管理系统中研制了SQL语言,最早的SQL语言(叫SEQUEL2)是在1976年11月的IBMJournalofR&D上公布的。1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2和SQL/DS数据库系统中也实现了SQL。1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSIX3.135-1986),后为国际标准化组织(ISO)采纳为国际标准。返回本节首页江南大学20153.1.1语言的发展及标准化1989年,美国ANSI采纳在ANSIX3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSISQL89。1992年,ISO又推出了SQL92标准,也称为SQL2.1999年,推出了SQL:1999,也称SQL3,增加了面向对象等的功能。2003年,推出了SQL:2003,增加了XML相关的特性等新功能。2006年,又推出了SQL:2006,全面加强了对XML数据的处理与操作能力。2008年,推出了SQL:2008正在起草中。返回本节首页江南大学20153.1.1语言的发展及标准化结构化查询语言SQL(StructuredQueryLanguage)是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制四个方面,是一个通用的、功能极强的关系数据库语言。目前已成为关系数据库的标准语言,广泛应用于各种数据库。返回本节首页江南大学2015关系数据库三级模式结构SQL语言支持关系数据库三级模式结构,如图3.1所示。其中外模式对应于视图(View)和部分基本表(BaseTable),模式对应于基本表,内模式对应于存储文件。3.1.2SQL语言的基本概念返回本节首页江南大学2015SQL视图1基本表2视图2基本表3基本表4基本表1存储文件1存储文件2外模式模式内模式图3.1数据库三级模式结构返回本节首页江南大学2015图3.2关系数据库三级模式结构示意图返回本节首页江南大学2015基本表是本身独立存在的表,在SQL中一个关系就对应一个表。一些基本表对应一个存储文件,一个表可以有若干索引,索引也存放在存储文件中。视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。存储文件的物理结构及存储方式等组成了关系数据库的内模式。存储文件的物理结构及存储方式等不同数据库管理系统往往是不同的,一般也是不公开的。3.1.2SQL语言的基本概念返回本节首页江南大学2015视图和基本表是SQL语言的主要操作对象,用户可以用SQL语言对视图和基本表进行各种操作。在用户眼中,视图和基本表都是关系表,而存储文件对用户是透明的。3.1.2SQL语言的基本概念返回本节首页江南大学20153.1.3SQL语言的主要特点1、综合统一2、高度非过程化3、面向集合的操作方式4、以同一种语法结构提供两种使用方式5、语言简捷,易学易用返回本节首页江南大学20153.1.3SQL语言的主要特点1、综合统一SQL语言则集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据以建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求,这就为数据库应用系统开发提供了良好的环境,例如用户在数据库投入运行后,还可根据需要随时地逐步地修改模式,而不影响数据库的整体正常运行,从而使系统具有良好的可扩充性。返回本节首页江南大学20153.1.3SQL语言的主要特点2、高度非过程化非关系数据模型的数据操纵语言是面向过程的语言,用其完成某项请求,必须指定存取路径。而用SQL语言进行数据操作,用户只需提出“做什么”,而不必指明“怎么做”,因此用户无需了解存取路径,存取路径的选择以及SQL语句的具体操作过程由系统自动完成。这不但大大减轻了用户负担,而且有利于提高数据独立性。返回本节首页江南大学20153.1.3SQL语言的主要特点3、面向集合的操作方式SQL语言采用集合操作方式,不仅查找结果可以是元组的集合(即关系),而且一次插入、删除、更新操作的对象也可以是元组的集合。非关系数据模型采用的是面向记录的操作方式,任何一个操作其对象都是一条记录。例如查询所有平均成绩在90分以上的学生姓名,用户必须说明完成该请求的具体处理过程,即如何用多重循环结构按照某条路径一条一条地把学生记录及其所有选课记录读出,并计算、判断后选择出来;而关系数据库中,一条SELECT命令就能完成该功能。返回本节首页江南大学20153.1.3SQL语言的主要特点4、以同一种语法结构提供两种使用方式SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言(例如Java、C#、C、COBOL、FORTRAN、PL/1)程序中,供程序员设计程序时使用。而在两种不同的使用方式下,SQL语言的语法结构基本上是一致的。这种以统一的语法结构提供两种不同的使用方式的做法,为用户提供了极大的灵活性与方便性。返回本节首页江南大学20153.1.3SQL语言的主要特点5、语言简捷,易学易用SQL语言功能极强,但由于设计巧妙,语言十分简捷,完成数据查询(SELECT命令)、数据定义(如CREATE、DROP、ALTER等命令)、数据操纵(如INSERT、UPDATE、DELETE等命令)、数据控制(如GRANT、REVOKE等命令)的四大核心功能只用了9个动词。而且SQL语言语法简单,接近英语口语,因此易学易用。返回本节首页江南大学20153.2SQL数据定义SQL语言使用数据定义语言(DataDefinitionLanguage,DDL)实现其数据定义功能,可对数据库用户、基本表、视图和索引等进行定义、修改和删除。3.2.1字段数据类型3.2.2创建、修改和删除数据表3.2.3设计、创建和维护索引返回本章首页江南大学20153.2.1字段数据类型当用SQL语句定义表时,需要为表中的每一个字段或属性设置一个数据类型,用来指定字段所存放的数据是整数、字符串、货币或是其他类型的数据。SQLServer2000(新版本SQLServer数据类型会有所扩展)的数据类型共有26种,分为以下9类。江南大学20153.2.1字段数据类型整数数据类型:bigint,int,smallint,tinyint精确数值类型:numeric,decimal近似浮点数值数据类型:float,real日期时间数据类型:datetime,smalldatetime字符串数据类型:char,varchar,textUnicode字符串数据类型:nchar,nvarchar,ntext江南大学20153.2.1字段数据类型二进制数据类型:binary、varbinary、image货币数据类型:money,smallmoney标记数据类型:timestamp,uniqueidentifier各种数据类型的有关规定参见表3.1。各数据类型的详细说明请参阅相应版本的SQLServer联机帮助。返回本节首页江南大学20153.2.2创建、修改和删除数据表1.定义基本表2.修改基本表3.删除基本表返回本节首页江南大学2015定义基本表CREATETABLE表名(列名数据类型[列级完整性约束条件][,列名数据类型[列级完整性约束条件]]…[,表级完整性约束条件])其中表名是所要定义的基本表的名字,必须是合法的标识符,最多可有128个字符,但本地临时表的表名(名称前有一个编号符#)最多只能包含116个字符。表名不允许重名,一个表可以由一个或多个属性(列)组成。建表的同时通常还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,当用户操作表中数据时由DBMS自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。返回本节首页江南大学2015关系模型的完整性规则(1)实体完整性①主码(PRIMARYKEY)②空值(NULL/NOTNULL)③惟一值(UNIQUE)(2)参照完整性FOREIGNKEY约束指定某一个列或一组列作为外部键(3)用户自定义的完整性约束规则返回本节首页江南大学2015关系模型的完整性规则(1)实体完整性①主码(PRIMARYKEY)主码(PRIMARYKEY):在一个基本表中只能定义一个PRIMARYKEY约束,对于指定为PRIMARYKEY的一个或多个列的组合,其中任何一个列都不能出现空值。PRIMARYKEY既可用于列约束,也可用于表约束。PRIMARYKEY用于定义列约束时语法格式:[CONSTRAINT约束名]PRIMARYKEY[CLUSTERED|NONCLUSTERED][(column_name[ASC|DESC][,...n])]说明:[,...n]表示可以重复,下同。返回本节首页江南大学2015关系模型的完整性规则(1)实体完整性②空值(NULL/NOTNULL)空值不等于0也不等于空白,而是表示不知道、不确定、没有意义的意思,该约束只能用于列约束,语法格式:[CONSTRAINT约束名][NULL|NOTNULL]返回本节首页江南大学2015关系模型的完整性规则(1)实体完整性③惟一值(UNIQUE)表示在某一列或多个列的组合上的取值必须惟一,系统会自动为其建立惟一索引。UNIQUE约束可能于列约束,也可用于表约束,语法格式:[CONSTRAINT约束名]UNIQUE[CLUSTERED|NONCLUSTERED][(column_name[ASC|DESC][,...n])]返回本节首页江南大学2015关系模型的完整性规则(2)参照完整性FOREIGNKEY约束指定某一个或一组列作为外部键,其中,包含外部键的表称为从表,包含外部键引用的主键或惟一键的表称为主表。系统保证从表在外部键上的取值是主表中某一个主键或惟一键值,或者取空值,以此保证两个表之间连接,确保了实体的参照完整性。FOREIGNKEY既可用于列约束,也可用于表约束,其语法格式分别为:[CONSTRAINT约束名]FOREIGNKEYREFERENCES主表名(列名)或[CONSTRAINT约束名]FOREIGNKEY[(从表列名[,...n])]REFERENCES主表名[(主表列名[,...n])][ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}][NOTFORREPLICATION]返回本节首页江南大学2015关系模型的完整性规则(3)用户自定义的完整性约束规则CHECK可用于定义用户自定义的完整性约束规则,CHECK既可用于列约束,也可用于表约束,其语法格式为:[CONSTRAINT约束名]CHECK[NOTFORREPLICATION](条件)返回本节首页江南大学2015完整性示例下面我们以一个“学生-课程”数据库为例来说明,表
本文标题:61关系数据库标准语言SQL
链接地址:https://www.777doc.com/doc-3580550 .html