数据库原理资料.ppt
《数据库原理资料.ppt》由会员分享,可在线阅读,更多相关《数据库原理资料.ppt(234页珍藏版)》请在三一办公上搜索。
1、普通高等教育十一五规划教材数据库原理教程,范明、叶阳东、邱保志、职为梅 编著科学出版社,2008,第4章 关系数据库标准语言SQL,第4章 关系数据库标准语言SQL,4.1 引言4.2 数据定义4.3 数据查询4.4 数据更新4.5 视图4.6 嵌入式SQL,4.1 引言,引言,SQL(Structured Query Language)结构化查询语言,是关系数据库的标准语言SQL是一个通用的、功能极强的关系数据库语言,背景,SQL语言最早称为Sequel,是Boyce和Chamberlin1974年提出的。Sequel不断发展,并更名为SQL由于SQL,功能丰富,语言简洁,使用灵活,倍受用户
2、和业界欢迎,被众多计算机公司和软件公司所采用。1974年由Boyce和Chamberlin提出,在IBM公司的System R上实现。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的介绍主
3、要基于SQL-92,背景,标准 大致页数 发布日期SQL/86 1986.10SQL/89(FIPS 127-1)120页 1989年SQL/92 622页 1992年SQL99 1700页 1999年SQL2003 360页 2003年,SQL数据库体系结构要点,一个SQL模式是表和约束的集合一个表由行集组成,表有基本表、视图、导出表一个基本表可以跨一个/多存储文件,一个存储文件可存放一个/多个基本表,每个存储文件与外部存储器上的一个物理文件对应。SQL查询可以对基本表、视图查询用户可以是应用程序或终端用户,SQL概述,SQL是一种完整的数据库语言,它提供了丰富的功能SQL的使用方式SQL的
4、表的类型,SQL概述(续),SQL的功能SQL的数据定义语言(DDL)提供了模式定义、修改和删除,基本表定义、修改和删除、域定义修改和删除。SQL的数据操纵语言(DML)提供了数据查询子语言。SQL的数据查询子语言是关系完备的,并且具有关系代数和关系演算的双重特征。SQL DML不仅包括数据查询,而且包括数据更新(数据插入、删除和修改)语句,允许用户更新数据库。SQL DDL还允许用户定义视图,并且SQL DML允许用户对视图进行查询和受限的更新操作。,SQL概述(续),SQL的功能(续)SQL DDL允许用户定义各种完整性约束条件,并在数据库访问时自动检查,确保数据库操作不会破坏完整性约束条
5、件。SQL DDL还包括授权定义,用来定义用户对数据库对象(基本表、视图等)的访问权限,防止非法访问,确保数据库的安全性。SQL还支持事务,提供了定义事务开始和结束的语句SQL不是应用开发语言,只提供对数据库的操作功能,不能完成对屏幕的控制、菜单管理、报表生成SQL的使用方式独立使用嵌入到通用程序设计语言中,SQL概述(续),SQL的表的类型基本表(base table)持久基本表(persistent base table)全局临时表(global temporary table)局部临时表(local temporary table)导出表:根据查询表达式,由一个或多个基本表直接或间接导出
6、 视图:命名的导出表,SQL的特点,SQL的特点集多种数据库语言于一体 高度非过程化 面向集合的操作方式 一种语法两种使用方式 功能强大,语言简洁,SQL的特点(续),1.集多种数据库语言于一体(综合统一)非关系模型的数据语言一般分为:模式数据定义语言(模式DDL)外模式数据定义语言(外模式DDL,子模式DDL)数据存储有关的描述语言(DSDL)数据操纵语言(DML)当用户数据库投入运行后,如果要修改模式,必须停止运行,转储数据,修改模式并编译后再重装数据库,SQL的特点(续),1.集多种数据库语言于一体(续)SQL语言集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功
7、能于一体。可以独立完成数据库生命周期中的全部活动定义关系模式,插入数据,建立数据库;对数据库中的数据进行查询和更新;数据库重构和维护 数据库安全性、完整性控制等用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行。数据操作符统一,查找、插入、删除、更新等只需一种操作符,SQL的特点(续),2.高度非过程化非关系数据模型的数据操纵语言“面向过程”,必须使用类似于指针的机制,指定存取路径SQL只要提出“做什么”,无须了解存取路径。例如,使用SQL语言表达查询时,用户只需要正确地表达需要哪些信息,这些信息在哪些关系中,结果元组应当满足什么条件 系统将考察多种执行方案,选择并运行一个最优
8、的执行方案得到结果。大大减轻了用户负担有利于提高数据的独立性,SQL的特点(续),3.面向集合的操作方式非关系数据模型采用面向记录的操作方式,操作对象是一条记录SQL采用集合操作方式 操作对象、查找结果可以是元组的集合 一次插入、删除、更新操作的对象可以是元组的集合,SQL的特点(续),4.一种语法两种使用方式 SQL是独立的语言能够独立地用于联机交互的使用方式SQL又是嵌入式语言 SQL能够嵌入到高级语言(例如C,C+,Java)程序中,供程序员设计程序时使用,SQL的特点(续),5.功能强大语言简洁SQL是一种完整地数据库语言,其功能涵盖数据定义、数据操纵、数据控制等数据管理的主要需求。但
9、SQL语言相对比较简洁,其核心动词只有9个。SQL 语言的语法简单,与英语口语的风格类似,易学易用。,4.2 数据定义,4.2 数据定义,SQL的数据定义语言DDL包括定义模式、域、关系(SQL称之为基本表)、视图、索引、断言、授权等。本节介绍如何定义基本表、索引和模式,4.5节将介绍如何定义和使用视图,域、断言和授权定义将在第5章讨论,SQL的数据类型,SQL支持许多内置的数据类型允许用户定义新的域(数据)类型。SQL支持的数据类型包括CHARACTER(n):长度为n的定长字符串CHARACTER VARYING(n):最大长度为n的变长字符串BIT(n):长度为n的二进制位串BIT VA
10、RYING(n):最大长度为n的变长二进制位串INTEGER:长度为4BSMALLINT:长度为2B,SQL的数据类型(续),SQL支持的数据类型NUMERIC(p,d):定点数,p位数字,小数点后d位DECIMAL:(同上)FLOAT(n):浮点数,精度至少n位数字REAL:浮点数DOUBLE PRECISION:双精度浮点数DATE:日期YYYY-MM-DDTIME:时间HH:MM:SSTIMESTAMP:时标,即日期时间INTERVAL:时间间隔,SQL的数据类型(续),CHAR(n):定长字符串,长度n由用户指定。省略(n)时,长度为1。CHAR的全称是CHARACTER。VARCHA
11、R(n):变长字符串,最大长度n由用户指定。VARCHAR的全称是CHARACTER VARYING定长和变长字符串的差别主要表现在前者需要固定长度的空间,而后者占用的空间在最大长度范围内是可改变的。BIT(n):定长二进位串,长度n由用户指定。省略(n)时,长度为1。BIT VARYING(n):变长二进位串,最大长度n由用户指定。INT:整数,其值域依赖于具体实现。INT的全称是INTEGER。SMALLINT:小整数,其值域依赖于具体实现,但小于INT的值域,SQL的数据类型(续),NUMERIC(p,d):p位有效数字的定点数,其中小数点右边占d位。DEC(p,d):p位有效数字的定点
12、数,其中小数点右边占d位。DEC的全称是DECIMAL。FLOAT(n):精度至少为n位数字的浮点数,其值域依赖于实现。REAL:实数,精度依赖于实现。DOUBLE PRECISION:双精度实数,精度依赖于实现,但精度比REAL高。DATE:日期,包括年、月、日,格式为YYYY-MM-DD。TIME:时间,包括时、分、秒,格式为HH:MM:SS。TIME(n)可以表示比秒更小的单位,秒后取n位。TIMESTAMP:时间戳,是DATE和TIME的结合INTERVAL:时间间隔。SQL允许对DATE、TIME和INTERVAL类型的值进行计算。,SQL的数据类型(续),SQL提供ETRACT(f
13、ield FROM Var),从DATE、TIME和TIMESTAMP类型变量Var从提取字段field。对于DATE类型的变量,field可以是YEAR、MONTH和DAY;对于TIME类型的变量,field可以是HOUR、MINUTE和SECOND;而对于TIMESTAMP类型field可以是YEAR、MONTH、DAY、HOUR、MINUTE和SECOND例如,如果d是DATE类型,则ETRACT(YEAR FROM d)返回d中的年份。,定义、修改和删除基本表,说明:本章,我们将“表”和“关系”视为同义词(尽管它们实际上有差别)将“属性”、“属性列”和“列”视为同义词使用“元组”或“记
14、录”表示表的行。术语“基本表”主要用于表示持久基本表,而“表”泛指基本表和导出表(包括视图),定义、修改和删除基本表(续),符号约定 表示X是需要进一步定义或说明语言成分。X表示X可以缺省或出现一次。X表示X可以出现一次。X|Y表示或者X出现,或者Y出现,但二者不能同时出现。SQL语言的保留字(如CREATE)不区分大小写。为醒目起见,对于SQL语句中的SQL的保留字,我们使用大写。SQL语句用分号结束。一个SQL语句可以写在一行或多行中,各种空白符号用于分隔不同的词。良好的语句的书写风格使得程序赏心悦目、易于阅读。,定义基本表,创建一个基本表要对基本表命名,定义表的每个列,并定义表的完整性约
15、束条件。SQL语言使用CREATE TABLE语句创建基本表,其基本格式如下:CREATE TABLE(,);是标识符,对定义的基本表命名;圆括号中包括一个或多个,零个或多个,中间用逗号隔开,定义基本表(续),定义每个属性(列)的名称、类型、缺省值和列上的约束条件,格式如下:DEFAULT,其中,是标识符,对定义的列命名;定义列的取值类型,它可以是节介绍的任意类型,也可以是用户定义的域类型(见5.3节);可选短语“DEFAULT”定义列上的缺省值,是中的一个特定值或NULL(空值);每个列上可以定义零个或或多个约束条件,约束列的取值,定义基本表(续),列约束定义格式如下CONSTRAINT 其
16、中可选短语“CONSTRAINT”为列约束命名常用的列约束包括:NOT NULL:不允许该列取空值不加NOT NULL限制时,该列可以取空值。PRIMARY KEY:指明该列是主码,其值非空、惟一。UNIQUE:该列上的值必须惟一相当于说明该列为候选码。CHECK():指明该列的值必须满足的条件,其中是一个涉及该列的布尔表达式,定义基本表(续),一个表可以包含零个或多个,用于定义主码、其他候选码、外码和表上的其它约束。表约束定义定义形式如下:CONSTRAINT 其中可选短语“CONSTRAINT”为表约束命名 PRIMARY KEY(A1,Ak):说明属性列A1,Ak构成该关系的主码。当主码
17、只包含一个属性时,也可以用列约束定义主码。UNIQUE(A1,Ak):说明属性列A1,Ak上的值必须惟一相当于说明A1,Ak构成该关系的候选码当候选码只包含一个属性时,也可以用列约束定义候选码。CHECK():说明该表上的一个完整性约束条件。通常,是一个涉及该表一个或多个列的布尔表达式,定义基本表(续),外码比较复杂,它具有下形式:FOREIGN KEY(A1,Ak)REFERENCES()属性A1,Ak是关系(表)的外码给出被参照关系的表名给出被参照关系的主码说明违反参照完整性时需要采取的措施(详见第5章),定义基本表(续),例4.1 下面的语句创建教师表TeachersCREATE TAB
18、LE Teachers(Tno CHAR(7)PRIMARY KEY,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);,定义基本表(续),创建选课表SC用如下语句:CREATE TABLE SC(SnoCHAR(9),CnoCHAR(5),GradeSMALLINT CHECK(Grade=0 AND Grade=100),PRIMARY KEY(Sno,Cno),
19、FOREIGN KEY(Sno)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(Se
20、x=男 OR Sex=女),BirthdayDATE,EnrollyearCHAR(4),SpecialityCHAR(20),DnoCHAR(3),FOREIGN KEY(Dno)REFERENCES Department(Dno);,定义基本表(续),CREATE TABLE Courses(CnoCHAR(5)PRIMARY KEY,CnameCHAR(20)NOT NULL,PeriodSMALLINT,CreditSMALLINT);CREATE TABLE Teaches(TnoCHAR(7),CnoCHAR(5),TCscoreSMALLINT,PRIMARY KEY(Tno,C
21、no),FOREIGN KEY(Tno)REFERENCES Teachers(Tno),FOREIGN KEY(Cno)REFERENCES Courses(Cno);,修改基本表,基本表创建好以后,在某些情况下需要修改它的结构。SQL允许添加列定义修改或删除列的缺省值删除列添加表约束删除表约束。使用ALTER TABLE语句修改基本表,修改基本表(续),1.向基本表添加新的列 ALTER TABLE ADD COLUMN COLUMN可以省略(下同)和创建基本表相同,但是新添加的列一般不允许用NOT NULL说明。2.对于已经存在的列,SQL-92只允许修改或删除列的缺省值,语句形式为:A
22、LTER TABLE ALTER COLUMN SET DEFAULT|DROP DEFAULTSET DEFAULT 以新的缺省值替换原来的缺省值DROP DEFAULT删除缺省值,修改基本表(续),3.删除已存在的列ALTER TABLE DROP COLUMN CASCADE|RESTRICTCASCADE表示级联,删除将成功,并且依赖于该列的数据库对象(如涉及该列的视图)也一并删除RESTRICT表示受限,仅当没有依赖于该列的数据库对象时删除才能成功4.添加表约束 ALTER TABLE ADD 其中与创建基本表相同。,修改基本表(续),5.删除表约束 ALTER TABLE DROP
23、 CONSTRAINT CASCADE|RESTRICT其中被删除的约束一定是命名的约束,给出约束名CASCADE导致删除约束并且同时删除依赖于该约束的数据库对象RESTRICT仅当不存在依赖于该约束的数据库对象时才删除该约束。,修改基本表(续),例4.2 在Courses中增加一个新列Pno,表示课程的先行课的课程号,可以用 ALTER TABLE Courses ADD Pno CHAR(5);在Students的Sex列设置缺省值“女”可以减少大约一半学生性别的输入。可以用如下语句来设置缺省值:ALTER TABLE Students ALTER Sex SET DEFAULT 女;而删
24、除Sex上的缺省值可以用 ALTER TABLE Students ALTER Sex DROP DEFAULT;删除Courses中的Pno列可以用 ALTER TABLE Courses DROP Pno;,删除基本表,当不需要某个基本表时,可以使用DROP TABLE语句将它删除。语句格式为:DROP TABLE CASCADERESTRICTCASCADE表示及联删除,依赖于表的数据对象(最常见的是视图)也将一同被删除RESTRICT表示受限删除,如果基于该表定义有视图,或者有其他表引用该表(如CHECK、FOREIGN KEY等约束),或者该表有触发器、存储过程或函数等,则不能删除。
25、删除基本表导致存放在表中的数据和表定义都将被彻底删除。,删除基本表(续),例4.3 如果用如下语句删除SC表DROP TABLE SC RESTRICT;则仅当没有依赖于SC的任何数据库对象删除才能成功。然而,如果用DROP TABLE SC CASCADE;则表SC和依赖它的数据库对象都被彻底删除注意:基本表一旦被删除,这种删除是永久的,不可恢复的。基本表中的数据及在该表上建立的视图、索引将全部被删除掉。因此执行删除基本表的操作时要格外小心。,创建和删除索引,索引类似于书的目录。索引可以加快表之间的连接速度,加快表的排序和分组工作。索引属于物理存储的路径概念,而不是逻辑的概念。索引由DBA或
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 资料
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6296395.html