数据库系统原理(自测)知识组织
第一章 数据库系统概述
第一节 数据库系统概念
一、 数据
描述事物的符号记录
二、数据库
数据库中数据的特点:永久存储、有组织、可共享
数据库是指长期存储在计算机中的有组织,可共享的数据集合,且数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度,较高的数据独立性,系统易于扩展并可以被多个用户共享
三、数据库管理系统(Database Management System,DBMS)
专门用于建立和管理数据库的一套软件,介于应用程序和操作系统之间。负责科学有效的组织和存储数据,并帮助数据库的使用者在大量的数据中快速的获取所需的数据,以及提供必要的安全性和完整性等统一控制机制,实现对数据有效的管理和维护
其主要功能有: +1+1+1
-
数据定义功能(Data Definition Language , DDL)定义数据库中的数据对象,包括表、视图、存储过程、触发器等
-
数据操纵功能(Data Manipulation Language, DML)操纵数据库中的数据,实现对数据库的基本操作,包括数据的查询,插入,删除和修改等
-
数据库的运行管理功能
实现数据在不会被相互干扰的情况下,能够并发使用,并且在发生故障时能够对数据库进行正确的恢复
-
数据库的建立和维护功能,包括: 创建数据库及对数据库空间的维护、数据库的备份与恢复功能、数据库的重组织功能和性能监视分析等 [选择题]
-
数据组织、存储和管理功能
为提高数据的存取效率,数据库管理系统需要对数据进行分类存储和管理
-
其它功能
数据库系统(DBS)
数据库系统包括:数据库,数据库管理系统及相关使用工具、应用程序、数据库管理员和用户。
第二节 数据管理技术的发展
-
人工管理阶段:这个阶段的计算机主要应用于科学计算。
数据不保存
应用程序管理数据
数据面向应用
-
文件系统阶段:可保存,但共享性差,冗余度大,独立性差
-
数据库系统阶段 特点: +1+1+1+1+1
-
数据集成:数据库管理系统的主要目的
-
数据共享性高
-
数据冗余小
-
数据一致性
-
数据独立性高
物理独立性:应用程序与数据库中数据的物理存储相互独立
逻辑独立性:应用程序与数据库的逻辑结构相互独立
-
实施统一管理与控制
a)数据的安全性
b)数据的完整性: 是对数据的正确性,有效性和相容性要求,即控制数据在一定的范围内有效,或要求数据之间满足一定的关系,保证输入到数据库的数据满足相应的约束条件,以确保数据有效正确
c)并发控制: 对多用户的并发操作加以控制和协调
d)故障恢复: 计算机产生的硬件故障,操作员的失误,以及人为的破坏都会影响数据库数据的正确性,甚至造成数据库部分数据的丢失,DBMS必须具有将数据库从错误状态恢复到某一已知正确状态的功能,这就是数据库故障恢复(Recovery)
-
减少应用程序开发与维护的工作量
-
第三节 数据库系统的结构
一、数据库系统的三级模式结构 +1+1+1+1
模式(Schema) 内模式 (Inner Schema) 外模式(External Schema)
-
模式(概念模式/逻辑模式)
是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。同时,一个数据库只有一个模式,且相对稳定
模式仅仅涉及型的描述,不涉及具体的值,其一个具体的值称为模式的一个实例。
模式是相对稳定的,实例是相对变动的
模式是数据库的核心,也是数据库设计的关键
DBMS提供模式描述语言来严格的定义模式
-
外模式(子模式/用户模式)
是数据库用户能够看见和使用的局部数据的逻辑结构和特征描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
一个数据库可以有多个不同的外模式,允许他们有一定的重叠,且一个外模式可以只为一个应用程序使用,也可以为多个应用程序共享
-
内模式 (存储模式 Storage Schema) 是对数据库中数据物理结构和存储方式的描述,是数据在数据库内部的表示形式
-
二级映像
一个数据库的整体逻辑结构和特征的描述(概念模式)独立于数据库其他层次结构(内/外模式)的描述,其是数据库的核心,也是数据库设计的关键
外模式/模式映像:当模式改变时,由数据库管理员对外模式/模式映像做相应的改变,可以使外模式保持不变,应用程序不必修改,保证了数据与程序的逻辑独立性。
模式/内模式映像: 当数据库的存储结构改变时,由数据库管理员对 模式/内模式作相应改变,可以使模式保持不变,从而应用程序也不用改变,保证了数据与程序的物理独立性。
二、数据库系统的运行与应用结构
第四节 数据模型
一、数据特征与数据模型组成要素
数据模型主要由数据结构、数据操作、数据约束组成
- 数据结构 :描述的是系统的静态特性(数据类型,属性,内容以及数据对象之间的联系)
- 数据操作 :描述的是系统的动态特性,包括更新(插入、删除、修改)和检索
- 数据约束 :包括数据完整性约束、数据安全性约束、以及并发控制约束
二、数据模型的分类 +1+1+1+1
-
概念层数据模型
按用户观点来对数据和信息建模,用于数据库设计
-
实体(客观存在并可相互区别的事物)
-
属性(实体所具有的某种特性):用椭圆形表示
-
码或键(可唯一标识实体的属性集)[选择题]
-
域(属性的取值范围)
-
实体型(用实体名及属性集合来抽象和刻画同类实体):用矩形表示
-
实体集(同型实体的集合)
-
联系:用菱形表示
实体之间的联系:通常指不同实体集之间的联系:一对一,一对多,多对多
实体内部的联系:指实体各属性之间的联系
-
-
逻辑层数据模型
按计算机系统的观点对数据建模,用于数据库管理系统的实现
主要的逻辑数据模型有:
-
层次模型
根节点: 有且只有一个节点 并且 没有父节点
其他节点 根节点以外的其他节点,有且只有一个父节点
-
网状模型:网状模型以网状结构表示实体与实体之间的联系
-
关系模型:用二维表结构来表示实体与实体之间的联系
-
面向对象模型
-
-
物理模型
是对数据最底层的抽象,描述数据在系统内部的表示方法和存取方法,或在磁盘(磁带)上的存储方式和存取方法,是面向计算机系统的
第二章 关系数据库
以关系模型作为数据的逻辑模型,采用关系作为数据的组织方式
第二节 关系数据模型
三要素:关系数据结构、关系操作集合、关系完整性约束
一、关系数据结构 +1+1+1+1
-
表(Table) 也称为关系,是一个二维的数据结构。[选择题]
-
关系(Relation) 有三种类型 基本关系,视图表和查询表 [填空题]
-
列(column) 也称字段(Field)或属性(Attribute)
-
属性:表中的一列
-
行: 也称元组(tuple)或记录(record)
-
元组:表中的一行
-
分量:元组中的一个属性值
-
码或键:能够唯一标识一条记录(元组)的属性或者属性集
-
超码或超键:如果在关系的一个码中移除某个属性,它仍然是这个关系的码,则称这样的码或键为该关系的超码或超键
-
候选码或候选键:最小超码(超键),如果在一个关系的码(键)中,不能移除任何一个属性,否则就不是关系的码或键,则称这样的码(键)为候选码(候选键)
-
主码或主键:在一个关系的若干候选码或候选键中指定一个用来唯一标识关系的元组,则称这个被指定的候选码或候选键为该关系的主码或主键
-
全码或全键: 一个关系模式的所有属性集合是这个关系的主码或主键,则称这样的主码(主键)为全码(全键)
-
主属性和非主属性:
包含在任何一个候选码中的属性称为主属性
不包含在任何一个候选码中的属性称为非主属性
-
外码或外键
当关系中的某个属性不是这个关系的主码或候选码,而是另一个关系的主码时,称该属性是这个关系的外码或外键
-
参照关系和被参照关系
-
域:属性的取值范围
-
数据类型
-
关系模式: 关系数据库中关系模式是型,关系是值,即关系模式是对关系的描述;关系模式是静态的,关系是动态的
-
关系数据库:是以关系模型作为数据的逻辑模型,并采用关系作为数据组织方式的一类数据库,其数据库操作建立在关系代数的基础上
关系模型的数据结构表示为二维表,但不是任意一个二维表都可以作为一个关系,关系数据库对关系的限定 +1+1
- 每一个属性都不可分解 选择题
- 每一个关系仅仅有一种关系模式
- 每一个关系中的属性必须命名,在同一个关系模式中,属性名必须是不同的
- 同一个关系中不允许出现候选码或候选键值完全相同的元组
- 在关系中元组的顺序无关紧要,可以任意交换
- 在关系中属性的顺序无关紧要,可以任意交换
二、关系操作集合
关系操作的特点 是集合的操作方式,即操作的对象和结果都是集合
常用的关系操作:查询、插入、删除、修改
查询:是关系操作最主要的部分,分为选择、投影、连接、除、并、差、交、笛卡尔积等
关系数据语言的分类: 关系代数、关系演算、以及SQL
关系代数:5种基本运算 并、差、笛卡尔积、选择、投影 及 交、连接、除
传统的集合运算: 并、交、差、笛卡尔积
并:R1 ∪ R2
交:R1 ∩ R2
差:R1 - R2
笛卡尔积: R1 * R2
专门的关系运算:
一元专门关系操作:选择、投影
二元专门关系操作:连接、除
交 A∩B 并 AUB 差 A-B 笛卡尔积 RxS
选择σ
投影????
连接
三、关系的完整性约束
1. 实体完整性约束: 指关系的主属性即主码 唯一且不能为空
2. 参照完整性约束:
若属性F是基本关系R的外码,他与基本关系S的主码相对应,则对于R中每个元组在F上的值只允许两种可能,即要么取空值,要么等于S中某个元组的主码值 简单来说就是 外码要么为空要么对应另一个表的主码
3.用户定义完整性约束
4.关系模型完整性约束的检验
(1)执行插入操作时,首先检查实体完整性约束,然后检查参照完整性约束,最后检查用户定义完整性约束。
(2)执行删除操作时,一般只需要对被参照关系检查参照完整性约束。
(3)执行更新操作时,因为更新操作可看成是先执行删除操作,再执行插入操作,因此是上述两种情况的综合
第三节 关系数据库的规范化理论
一、关系模式中可能存在的冗余和异常问题
- 数据冗余: 同一数据被反复存储的情况
- 更新异常: 由数据冗余导致的存储空间浪费和潜在数据不一致性及修改麻烦等问题
- 插入异常: 应该插入到数据库中的数据不能执行插入操作的情形
- 删除异常: 不应该删除的数据被删掉的情形
二、函数依赖与关键字
函数依赖是关系中属性间的对应关系,
定义:设R为任一给定关系,如果对于R中属性X的每一个值,R中的属性Y只有唯一值与之对应,则称X函数决定Y,或称Y函数依赖于X,记做X->Y,其中X为决定因素
-
完全函数依赖
设R为任一给定关系,X、Y为其属性集,若X->Y,且对X中任何真子集X'都有X'!->Y,则称Y完全函数依赖于X
-
部分函数依赖
设R为任一给定关系,X、Y为其属性集,若X->Y,且X中存在一个真子集X'满足X'->Y,则称Y部分函数依赖于X
-
传递函数依赖
三、范式与关系规范化过程 +1+1+1
- 第一范式(1NF): 设R为任一给定关系,如果R中每个列与行的交点处的取值都是不可再分的基本元素,则R为第一范式(所有字段值都是不可再分的原子值)
- 第二范式(2NF):设R为任一给定关系,若R为1NF,且其所有非主属性都完全函数依赖于候选关键字,则R为第二范式(一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中)
- 第三范式(3NF):设R为任一给定关系,若R为2NF,且其每一个非主属性都不传递函数依赖于候选关键字,则R为第三范式(数据表中的每一列数据都和主键直接相关,而不能间接相关)
- BCNF:修正的第三范式,消除每一属性对候选键的传递依赖
四、关系规范化理论的应用 +1
关系规范化理论的应用主要应用于数据库设计中的概念设计阶段
第三章 数据库设计
第一节 数据库设计概述
数据库设计是将数据库与现实世界进行密切地、有机地、协调一致的结合的过程
一 数据库生命周期 +1+1
- 数据库分析与设计阶段:包括 需求分析,逻辑设计,概念设计和物理设计
- 数据库实现与操作阶段:包括 数据库的实现、操作与监督、修改与调整
二 数据库设计的目标
1.满足应用功能需求
2.良好的数据库性能
三 数据库设计的内容 +1+1
数据库设计是从用户对数据的需求出发,研究并构造数据库的过程,其包含两个方面的内容 :选择题
-
数据库结构设计
数据库结构设计是针对给定的应用环境进行数据库的模式或子模式的设计,包括数据库的概念结构设计、逻辑结构设计和物理结构设计
-
数据库行为设计
是确定数据库用户的行为和动作,而用户的行为和动作是对数据库的操作,他们通常是通过对应的程序来实现的。由于用户的行为会使数据库的内容发生变化,所以行为设计是动态的
四 数据库设计的方法 +1+1
-
直观设计法
-
规范设计法
- 新奥尔良设计法
- 基于E-R模型的设计法
- 基于第三范式的设计法
-
计算机辅助设计法
五、数据库设计的过程 (+1+1)
- 需求分析阶段
- 结构设计阶段:包括 概念结构设计、逻辑结构设计和物理结构设计
- 行为设计阶段:包括 功能设计、事务设计和程序设计
- 数据库实施阶段:包括 加载数据库数据和调试运行应用程序
- 数据库运行和维护阶段
第二节 数据库设计的基本步骤
- 需求分析
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 数据库实施
- 数据库运行维护
一、 需求分析+1+1+1
需求分析是数据库设计的起点,目标是了解分析用户的信息及应用处理的要求,并将结果整理成需求分析报告
-
确定数据库范围
-
应用过程分析
数据应用过程可以借助数据流程图或其他信息及应用结构图形表示
-
收集与分析数据
-
静态结构
-
动态结构
-
数据约束
- 数据的安全保密性
- 数据的完整性:数据正确性的约束范围和验证准则,以及一致性保护的要求
- 响应时间:指某些特定应用要求的数据存取时间限制
- 数据恢复
-
-
编写需求分析报告
1.数据库的应用功能目标: 要求明确标明数据库的应用范围及应达到的应用处理功能
2.标明不同用户视图范围
3.应用处理过程需求说明 +1+1
- 数据流程图,主要反映应用部门原始业务处理的工作流程
- 任务分类表,标明不同任务的功能及使用状况
- 数据操作特征表
- 操作过程说明书
二、概念结构设计方法
概念结构设计是在需求分析报告的基础上,按照特定的方法设计满足应用需求的用户信息结构,该信息结构通常称为概念模型
概念模型设计的主要目标是最大限度的满足应用需求
1.E-R图的表示方法
实体型:用矩形表示
属性:用椭圆形表示
联系:用菱形表示,菱形框内写名称
两个实体之间的联系
- 一对一联系 :如果对于实体集A中的每一个实体,实体集B中至多有一个实体(也可以没有)与之联系,反之亦然,则称实体集A与实体集B具有一对一联系
- 一对多联系 :对于实体集A中的每一个实体,实体集B种有N个实体与之联系,反之,对于实体集B中的每一个实体,实体集A种至多有一个实体与之联系,则称实体集A与实体集B有一对多的联系
- 多对多联系 :对于实体集A中每一个实体,实体集B种有N个实体与之联系,反之,实体集B中的每一个实体,在实体集A中有M个实体与之联系,则称实体集A与实体集B有多对多的联系
E-R图之间的冲突包括:
1. 属性冲突
2. 命名冲突
同名异义:不同意义的实体类型名或联系类型名在不同的局部应用中具有相同的名字
异名同义:同一意义的实体类型名或联系类型名在不同的局部应用中具有不同的名字
3. 结构冲突
结构冲突包含三类:
- 同一对象在一个局部E-R图中作为实体,在另一个局部E-R图中作为属性
- 同一实体在不同的E-R图中属性个数和类型不同
- 实体之间的联系在不同的E-R图中是不同的类型
2.局部信息结构设计
步骤:
- 确定局部范围
- 选择实体
- 选择实体关键字
- 确定实体间联系
- 确定实体的属性
三、逻辑结构设计
逻辑结构设计是在需求分析和概念结构设计的基础上进行的
步骤 +1+1
- 编制应用程序设计说明 的目的是为可实际运行的应用程序设计提供依据与指导,并作为设计评价的基础
- 设计评价: 任务是分析并检验模式及子模式的正确性与合理性
数据模型的优化
- 确定各属性间的函数依赖关系
- 对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系
- 判断每个关系模式的范式,根据实际需要确定最合适的范式
- 按照需求分析阶段得到的处理要求,分析这些模式对于这样的应用环境是否合适,确定是否要对模式进行合并或分解
- 对关系模式进行必要的分解,提高数据操作的效率和存储空间的利用率
四、物理设计
指对于一个给定的数据库逻辑结构,研究并构造物理结构的过程
五、数据库实施
数据库试运行:在已建立的数据库上按生产现场实际环境要求运行程序,进行对数据库的各种操作,检验其功能和性能,如有不当或错误,应根据实际情况修改应用程序、修改数据库物理模型,甚至修改逻辑模型
六、数据库运行和维护
系统维护中最困难的工作是数据库重组与重构
第三节 关系数据库设计方法 +1
关系数据库是采用关系模型作为逻辑数据模型的数据库系统
概念结构设计与逻辑结构设计是关系数据库整个设计过程的关键
逻辑结构设计方法
逻辑结构设计的任务是把在概念结构设计产生的概念数据模型转换为具体的DBMS所支持的逻辑数据模型
概念结构设计方法
局部信息结构设计
步骤:
-
确定局部范围
-
选择实体
-
选择实体的关键字属性
-
确定实体间联系
-
确定实体的属性
实体的属性分为标识属性和说明属性
标识属性用作实体的关键字
说明属性用作描述实体的一般特征
第四章 SQL与关系数据库基本操作
第一节 SQL概述
SQL是一种数据库查询和程序设计语言,用于存取数据以及查询,更新和管理关系数据库系统
二、SQL的特点 +1+1
1. 不是某个数据库供应商专有的语言
2. 简单易学
3. 灵活,可以进行非常复杂和高级的数据库操作
SQL语句不区分大小写
三、SQL的组成 +1+1
SQL集数据查询,数据定义,数据操纵和数据控制四大功能于一体 填空题
1.数据定义语言(DDL) 选择题 +1+1+1+1
数据定义语言主要用于对数据库及数据库中的 各种对象 进行创建、删除、修改的操作
数据库对象主要有表、默认约束、视图、规则、触发器、存储过程等
1)CREATE 用于创建数据库或数据库对象
2)ALTER 对数据库或数据库对象进行修改
3)DROP 删除数据库或数据对象
2.数据操纵语言(DML) 选择题 +1+1
数据操纵语言主要用于操纵数据库中的各种对象,特别是检索和修改数据
1)SELETE:用于从表或视图中检索数据
2)INSERT:将数据插入到表或视图中
3)UPDATE:修改表或视图中的数据
4)DELETE:从表或视图中删除数据
3.数据控制语言(DCL) +1+1
- GRANT 授予权限
- REVOKE 收回权限
4.嵌入式和动态SQL规则(不重要)
5.SQL调用和会话规则
SQL调用包括SQL例程和调用规则,以便提高SQL的灵活性、共享性、有效性以及时SQL具有更多的高级语言的特征
第二节 MYSQL预备知识
Mysql是一个关系数据库管理系统(RDBMS),具有客户服务体系结构,由瑞典Mysql AB公司开发。 特点:体积小、速度快、开源、遵循GPL(GNU通用公共许可证)
一、MYSQL使用基础
两种架构方式 LAMP和WAMP 填空题
- LAMP:Linux为操作系统,Apache为web服务器,Mysql作为数据库管理系统,PHP,Perl或Python语言作为服务器端脚本解释器
- WAMP::Windows为操作系统,Apache为web服务器,Mysql作为数据库管理系统,PHP,Perl或Python语言作为服务器端脚本解释器
二、MYSQL中的SQL
注意点,在mysql中 选择题
1.一个关系对应一个基本表
2.一个或多个基本表对应一个存储文件
3.一个表可以有若干个索引
4.索引也存放在存储文件中
sql中的语言要素 +1+1+1
1. 常量
程序运行过程中值不变的量,也称字面值或标量
1)字符串常量:用单引号或双引号扩起来的字符序列分为 ASCII字符串常量和Unicode字符串常量
2)数值常量,分为整数常量和浮点数常量
3)日期和时间常量
2. 变量
变量用于临时存储数据,变量中的数据可以随着程序的运行而变化
变量有名字和数据类型两个属性
名字用于标识变量
数据类型用于确定变量中存储数值的格式和可执行的运算
3. 运算符
1).算术运算符 +加 -减 *乘 /除 %求模
2).位运算符
3).比较运算符
4).逻辑运算符: NOT或!(逻辑非)、AND或&&(逻辑与)、OR或||(逻辑或)
4. 表达式
是常量、变量、列名、复杂计算、运算符和函数的组合,一个表达式通常可以得到一个值。
数据类型有字符串,数值,日期时间
5. 内置函数
第三节 数据定义
sql数据定义功能包括数据库模式定义,表定义,索引定义和视图定义 +1
一、数据库定义
- 创建数据库: CREATE { SCHEMA| DATABASE }[IF EXISTS] db_name
- 选择数据库: USE db_name
- 修改数据库: ALTER { DATABASE | SCHEMA } db_name
- 删除数据库: DROP {DATABASE | SCHEMA } [IF EXISTS] db_name
- 查看数据库:可使用SHOW DATABASES 或 SHOW SCHEMAS查看可用数据库列表 填空
二、表定义
- 创建表
- 删除表 DROP TABLE table_name
- 修改表
数据表被定义为字段的集合,数据在表中是按行和列的格式来存储的,每一行代表一条记录,每一列代表记录中一个字段的取值
NULL值:指没有值或缺值,在MYSQL中通过关键字"NULL"来指定
主键: 在CREATE TABLE语句中,主键是通过PRIMARY KEY关键字来指定的
三、索引定义 +1+1+1
索引的描述
- 索引是以文件形式存储的,DBMS会将一个表的所有索引保存在同一个索引文件中,索引文件需要占用磁盘空间
- 索引能提高数据文件的访问效率
- 索引会降低更新表的速度
索引的分类
-
普通索引(INDEX)
-
唯一索引(UNIQUE)
-
主键索引(PRIMARY KEY):创建主键时必须指定关键字PRIMARY KEY,且不能有空值
- 索引的创建 选择题
- 使用CREATE [UNIQUE] [CLUSTER] INDEX<索引名> ON <表名>语句创建索引
- 使用CREATE TABLE语句创建索引
- 使用ALTER TABLE语句创建索引
- 索引的查看 可以使用SHOW INDEX语句
- 索引的删除 可以使用 DROP INDEX 或者 ALTER TABLE语句来删除
4. 索引的修改
第四节 数据更新
数据更新的操作有三种,1.向表中添加若干行数据2.修改表中的数据3.删除表中的若干行数据
一、插入数据 选择题 +1+1
- 使用INSERT ... VALUES语句插入单行或多行元组数据
- 使用INSERT ... SET 语句插入部分列值数据
- 使用INSERT ... SELECT语句插入子查询数据
第五节 数据查询
数据查询是SQL语言的核心功能,也是数据库中使用最多的操作,用途是从数据库的一张或多张表(或视图)中检索出满足条件的数据信息
SQL提供SELECT语句进行数据查询,其数学理论基础是关系数据模型中对表对象的一组关系运算,即选择、投影和连接 +1+1
一、SELECT语句
SELECT 子句用于指定输出的字段
FROM 子句用于指定数据的来源
WHERE 子句用于指定数据的选择条件
GROUP BY 子句用于对检索到的记录进行分组
ORDER BY 子句用于对查询的结果进行排序
二、列的选择与指定
若查询一个表中的所有列,则可以在SELECT语句指定列的位置上直接使用星号(*)通配符,而不必逐个列出所有列名
三、FROM子句与多表连接查询
- 交叉连接
- 内连接 (最常用的连接类型)选择题
- 外连接: 把被舍弃的值也保留在结果中,但是要加NULL
四、WHERE子句与条件查询
-
比较运算
-
判定范围
-
判定空值
-
子查询 选择题
1)表子查询 返回的结果集是一个表 2)行子查询 返回的结果集是带有一个或多个值的一行数据 3)列子查询 返回的结果集是一列数据,该列可以有一行或多行,但每行只有一个值 4)标量子查询 返回的结果集仅仅是一个值
第六节 视图
视图是数据库中的一个对象,他是数据库管理系统提供给用户的以多种角度观察数据库中数据的一种重要机制。视图是从一个或多个表或者其他视图中通过查询语句导出的表,它也包含一系列带有名称的数据列和若干条数据行,并有自己的视图名
视图的优点
- 集中分散数据
- 简化查询语句
- 重用SQL语句
- 保护数据安全
- 共享所需数据
- 更改数据格式
创建视图
删除视图
查询视图
更新视图
由于视图是一个虚拟表,所以我们对视图的插入,更新,删除等操作,最终要反映到对基本表的操作
第五章 数据库编程
第一节 存储过程
一、存储过程的基本概念 +1+1
存储过程是由声明式的SQL语句(CREATE、UPDATE、SELECT)和过程式的SQL语句(IF...THEN...ELSE流程控制语句)组成编写的模块,存储在数据库服务器端,供客户端程序调用
使用存储过程的好处 选择题 +1+1
-
增强SQL语言的功能和灵活性
-
良好的封装性
-
高性能:
存储过程执行一次后,其执行规划就驻留在高速缓冲存储器中,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执行即可,从而提高了性能
-
可减少网络流量
-
存储过程可以作为一种安全机制来确保数据库的安全性和数据的完整性
二、创建存储过程
三、存储过程体 +1+1
1.局部变量
在MYSQL中可以使用DECLEAR语句来声明局部变量
局部变量和用户变量的区别
局部变量声明时,在其前面没有使用@符号,并且它只能被声明它的BEGIN...END语句块中的语句所使用
用户变量在声明时会在其名称前面使用@符号,同时移声明的用户变量存在于整个会话中
3.SELECT...INTO语句
Mysql中可以使用SELECT...INTO语句把选定列的值直接存储到局部变量中,其语法格式:
SELECT col_name[...] INTO var_name[,...] table_exrp
4.流程控制语句 +1+1+1
- 条件判断语句:常用的有 IF...THEN...ELSE语句和CASE语句
- 循环语句:常用的循环语句有WHILE、REPEAT、和LOOP语句,在循环语句中使用ITERATE语句退出当前循环且重新开始一个循环
5.游标
游标是一个被SELECT语句检索出来的结果集,在存储了游标后应用程序或用户就可以根据需要滚动或浏览其中的数据
- 声明游标: 在能够使用游标之前,必须先声明(定义)它。语法:DECLEAR<游标名>COURSOR FOR <SELECT 语句>
- 打开游标:在定义游标后,必须打开游标,才能使用 。语法:OPEN<游标名>
- 读取数据:在MYSQL中,可以使用 FETCH...INTO语句从中读取数据
- 关闭游标:语法:CLOSE<游标名>
句柄必须在游标之后定义,否则系统会出现错误消息
游标使用的注意事项
- 游标只能使用于存储过程或存储函数中,不能单独在查询操作中使用
- 在存储过程或存储函数中可以定义多个游标,但是在一个BEGIN...END语句中每一个游标的名字必须是唯一的
- 游标不是一条SELECT语句,而是被SELECT语句检索出来的结果集
四、调用存储过程
创建好存储过程后,可以使用CALL语句在程序或者其他存储过程中调用
第二节 存储函数
存储函数的特点
- 存储函数不能有输出参数,因为存储函数自身就是输出参数,存储过程可以拥有参数
- 可以直接对存储函数进行调用,而不需要使用CALL语句;存储过程的调用,需要使用CALL语句
- 存储函数中必须包含一条RETURN语句,而这条特殊的SQL语句不允许包含在存储过程中
删除存储函数
删除语句:DROP FUNCTION。
注意事项如下:
(1)在删除之前,必须确认该存储函数没有任何依赖关系,否则会导致其他与之关联的存储函数无法运行。
(2)为防止因删除不存在的存储函数而引发的错误,可在DROPFUNCTION语句中添加关键字“IF EXISTS"。
第六章 数据库安全与保护
通常DBMS对数据库的安全保护功能是通过完整性控制,安全性控制,并发控制和数据库的备份与恢复四个方面来实现的
第一节 数据库完整性
数据库的完整性是指数据库中数据的正确性和相容性
正确性:符合现实世界的描述
相容性:同一对象在不同表里面是符合逻辑的,比如我的地址,年龄 在两个表里面都应一致
一、完整性约束条件的作用对象 +1+1
-
列级约束
- 对数据类型的约束
- 对数据格式的约束
- 对取值范围或取值集合的约束
- 对空值的约束
-
元组约束
-
表级约束:指若干元组之间、关系之间的联系的约束
二、定义与实现完整性约束 +1+1
-
实体完整性 +1+1
-
主键约束: 主码唯一,且非空
主键可以是表中的某一列,也可以由表中的多个列组合而成。多个列组合而成的主键称为复合主键
1)每个表只能定义一个主键 2)主键的值,也称为键值,必须能够唯一标志表中的每一行记录,且不能为NULL 3) 复合主键不能包含不必要的多余列 4) 一个列名在复合主键的列表中只能出现一次 主键约束可以在CREATE TABLE 或 ALTER TABLE语句中使用关键字“PRIMARY KEY”来实现 6) 作为列的完整性约束,只需在表中某个列的属性定义后加上关键字 “PRIMARY KEY”即可 7) 作为表的完整性约束,需要在表中所有列的属性定义后添加一条 PRIMARY KEY (index_col_name,...)格式的 子句
- 候选键约束
1) 一个表中只能创建一个主键,但是可以定义若干个候选键 2) 定义主键约束时,系统会自动产生PRIMARY KEY 索引,而定义候选键约束时,系统会自动产生UNIQUE索引
-
- 参照完整性:通过在创建表或更新表的同时定义一个外键来实现的,外键要么为空,要么对应外键对应的表中主键的取值
- 用户定义的完整性
- 非空约束
create table student( no char(9) primary key , age int not null );
- 列值唯一
create table student( no char(9) primary key , age int UNIQUE );
-
CHECk约束 语法格式 CHECK(expr)
"expr"是一个SQL表达式,用于指定检查主要的限定条件
create table student( no char(9) primary key , sex char(2) check(sex in ('男','女')) );
三 命名完整性约束
在各种完整性约束的定义说明前加上关键字"CONSTRAINT"和该约束的名字
四 更新完整性约束
当对各种约束进行命名后,就可以使用ALTER TABLE语句来更新与列或表有关的各种约束
更新完整性约束需要注意:
-
完整性约束不能直接被修改,若要修改某个约束,实际上是用ALTER TABLE语句先删除该约束,然后再增加一个与该约束同名的新约束
-
使用ALTER TABLE语句可以独立的删除完整性约束,而不会删除表本身。而使用DROP TABLE语句删除表,则表中的所有完整性约束都会自动被删除
第二节 触发器
触发器是用户定义在关系表上的一类由事件驱动的数据库对象,也是一种保证数据完整性的方法
一、创建触发器
MySQL中使用 CREATE TRIGGER 语句创建触发器
注意 在触发器的创建中,每个表,每个事件,每次只允许一个触发器
二、删除触发器
DROP trigger <触发器名> on <表名>
注意 当删除一个表时会自动的删除该表上的触发器,且触发器不能更新或覆盖,为了修改一个触发器,必须先删除它,然后再重新创建
三、使用触发器
MySQL支持的触发器有三种,INSERT触发器,UPDATE触发器,DELETE触发器
第三节 安全性与访问控制
安全性指保护数据库以防止不合法的使用而造成数据泄露,更改或破坏 +1
数据库系统对数据的安全管理是使用身份验证,数据库用户权限确认等访问控制措施
一、用户账号管理
MySQL的用户账号及相关信息都存储在一个名为mysql的MySQL数据库中
-
创建用户账号
-
删除用户
可以使用 DROP USER 语句删除一个或多个用户账号以及相关的权限,语法DROP USER user[,user]...
注意 在 DROP USER语句的使用中,如果没有明确的给出账户的主机名,则系统会默认这个账户的主机名是“%”
-
修改用户账号
可以使用 RENAME USER语句修改一个或多个已经存在的MYSQL用户账号
1) RENAME USER语句用于对原有MYSQL账户进行重命名
2) 要使用 RENAME USER语句必须拥有MYSQL中 mysql数据库的UPDATE权限或全局CREATE USER权限
3) 倘若系统中旧帐户不存在或新账户已存在,则语句执行会出现错误
- 修改用户口令
账户权限管理
权限的授予 主要存取权限
Reference权限代表是否允许创建外键
权限的撤销
权限的撤销可以使用revoke语句来实现
revoke select on student from user1
第四节 事务与并发控制
一、事务的概念
事务是用户定义的一个数据操作序列,这些操作可作为一个完整的工作单元,要么全部执行,要么全部不执行
事务与程序的区别:
程序是静态的,事务是动态的,是程序的执行而不是程序本身;
同一个程序的多个独立执行可以同时进行,而每一步执行则是一个不同的事务
用户显式定义事务的语句:
一般有三条:BEGIN TRANSACTION 、COMMIT、和 ROLLBACK
事务通常以 BEGIN TRANSACTION语句开始,以COMMIT语句或ROLLBACK语句结束
二、事务的特征 +1+1+1
- 原子性:事务是不可分割的最小工作单位。事务在执行时要求遵循“要么全做,要么全不做”的原则
- 一致性:一致性要求事务必须满足数据库的完整性约束,且事务执行完毕后,将数据库由一个一致性状态转变到另一个一致性状态(一致性和原子性密切相关)
- 隔离性: 一个事务的执行不能被其他事务干扰,一个事务对数据库变更的结果必须在它COMMIT之后,另一个事务才能存取
- 持续性(永久性):一个事务一旦提交,他对数据库中数据的改变应该是永久性的,并且接下来的其他操作或故障不应该对其执行结果有影响
三、并发操作问题
- 丢失更新:设有两个事务T1和T2,当它们同时读入同一个数据并加以修改时,事务T2的提交结果会破坏事务T1提交的结果。
- 不可重复读:设有两个事务T1和T2,事务T1读取数据后,事务T2执行更新操作,使事务T1无法再现前一次读取的结果。
- 读“脏”数据:设有两个事务TI和T2,事务TI修改某一个数据,并将其写回磁盘,事务T2读取同一个数据后,事务TI由于某种原因被撤销,这时事务TI已修改过的数据恢复原值,事务T2读到的数据就与数据库中的数据不一致,则事务T2读到的数据就为“脏”数据。
产生上述三类数据不一致的主要原因是并发操作破坏了事务的隔离性
四、*
*是最常用的并发控制技术
基本思想:需要时,事务通过向系统请求对他所希望的数据对象加锁,以确保他不被非预期改变。
-
锁:分为排他锁/写锁(Exclusive Lock, X锁)和共享锁/读锁(Shared Lock,S锁)
-
用*进行并发控制 +1+1
- 若事务T对数据D加了X锁,则所有别的事务对数据D的锁请求都必须等待直到事务T释放锁
- 若事务T对数据D加了S锁,则所有别的事务还可对数据D请求S锁,而对数据D的X锁请求必须等到事务T释放锁
- 事务执行数据库操作时都要先请求相应的锁,即对读请求S锁,对更新(插入,删除,修改)请求X锁
- 事务一直占有获得的锁直到结束(COMMIT或ROLLBACK)时释放
-
*的粒度
-
*的级别:又称一致性级别或隔离度
- 0级*
- 1级*:被*的事务不允许重写未提交的更新数据,这防止了丢失更新的发生
- 2级*:被*的事务既不重写也不读未提交的更新数据,这除了1级*的效果外还防止了读脏数据
- 3级*:被*的事务不读未提交的更新数据,不写任何未提交数据,防止不可重读的问题。这是严格的*,保证多个事务并发执行的可串行化
-
活锁与死锁
死锁的检测可以使用图论的方法实现,并以正在执行的事务为节点
-
可串行性
通常,在数据库系统中,可串行性就是并发执行的正确性原则,即当且仅当一组事务的并发执行调度是可串行化的,才认为他们是正确的
-
两段*法
两段*法是事务遵循两段锁协议的调度方法
事务分为两个阶段
- 发展或加锁阶段
- 收缩或释放阶段
定理:遵循两段锁协议的事务的任何并发调度都是可串行化的
第五节 备份与恢复
造成数据库运行事务异常中断的因素
- 计算机硬件故障
- 计算机软件故障
- 病毒
- 人为误操作
- 自然灾害
- 盗窃
常用的数据库安全与保护机制:完整性约束(包括触发器)、访问控制、事务与并发控制以及备份与恢复 Mysql中备份与恢复的方法
- 使用SELECT INTO ... OUTFILE语句备份数据
- 使用LOAD DATA ...INFILE语句恢复数据
第八章 数据管理技术的发展
第一节 数据库发展技术概述
数据模型是数据库系统的核心和基础
一、第一代数据库系统
数据之间的联系在层次和网状数据库系统中都是用存取路径来表示和实现的
二、第二代数据库系统 +1 +1
有人把20世纪70年代称为数据库时代
关系数据库是以关系模型为基础的,而关系模型是由数据结构、关系操作和数据完整性三部分组成
特点: 模型简单清晰、理论基础好、数据独立性强、数据库语言非过程化和标准化
三、新一代数据库系统
第三代数据库的特征
-
应集数据管理,对象管理和知识管理为一体。数据模型是划分数据库发展阶段的重要依据 。第三代数据库应该是以支持面向对象数据模型为主要特征的数据库系统
-
必须保持或基层第二代数据库系统的技术
-
必须对其他系统开放
数据库系统的开放性表现在:
- 支持数据库语言标准
- 在网络上支持标准网络协议
- 系统具有良好的可移植性,可连接性,可扩展性和互操作性
第二节 数据仓库与数据挖掘
一、 从数据库到数据仓库+1+1
数据仓库的概念:数据仓库是面向主题的、集成的、稳定的,随时间变化的,用以支持管理决策的过程
-
粒度
粒度是指数据仓库的数据单位中保存数据的细化或综合程度的级别,细化程度越高,粒度级就越小,相反的,细化程度越低,粒度级就越大
-
分割
分割是将数据分散到各自的物理单元,以便能分别处理,以提高数据处理的效率。数据分割后的单元称为切片
-
维
数据集市的基本思想是自下而上的数据仓库的开发方法
二、数据挖掘技术
在数据库技术中,数据处理基于查询,可以发现有用的信息,但是数据处理不是数据挖掘
-
概念描述
-
关联分析:可分为 简单关联、时序关联、因果关联。
-
分类与预测
-
聚类 +1+1
聚类是把数据按照相似性归纳成若干类别,同一类中的数据彼此相似,不同类中的数据相异
-
孤立点检测
-
趋势和演变分析
第三节 大数据管理技术
一、大数据定义
- 数据量巨大,即大量化
- 数据种类繁多,即多样化
- 处理速度快,即快速化
- 价值密度低
二、大数据管理技术的典型代表
1. 大数据存储
2.NoSQL数据管理系统 +1+1
NOSQL是以互联网大数据应用为背景发展起来的分布式数据管理系统
-
键值(KEY-Value)存储: 是NoSQL数据库采用最多的数据存储方式
-
文档存储:常见的文档型数据库有 CouchDB,MongoDB等
-
列存储
常见的列存储数据库有Cassandra,HBase等
-
图存储
图存储数据库是基于图理论构建的,使用节点,属性和边的概念。
节点代表实体
属性保存与节点相关的信息,
用边来连接节点,表示两者关系
下一篇: 数据库系统入门 [基础