关系型数据库和sql语言

上传人:san****019 文档编号:70846071 上传时间:2019-01-18 格式:PPT 页数:43 大小:206.51KB
返回 下载 相关 举报
关系型数据库和sql语言_第1页
第1页 / 共43页
关系型数据库和sql语言_第2页
第2页 / 共43页
关系型数据库和sql语言_第3页
第3页 / 共43页
关系型数据库和sql语言_第4页
第4页 / 共43页
关系型数据库和sql语言_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《关系型数据库和sql语言》由会员分享,可在线阅读,更多相关《关系型数据库和sql语言(43页珍藏版)》请在金锄头文库上搜索。

1、第7章 关系型数据库和SQL语言,掌握关系模型的定义; 掌握SQL数据定义语句(CREATE) 掌握SQL数据插入语句(INSERT) 掌握SQL数据查询语句(SELECT); 了解关系运算的概念和规范化设计方法 了解SQL数据操纵功能(ALTER DELETE UPDATE DROP) 了解SQL数据控制功能(REVOKE GRANT),本章学习要求,7.1 关系模型,7.1.1 关系模型的定义 关系型数据库是基于关系数据模型而创建的数据库。关系模型中的实体和实体间的联系都用关系(二维表)表示。 关系模型包括关系数据结构、关系操作集合和关系完整性约束三个部分。,1. 关系模型的数据结构,关系

2、模型的基本数据结构是关系(relation),一个关系形式上就是一张行列结构的二维表 属性的取值范围称为域(domain) 元组的总数称为关系的基数,实体,一个具体的关系可以简单地以关系名及其属性列表来表示 下表中的教师实体的关系数据模式可以表示为: 教师(工号,姓名,性别,系别,职称),关系数据模型和数学中的关系概念区别: (1)元组个数为无限的关系没有现实意义,所以关系数据模型中的关系应该是有限集合。 (2)数学中元组的值是有序的,而关系模型不强调这种有序性,并通过对关系的各列添加属性名来取消这种有序性。,2. 关系的性质,根据关系的定义,关系应具有如下性质: (1)列应为同质。即每一列中

3、的属性值的数据类型必须相同,来自同一个值域。 (2)不同的列可以来自同一个值域,但属性有各自不同的属性名。 (3)列的次序无关实际意义,可以任意交换。 (4)不可以有完全相同的元组,即集合中不应有重复的元组。 (5)行的次序无关实际意义,可以任意交换。 (6)属性值必须为原子分量,不可再分。,3. 主键和外键,(1)候选键(candidate key) 如果关系中的某个属性或属性的组合的值可以唯一地标识一个元组,而它的任何真子集均无此特性,则称这个属性或属性的组合为该关系的候选键。极端情况下,候选键包含全部属性,则称为全键。 (2)主键(primary key) 一个关系至少应具有一个候选键,

4、也可能有多个候选键,选择候选键中的一个为主键。包含在主键中的属性称为主属性,不包含在主键中的属性称为非主属性。 (3)外键(foreign key) 如果关系R1中一个属性或属性的组合Xn与关系R2中的主键的数据对应,则称Xn为关系R1关于R2(R2可以为R1自身)的外键。,例7-1:对于如下的“教学记录”数据库(有下划线的属性为主属性),假定同一个教师可以讲授多门课程,不同班级的同一课程由不同的教师讲授: 教师(工号,姓名,出生年月,单位,性别,职称) 班级(班级编号,人数) 课程(课程编号,课程名称,学分,先修课程编号) 课表(课程编号,工号,班级编号),4. 关系的完整性约束,(1)实体

5、完整性(entity integrity): 在一个关系中,主键的所有主属性都不得为空值 (2)参照完整性(referential integrity): 关系中元组的外键取值只能等于所参照的关系的某一元组的主键值,或者为空值。 (3)用户自定义完整性: 根据实际情况对关系设定约束条件,7.1.2 关系运算,1. 传统的集合运算 如果关系R1和关系R2同为n度(即都有n个属性) 相应的属性取自同一个值域 (1) 并 将两个关系中的所有元组合并,删去重复元组,组成一个新的关系 在关系数据库中,通过并运算可以实现元组的插入(insert)。 (2) 差 从R1中删去与R2相同的元组,组成一个新的关

