




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库原理部分第一章 数据库系统概述数据数据(data) 是记录下来的可以鉴别的符号。数据模型:数据模型就是一种对客观事物抽象化的表现形式。分为(层次模型,关系模型,网络模型)关系模型:资料以“关系”的形式表示,也就是以二维表的形式表示,其数据模型就是所谓的关系模型。在关系模型中,无论是从客观事物中抽象出的实体,还是实体之间的联系,都用单一的结构类型一一关系来表示。关系数据库系统:就是以关系模型为基础的数据库系统。为什么要使用数据库?(1)数据结构化 (2)资料共享性好。(3)数据独立性好。4)资料存取粒度小。文件系统中,资料存取的最小单位是记录;而在数据库系统中,资料存取的粒度可以小到记录中
2、的一个数据项(字段)。 (5)数据库管理系统(DBMS,Database Management System)对资料进行统一的管理和控制。资料的完整性、资料的安全性、并发控制、数据库的恢复、为用户提供了友好的接口。第 2 章 关系数据库一、关系模型的组成 关系模型是关系数据库系统的基础模型。 关系模型由关系数据结构、关系操作和完整性约束三部分组成。 数据模型就是一种对客观事物抽象化的表现形式。关系模型:数据以“关系”的形式表示,也就是以二维表的形式表示,其数据模型就是所谓的关系模型。关系数据结构、关系操作、完整性约束:什么是主码(主关键字、主键)?能唯一地标识一个元组的一组属性。二、关系的性质
3、: 同一列中的分量是同一类型的数据。 不同列可以取相同的数据类型。 关系中的列又称为属性,并赋予属性名。不同列的属性名不同。 列的次序可以任意交换。 任意两个元组不能完全相同。 行的次序可以任意交换。 列具有原子性,即每一列值是不可分的数据项三、关系的完整性1、实体完整性(Entity Integrity)规则21实体完整性规则 若属性A是基本关系R的主属性,则属性R不能取空值。2、参照完整性(Referential Integrity)若属性(或属性组)F是基本关系是的外码它与基本关系S的主码K相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:1或者取空值(F的
4、每个属性值均为空值):2或者等于S中某个元组的主码值。3、用户定义的完整性用户定义的完整性就是针对某一具体关系数据库的约束条件。第 3 章 关系数据库标准语言SQL一、数据定义定义基本表CREATE TABLE ( 列级完整性约束条件 , 列级完整性约束条件.) ,;建表时可定义完整性约束条件,当用户操作表中数据时系统自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。定义表的各个属性时需要指明其数据类型及长度。例1 建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所
5、在系Sdept五个属性组成,其中学号属性不能为空,并且其值是唯一的。 CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE,Sname CHAR(20), Ssex CHAR(1), Sage INT, Sdept CHAR(15); 列级完整性约束条件,Sno取值唯,不许取空值修改基本表 ALTER TABLE ADD 完整性约束DROP MODIFY ;ADD子句用于增加新列和新的完整性约束条件,DROP子句用于删除指定的完整性约束条件,MODIFY子句用于修改原有的列定义。3.删除基本表DROP TABLE 例5 删除Student表 DRO
6、P TABLE Student 基本表定义一旦删除,表中的数据、在此表上建立的索引都将自动被删除掉,而建立在此表上的视图虽仍然保留,但已无法引用。4.建立索引建立索引是加快查询速度的有效手段。用户可以根据应用环境的需要,在基本表上建立一个或多个索引,以提供多种存取路径,加快查找速度。系统在存取数据时会自动选择合适的索引作为存取路径,用户不必也不能选择索引。CREATE UNIQUE CLUSTER INDEX ON ( ,.); 索引可以建在表的一列或多列上。可在每个后面指定索引值的排列次序。ASC表示升序,DESC表示降序,缺省值为ASC。UNIQUE表明建唯一性索引。表明此索引的每一个索引
7、值只对应唯一的数据记录。CLUSTER表示建聚簇索引。所谓聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引。 CREATE CLUSTER INDEX Stusname ON Student(sname);将会在student表的sname(姓名)列上建立一个聚族索引,而且student表中的记录将按照sname值的升序存放。用户可以在最常查询的列上建立聚簇索引以提高查询效率。显然在一个基本表上最多只能建立一个聚簇索引。建立聚族索引后,更新索引列数据时,往往导致表中记录的物理顺序的变更,代价较大,因此对于经常更新的列不宜建立聚簇索引。5.删除索引DROP INDEX;二、查询SELECT
8、 ALL|DISTINCT, FROM , . WHERE GROUP BY HAVING ORDER BY ASC|DESC;SELECT语句的含义:根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。如果有GROUP子句,则将结果按的值进行分组,该属性列值相等的元组为一个组,每个组产生结果表中的一条记录。如果GROUP子句带HAVING短语,则只有满足指定条件的组才予输出。如果有ORDER子句,则结果表还要按的值的升序或降序排序。1. 单表查询 (1) 查询指定列 例1 查询全体学生的学号
9、与姓名 SELECT Sno,Sname FROM Student; (2) 查询全部列 例3 查询全体学生的详细记录 SELECT * FROM Student;(3) 消除取值重复的行 例6 查所有选修过课的学生的学号 SELECT Sno FROM SC; 假设SC表中有下列数据 Sno Cno Grade- - - 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80 指定DISTINCT可掉重复行:SELECT DISTINCT Sno FROM SC;结果为: Sno - 95001 95002 (4) 查询满足条件的元组 查
10、询满足指定条件的元组可以通过WHERE子句实现。WHERE子句常用的查询条件如表例9 查考试成绩有不及格的学生的学号 SELECT DISTINCT Sno FROM Course WHERE Grade 60; 例12 查信息系(IS)、数学系(MA)和计算机科学系(CS)的学生的姓名和性别 SELECT Sname, Ssex FROM Student WHERE Sdept IN (IS, MA, CS) 谓词LIKE可用来进行字符串的匹配。其语法格式如下: NOT LIKE ESCAPE 其含义是查找指定的属性列值与相匹配的元组。可以是一个完整的字符串,也可以含有通配符%和_。 %(百
11、分号) 代表任意长度(长度可以为0)的字符串。 _(下横线) 代表任意单个字符。 例14 查所有姓刘的学生的姓名、学号和性别 SELECT Sname, Sno, SsexFROM Student WHERE Sname LIKE 刘%; 如果用户要查询的匹配字符串本身就含有 % 或 _ ,这时就要使用 ESCAPE 短语对通配符进行转义了。 (5) 对查询结果排序 例23 查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列 SELECT Sno, Grade FROM SC WHERE Cno=3 ORDER BY Grade DESC; (6) 使用集函数 COUNT(DIS
12、TINCT|ALL *) 统计元组个数 COUNT(DISTINCT|ALL ) 统计一列中值的个数 SUM(DISTINCT|ALL ) 计算一列值的总和 AVG(DISTINCT|ALL ) 计算一列值的平均值 MAX(DISTINCT|ALL ) 求一列值中的最大值 MIN(DISTINCT|ALL ) 求一列值中的最小值 例28 查询学习1号课程的学生最高分数 SELECT MAX(Grade)FROM SC WHERE Cno=1; (7) 对查询结果分组 GROUP BY子句可以将查询结果表的各行按一列或多列,将值相等的作为一组。 例29 查询各个课程号与相应的选课人数 SELEC
13、T Cno, COUNT(Sno) FROM SC GROUP BY Cno; 该SELECT语句对SC表按Cno的取值进行分组,所有具有相同Cno值的元组为一组,然后对每一组作用集函数COUNT以求得该组的学生人数。查询结果为: Cno COUNT(Sno) 1 22 2 34 3 44 如果分组后还要求按一定的条件对这些组进行筛选条,最终只输出满足指定的组,则可以使用HAVING短语指定筛选条件。例31 查询选修了3门以上课程的学生学号。 SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)3; 这里先用GROPU BY子句按Sno进行分组,再用集
14、函数COUNT对每一组计数。HAVING短语指定选择组的条件,只有满足条件的组才会被选出来。 WHERE子句与HAVING短语的区别在于作用对象不同。WHERE子句作用于基本表或视图,从中选择满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。二、连接查询 若一个查询同时涉及两个以上的表,则称之为连接查询。连接查询主要包括等值连接、非等值连接查询、自身连接查询(自身连接)、外连接查询(外连接)和复合条件连接查询(复合条件连接)。(1) 等值与非等值连接查询 用来连接两个表的条件称为连接条件,其一般格式为:. . 其中比较运算符主要有:=、=、=、!=、!= 此外连接谓词词还可以使用
15、下面形式: . BETWEEN . AND . 当连接运算符为=时,称为等值连接。使用其它运算符称为非等值连接。 连接谓词中的列名称为连接字段。连接条件中的各连接字段类型必须是可比的。 例32 查询每个学生及其选修课程的情况 学生信息在Student表中,学生选课信息在SC表中,所以本查询实际上同时涉及Student与SC两个表中的数据。这两个表之间的联系是通过两个表都具有的属性Sno实现的。要查询学生及其选修课程的情况,就必须将这两个表中学号相同的元组连接起来。这是一个等值连接。完成本查询的SQL语句为: SELECT Student.*, SC.* FROM Student, SC WHE
16、RE Student.Sno=SC.Sno; 三、嵌套查询在SQL语言中,一个SELECT FROM WHERE语句称为个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语条件中的查询称为嵌套查询。例如:带有IN谓词的子查询在嵌套查询中,子查询的结果往往是个集合,所以谓词则是嵌套查询中最经常使用的谓词。SELECT Sname FROM StudentWHERE Sno IN SELECT Sno FROM SC WHERE Cno2;本例中,下层查询块SELECT Sno FROM SC WHERE Cno2;是嵌套在上层查询块where条件中的。SQL语言允许多层嵌套
17、查询,即一个子查询中还可以嵌套其他子查询。需要特别指出的是,子查询的SELECT语句中不能使用ORDER BY于句,ORDER BY子句只能对最终查询结果排序。嵌套查询一般的求解方法是由里向外处理。即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。嵌套查询使我们可以用多个简单查询构成复杂的查询,从而增强SQL的查询能力。以层层嵌套的方式来构造程序正是SQL结构化的意义所在。三、插入语句SQL的数据插入语句Insert通常有两种形式。一种是插入一个元组,另一种是插入子查询结果。后者可以一次插入多个元组。插入单个元组的IN5ERT语句的格式为:INSERTINTO 表名
18、(列名1 ,列名2,)VALUES (常量1,常量2,);其功能是将新元组插入指定表中。其中新记录列1的值为常量l,列2的值为常量2,。Into子句中没有出现的属性列,新记录在这些列上将取空值。但必须注意的是,在表定义时说明了NOT NULL的属性列不能取空值。如果INTO子句没有指明任何列名,则新插入的记录必须在每个属性列上均有值。插入子查询结果:子查询不仅可以嵌套在SELECT语句中,用以构造父查询的条件,也可以嵌套在INSERT语句中,用以生成要插入的批量数据。二、修改语句修改操作语句的一般格式为: UPDATE 表名, SET 列名表达式,列名表达式 WHERE;功能是修改指定表中满足
19、WHERE子句条件的元组。其中SET子句给出表达式的值用于取代相应的属性列值。如果省略WHERE子句,则表示要修改表中的所有元组。1、修改某一个元组的值 例4 将学生95001的年龄改为22岁。UPDATE Student SET Sage=22 WHERE Sno=95001;2、修改多个元组的值 例5 将所有学生的年龄增加1岁 UPDATE Student SET Sage=Sage+1;3、带子查询的修改语句子查询也可以嵌套在UPDATE语句中,用以构造修改的条件。用IN来构造条件子句三、删除数据删除语句的一般格式为 DELETE FROM WHERE;DELETE语句的功能是从指定表中
20、删除满足WHERE子句条件的所有元组,如果省略WHERE子句,表示删除表中全部元组,但表的定义仍在字典。也就是说,DELETE语句删除的是表中的数据,而不是关于表的定义。1、删除某一个元组的值例7 删除学号为95019的学生记录 DELETE FROM Student WHERE Sno=95019;2、删除多个元组的值例8 删除所有的学生选课记录。 DELETE FRDM SC;这条DELETE语句将SC成为空表,它删除了SC的所有元组.3、带子查询的删除语句子查询同样也可以嵌套在DELETE语句中,用以构造执行删除操作的条件。五、视图定义视图,使用视图视图是关系数据库系统提供给用户以多种角
21、度观察数据库中数据的重要机制。视图是从一个或几个基本表(或视图)导出的表,它与基本表不同,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。视图一经定义,就可以和基本表一样被查询、被删除,我们也可以在一个视图之上再定义新的视图,但对视图的更新(增加、删除、修改)操作则有一定的限制。CREATE VIEW (,)AS ,WITH CHECK OPTION;第四章 关系数据库设计理论一、 数据依赖函数依赖与属性
22、之间的关系,称为数据依赖函数依赖设有一个关系R,存在两个属性A和B。则有下列的规则: (1)若A和B之间是 1:1的关系,则有AB和BA,即A和B相互依赖(2)若A和B之间是m:1的关系,则有函数依赖AB。(3)若A和B之间是m:m的关系,则有不存在函数依赖。二、 关系的规范化数据库一般的设计原则是:(1) 数据的冗余度尽量低。(2) 不出现插入、删除等操作异常;(3) 能尽量如实反映现实世界的实际情况,而且又易懂。这些原则要求关系数据库中的关系应满足一定的要求。我们把满足不同要求的关系称为范式。又按照要求条件的宽严的不同逐级分为第一范式、第二范式、第三范式等,并用1NF、2NF、3NF表示。
23、1NF: 在一个关系的记录中,每一个属性都是不可再分的数据项。2NF:关系满足1NF,同时,关系的每一个非主属性都完全函数依赖于主关键字。3NF:关系满足2NF,同时,关系的每一个非主属性都不传递依赖于主关键字。关系的规范化:就是将一个低一级的范式,转化为一组高一级范式的过程。这种转化过程就是关系的规范化。怎样进行关系的规范化?对不满足规范化要求的关系模式进行分解,用一组等价的关系子模式来代替原有的关系模式,消除数据依赖中不合理的部分。这一过程必须是在保证无损连接性、保持函数依赖的前提下进行,即确保不破坏原有的数据和数据间的联系。第5章 数据安全什么是数据库的恢复?数据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)的功能,这就是数据库的恢复。事务的概念事务是用户定义的一个操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。事务具有四个特性:原子性、一致性、隔离性和持续性。n 事务的开始:n BEGIN TRANSACTIONn 事务的结束n COMMIT n ROLLBACK恢复的技术恢复机制涉及的两个关键问题是: (1)如何建立冗余数据; (2)如何利用这些冗余数据实施数据库恢复。 建立冗余数据最常用的技术是数据转储和日志文件。数据转储日志文件:是用来记
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学前儿童家庭科学教育
- 商业监管面试题及答案
- 数字养老面试题及答案
- 相约劳动考试题及答案
- 医院液氧罐采购方案
- 小区柴火房改造方案
- 2026版《全品高考》选考复习方案生物732 课时作业(三十) 育种 含答案
- 地基开挖清理方案
- 船厂废旧设备处置方案
- 学生在校一日常规
- 高中区域地理:极地地区南极、北极
- 公路建设项目可行性研究报告编制办法讲解课件
- 房地产开发全流程培训讲义课件
- DB44-T 2163-2019山地自行车赛场服务 基本要求-(高清现行)
- 云南省特种设备检验检测收费标准
- DB15T 933-2015 内蒙古地区极端高温、低温和降雨标准
- 有键螺旋桨及尾轴安装质量要求标准
- 工伤责任保险单
- 固体废物采样培训
- 新概念英语第二册单词打印版
- 小学语文一到六年级生字表
评论
0/150
提交评论