6、系 在关系数据库中,通过差运算可以实现元组的删除(delete)。 (3) 交 R1和R2中取相同的元组,组成一个新的关系 (4) 广义笛卡尔积 通过先差运算再并运算可以实现元组的更新(update),通过广义笛卡尔积可以实现两个实体集的连接 。,2. 专门的关系运算,(1)选择 从一个关系中找出满足指定条件的元组的操作 (2)投影 从一个关系中选出指定若干属性的操作称为投影 (3)连接 把两个关系中的元组按照一定条件横向联合,形成一个新的关系 “纽带”是两个关系的公共字段或语义相同的字段。,7.1.3 规范化设计方法,所谓数据库的规范化设计,就是在进行关系模式设计时,通过投影或分解操作剔除属

7、性间的不良依赖,将低一级的范式(Normal Form)向若干高一级范式转化的过程。 常见的方法 通过E-R图进行概要设计 基于关系规范化理论进行设计 于1971年由关系数据模型的创始人E.F.Codd首先提出 E.F.Codd提出了第一范式(1NF)、第二范式(2NF)和第三范式(3NF) 1974年Codd和Boyce共同提出了BCNF 规范化程度更高的还有4NF、5NF,1. 第一范式(1NF),(1)“不可以有完全相同的元组,即集合中不应有重复的元组”。这一点可以通过主键的主属性非空及主键的唯一性保证; (2)“属性值必须为原子分量,不可再分”。,2. 第二范式(2NF),如果一个关系

8、属于1NF,且所有非主属性完全依赖于主关键字,则称该关系属于2NF。,不符合2NF要求的关系,符合2NF的关系,3. 第三范式(3NF),如果一个关系属于2NF,且每个非主属性不传递依赖于主键,即非主属性之间无依赖关系,则称该关系属于3NF。,不符合3NF的关系,规范化的优点 避免数据的插入、删除和更新异常,确保数据的一致性 避免数据的冗余,使数据库的结构简洁、明晰 当关系模式完全属于3NF,用户对记录值进行更新时就无须在超过两个以上的地方更改同一数值 规范化的缺点 关系模式中表的数目一般会有所增多 DBMS进行连接查询时系统的复杂度和运行时间都有所增加,7.2 结构化查询语言SQL,7.2.

9、1 SQL语言概述 1. SQL语言的产生及发展 由Boyce等人在1974年提出结构化查询语言(structured query language ,SQL) 经国际标准化组织(International Organization for Standardization ,ISO)指定为国际标准,2. SQL语言的组成及特点,(1)SQL语言的组成 数据定义语言(data definition language, DDL),用于定义数据库的逻辑结构,包括基本表、索引和视图 数据操纵语言(data manipulation language, DML),用于数据查询和数据更新(插入、删除和修改

10、) 数据控制语言(data control language, DCL),用于对基本表和视图的授权、事务控制语句等,(2)SQL语言的特点,集数据的定义、操纵和控制功能于一体; 面向集合的操作方式; 高度非过程化 ,路径选择及处理过程由系统自动完成; 既可独立使用,又可嵌入到高级语言中使用; 只含九条核心语句,结构化很强; 类似自然语言,易学易用。,3. SQL对关系模型的支持,外模式,内模式,模式,注意:不同的RDBMS对于SQL的支持在具体方式上有所不同,数据库系统模式的概念,模式(Schema) 数据库逻辑结构和特征的描述 反映的是数据的结构及其联系 模式是相对稳定的 一个数据库只有一个

11、模式 与数据的物理存储细节和硬件环境无关 与具体的应用程序、开发工具及高级程序设计语言无关,外模式(External Schema),外模式(也称子模式或用户模式) 数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述 数据库用户的数据视图,是与某一应用有关的数据的逻辑表示,内模式(Internal Schema),内模式(也称存储模式) 是数据物理结构和存储方式的描述 是数据在数据库内部的表示方式 记录的存储方式(顺序存储,按照B树结构存储,按hash方法存储) 索引的组织方式 数据是否压缩存储 数据是否加密 数据存储记录结构的规定 一个数据库只有一个内模式,三级模式与

12、二级映象,三级模式是对数据的三个抽象级别 二级映象在DBMS内部实现这三个抽象层次的联系和转换,外模式模式映象,定义外模式与模式之间的对应关系 每一个外模式都对应一个外模式模式映象 映象定义通常包含在各自外模式的描述中,外模式模式映象的用途,保证数据的逻辑独立性 当模式改变时,数据库管理员修改有关的外模式模式映象,使外模式保持不变 应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。,模式内模式映象,模式内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。例如,说明逻辑记录和字段在内部是如何表示的 数据库中模式内模式映象是唯一的 该

13、映象定义通常包含在模式描述中,模式内模式映象的用途,保证数据的物理独立性 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式内模式映象,使模式保持不变 应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。,7.2.2 SQL数据定义功能,SQL的数据定义功能主要包括定义基表和定义索引。 1. 定义基表 定义基表就是定义一个表(关系)的数据结构和完整性约束,包括指定表的名称、表的属性名称、属性的数据类型以及完整性约束条件。 定义基表使用SQL中的CREATE TABLE语句,其一般形式如下: CREATE TABLE ( , , ,表例,常用SQL数据类

14、型,例7-5: 创建“学生管理”数据库,包含STU、CLASS和SGRADE表,其中:STU表由学号、姓名、性别、系别、生日5个属性组成,主键为学号,姓名不能为空;CLASS表由课程编号、课程名称、先修课程编号、学时、学分5个属性组成,主键为课程编号,课程名称唯一;SGRADE表由学号、课程编号和成绩3个属性组成,主键为(学号,课程编号)。 创建STU表的SQL语句 CREATE TABLE STU( 学号 TEXT(7) PRIMARY KEY, 姓名 TEXT(16) NOT NULL, 性别 TEXT(2), 系别 TEXT(10), 生日 DATE);, 创建CLASS表的SQL语句

15、CREATE TABLE CLASS( 课程编号 TEXT(3) PRIMARY KEY, 课程名称 TEXT(20) UNIQUE, 先修课程编号 TEXT(3), 学时 SMALLINT, 学分 SMALLINT); 创建SGRADE表的SQL语句 CREATE TABLE SGRADE( 学号 TEXT(7) REFERENCES STU(学号), 课程编号 TEXT(3) REFERENCES CLASS(课程编号), 成绩 SMALLINT, PRIMARY KEY(学号,课程编号); 添加自定义完整性约束条件的方法,2. 修改基表,修改基表使用SQL中的ALTER TABLE语句。

16、 例7-6:对例7-5所创建的数据库做如下修改: (1)向STU表中添加联系电话字段; ALTER TABLE STU ADD 联系电话 INT; (2)将联系电话字段的数据类型修改为字符串类型; ALTER TABLE STU ALTER 联系电话 CHAR(11); (3)删除刚才添加的联系电话字段; ALTER TABLE STU DROP 联系电话; 注意:在对基表结构进行修改时需要先将基表关闭,3. 删除基表,使用SQL中的DROP TABLE语句可以删除不需要的基表 如果所要删除的基表中含有被其他基表引用的字段,需要先将其他基表中的REFERENCES约束删除,才能进行基表的删除 DROP TABLE语句的一般形式为: DROP TABLE ; 例7-7:删除SGRADE表。 DROP TABLE SGRADE;,4. 定义索引,为了加快查询速度和有序输出,可以在一个基表上建立一个或多个索引(index) 索引属于物理存储路径的概念,RDBMS在存取数据时会自动选择合适的索

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号