数据库系统原理
数据库系统原理
第1章 数据库系统概述
数据库基本概念
-
什么是数据
- 数据(Data)是描述事物的符号记录,是指利用物理符号记录下来的、可以鉴别的信息。
- 数据是信息存在的一种形式,只有通过解释或处理的数据才能成为有用的信息。
-
什么是数据库
- 数据库(Database,DB)是指长期储存在计算机中的有组织的、可共享的数据集合。
- 数据要按照一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性,系统易于扩展,并可以被多个用户分享。
-
数据库管理系统及其功能
-
数据库管理系统(DBMS)是专门用于建立和管理数据库的一套软件,介于应用程序和操作系统之间。
-
功能
- 1)数据定义功能
- 2)数据操纵功能
- 3)数据库的运行管理功能
- 4)数据库的建立和维护功能
- 5)数据组织、存储和管理功能
- 6)其他功能
-
-
数据库系统的构成
数据管理技术的发展
-
人工管理阶段
- 1)数据不保存
- 2)应用程序管理数据
- 3)数据面向应用程序
-
文件系统阶段
-
数据库系统阶段
- 1)数据集成(主要目的)
- 2)数据共享性高
- 3)数据冗余小
- 4)数据一致性
- 5)数据独立性高
- 6)实施统一管理与控制
- 7)减少应用程序开发与维护的工作量
数据库系统的结构
-
数据库系统的结构分类
-
从DBA的视角
-
内部系统结构,采用三级模式
- 模式
- 内模式
- 外模式
-
外部系统结构
- 集中式结构
- 分布式结构
- 并行结构
-
-
从数据库应用的用户的视角
- 客户/服务器结构
- 浏览器/服务器结构
-
-
数据库的三级模式结构
-
概念
- 模式 也称为概念模式或逻辑模式 - 数据库的核心,也是数据库设计的关键 - 外模式 也称为子模式 或用户模式 - 内模式也称为存储模式
-
三级模式的两层映像与数据独立性
- 所谓映像,就是一种对应规则,它指出映像双方是如何进行转换的
-
-
客户/服务器(C/S)结构
- 客户/服务器结构(Client/Server,C/S)中, “客户端”、“前台”或“表示层”主要完成与数据库使用者的交互任务; “服务器”、“后台”或“数据层”主要负责数据管理。
-
浏览器/服务器(B/S)结构
- 浏览器/服务器结构(Browser/Server,B/S),是一种基于Web应用的客户/服务器结构,也称为三层客户/服务器结构。三层:表示层、处理层(中间层)、数据层。
数据模型
-
什么是模型
- 模型(Model)是现实世界特征的模拟和抽象表达。
- 数据模型是对现实世界数据特征的抽象,描述的是数据的共性内容。
-
数据的特征
-
分类
-
静态特征
- 数据的基本结构
- 数据间的联系
- 数据取值范围的约束
-
动态特征
- 指对数据可以进行符合一定规则的操作。
-
-
-
数据模型组成的要素
-
数据结构
- 描述的是系统的静态特征,即数据对象的数据类型、内容、属性以及数据对象之间的联系。
-
数据操作
- 描述的是系统的动态特征
-
数据约束
- 描述数据结构中数据间的语法和语义关联
-
-
数据模型的分类
-
什么是概念层数据模型
- 概念层是数据抽象级别的最高层。
- 概念层数据模型,也称为数据的概念模型或信息模型,这类模型主要用于数据库的设计阶段
-
信息世界设计的基本概念
- 实体(Entity)
- 属性(Attribute)
- 码或键(Key)
- 域(Domain)
- 实体型(Entity Type)
- 实体集(Entity Set)
- 联系(Relationship)
-
概念模型的表示方法
-
E-R图
-
-
什么是逻辑层数据模型
- 逻辑层是数据抽象级别的中间层。逻辑层数据模型,也称为数据的逻辑模型。任何DBMS都是基于某种逻辑数据模型。
-
逻辑模型的类型
-
层次模型
- ⚫ 是最早使用的一种数据模型
- ⚫ 有且仅有一个结点没有父结点,称作根结点
- ⚫ 其他结点有且仅有一个父结点
-
网状模型
- ⚫ 以网状结构表示实体与实体间的联系
- ⚫ 允许结点有多于一个父结点
- ⚫ 可以有一个以上的结点没有父结点
-
关系模型
- • 建立在严格的数学概念的基础上
- • 概念单一
- • 存取路径对用户透明,有更高的数据独立性,更好的安全保密性
-
面向对象模型
- • 既是概念模型又是逻辑模型
- • 表达能力丰富,对象可复用、维护方便
-
-
物理层数据模型
- 物理层数据模型,也称为数据的物理模型,描述数据在存储介质上的组织结构,是逻辑模型的物理实现;
- 是数据库最底层的抽象;
- 设计目标是提高数据库性能和有效利用存储空间。
第2章 关系数据库
关系数据库概述
关系数据模型
-
组成要素
-
关系数据结构
-
表
-
也称为关系,是一个二维的数据结构,由表名、列、若干行数据组成。
-
每个表有唯一的表名,表中每一行数据描述一条具体的记录值
-
一个关系逻辑上对应一张二维表,可以为每个关系取一个名称进行表示
-
关系的三种类型
-
基本关系、(基本表、基表)
- 真实存在的表
-
查询表
-
视图表
- 导出的虚表
-
-
-
列(Column)
-
也称为字段(Field)或属性(Attribute)
-
表名必须唯一;
-
字段名必须唯一,
-
不同表中可以出现相同的字段名;
-
属性(Arrtibute)=列
- 属性的个数称为关系的元或度,
- 列的值称为属性值,其取值范围称为值域
-
-
行(Row)
- 也称为元组(Tuple)或记录(Record)。表中的数据按行存储。
-
分量(Component)
- 分量(Component)=具体的数据项
- 元组(行)中的一个属性值,称为分量
-
码或键(Key)
- 属性(或属性组)的值都能用来唯一标识该关系的元组,则称这些属性(或属性组)为该关系的码或键
-
超码或超键(Super Key)
- 在码中去除某个属性,它仍然是这个关系的码
-
候选码或候选键(Candidate Key)
- 在码中不能从中移去任何一个属性,否则它就不再是这个关系的码或键。
- 候选码或候选键是这个关系的最小超码或超键。
-
主属性(Primary Attribute)或非主属性(Nonprimary Attribute)
- 包含在任何一个候选码中的属性称为主属性或码属性
-
主码或主键(Primary Key)
- 在若干个候选码中指定一个唯一标识关系的元组(行)
-
全码或全键(All Key)
- 一个关系模式的所有属性集合是这个关系的主码或主键,这样的主码或主键称为全码或全键
-
外码或外键(Foreign Key)
- 某个属性(或属性组)不是这个关系的主码或候选码,而是另一个关系的主码
-
参照关系(Referencing Relation)和被参照关系(Referenced Relation)
- 参照关系也称为从关系,被参照关系也称为主关系,它们是指以外码相关联的两个关系
-
域(Domain)
- 表示属性的取值范围。
-
数据类型(Data Type)
- 每个列都有相应的数据类型,它用于限制(或容许)该列中存储的数据。
-
关系模式(Relation Schema)
- 关系模式是型(type),关系是值(value),即关系模式是对关系的描述。
- 关系模式是静态的、稳定的,关系是动态的、随时间不断变化的。
-
关系数据库(Relation Database)
-
所有关系的集合,构成一个关系数据库。
-
以关系模型作为数据的逻辑模型,并采用关系作为数据组织方式的一类数据库,其数据库操作建立在关系代数的基础上
-
关系数据库对关系的限定/要求
- 1)每一个属性都是不可分解的(不允许表中有表);
- 2)每一个关系仅仅有一种关系模式;
- 3)每一个关系模式中的属性必须命名,属性名不同;
- 4)同一个关系中不允许出现候选码或候选键值完全相同的元组;
- 5)在关系中元组的顺序(即行序)是无关紧要的,可以任意交换;
- 6)在关系中属性的顺序(即列序)是无关紧要的,可以任意交换。
-
-
-
关系数据操作
-
操作分类
-
查询(Qurey)
-
插入(Insert)
-
删除(Delete)
-
修改(Update)
-
-
关系数据语言的分类
-
关系代数语言
-
SQL(结构化查询语言)
-
关系演算语言
- 元组关系演算
- 域关系演算
-
-
三大要素
- 操作对象
- 操作符
- 操作结果
-
专门的关系运算
-
选择
- 选择(SELECT):σF(R) 选出来的行
- SELECT 关系名 WHERE 条件
-
投影
- 投影(PROJECTION):πA(R)选出来的列
- PROJECTION 关系名 (属性名1,属性名2,…,属性名n)
-
连接
-
连接(JOIN),也称θ连接
- 等值连接
- 自然连接
-
JOIN 关系名 1 AND 关系名 2 WHERE 条件
-
-
除
- 除(DIVISION):R÷S
-
-
-
关系完整性约束
-
概念
- 正确性
- 相容性
- 一致性
-
分类
-
实体完整性约束
- 主码的组成不能为空,主属性不能是空值NULL
-
参照完整性约束
- 定义外码和主码之间的引用规则
- 要么外码等于主码中某个元组的主码值,要么为空值(NULL)
-
用户定义完整性约束
- 域完整性约束(针对某一应用环境的完整性约束)、其他
-
-
型完整性约束的检验
-
执行插入操作的检验
- 检查实体完整性约束
- 检查参照完整性约束
- 检查用户定义完整性约束
-
执行删除操作
- 是否被引用
- 一般只需要对被参照关系检查参照完整性约束
-
执行更新操作
- 上述两种情况的综合。
-
-
-
关系数据库的规范化理论
-
关系模式中可能存在冗余和异常问题(简单应用)
-
数据冗余
- 指同一数据被反复存储的情况
-
更新异常
- 数据冗余造成的,多个内容更改使操作错误
-
插入异常
-
删除异常
-
-
函数依赖与关键字(综合应用)
-
函数依赖
-
关系中属性间的对应关系
-
分类
-
完全函数依赖
-
部分函数依赖
-
传递函数依赖
-
-
-
-
范式与关系规范化的过程(综合应用)
-
概念
- 一个低一级范式的关系模式通过模式分解(Schema Decomposition)可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化(Normalization)。
-
第一范式1NF
- 设R为任一给定关系,若果R中每个列与行的交点处的取值都是不可再分的基本元素,则R为第一范式。
- 冗余高
- 插入操作异常
- 删除操作异常
-
第二范式2NF
- 设R为任一给定关系,若R为1NF,且其所有非主属性都完全函数依赖于候选关键字,则R为第二范式
- 冗余高
- 插入操作异常
- 删除操作异常
-
第三范式3NF
- 设R为任一给定关系,若R为2NF,且其每一个非主属性都不传递函数依赖于候选关键字,则R为第三范式。
-
第三范式的改进形式BCNF
- 设R为任一给定关系,X、Y为其属性集,F为其函数依赖集,若R为3NF,且其F中所有函数依赖X→Y(Y 不属于X)中的X必包含候选关键字,则R为BCNF。
-
第3章 数据库设计
数据库设计概念
-
数据库的生命周期
-
数据库分析与设计阶段
- 需求分析
- 概念设计
- 逻辑设计
- 物理设计
-
数据库实现与操作阶段
- 实现
- 操作与监督
- 修改与调整
-
-
数据库设计的目标
-
满足应用功能需求
- 存、取、删、改
- 增、查、删、改
-
良好的数据库性能
- 数据的高效率存取和空间的节省
- 共享性、完整性、一致性、安全保密性
-
-
数据库设计的内容
-
数据库结构设计(静态的)
- 数据库概念结构设计
- 逻辑结构设计
- 物理结构设计
-
数据库行为设计(动态的)
- 是确定数据库用户的行为和动作,而用户的行为和动作是对数据库的操作,它们通常是通过应用程序来实现的。
-
-
数据库设计的方法
-
直观设计法
- 最原始的数据库设计方法
-
规范设计法
- • 新奥尔良设计方法:需求分析、概念结构设计、逻辑结构设计、物理结构设计
- • 基于E-R模型的数据库设计方法
- • 基于第三范式的设计方法,是一类结构化设计方法
-
计算机辅助设计法
- 辅助软件工程工具
-
-
数据库设计的过程
-
需求分析
-
结构设计
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
-
行为设计
- 功能设计
- 事务设计
- 程序设计
-
数据库实施
- 加载数据库数据
- 调试运行应用程序
-
数据库运行与维护
-
数据库设计的基本步骤
-
需求分析
-
概念
- 数据库设计的起点
- 目标:是了解与分析用户的信息及应用处理的要求,并将结果按一定格式整理而形成需求分析报告。
- 该分析报告是后续概念设计、逻辑设计、物理设计、数据库建立与维护的依据。
-
步骤
-
确定数据范围
-
数据库的第一项工作
- (1)有效地利用计算机设备及数据库系统的潜在能力;
- (2)提高数据库的应变能力;
- (3)避免应用过程中对数据库做太多或太大的修改;
- (4)延长数据库的生命周期。
-
-
分析数据应用过程
-
了解并分析数据与数据处理间的关系
- (1)用到哪些数据;
- (2)数据使用的顺序;
- (3)对数据作何处理和处理的策略以及结果;
-
应用过程分析的结果是数据库结构设计的重要依据
-
-
收集与分析数据
-
数据收集与分析的任务是了解并分析数据的组成格式及操作特征,每个数据元素的语义及关系等,并将它们收集起来整理归档
-
静态结构 — 不施加应用操作于其上时数据的原始状况
- 数据分类表—用于数据的总体描述
- 数据元素表—指通常意义下的数据项或属性
-
动态结构 —将应用操作施加于数据之上后数据的状况
-
任务分类表----一个任务指为完成某一特定处理功能的相对独立的操作序列
-
数据特征操作表
- 用以描述任务和数据之间的关系,它包括不同任务对数据执行不同操作的频率
-
-
数据约束 —使用数据时的特殊要求
- 1)数据的安全保密性
- 2)数据的完整性
- 3)响应时间
- 4)数据恢复
-
-
编写需求分析报告
- 1)数据库的应用功能目标
- 2)标明不同用户视图范围
- 3)应用处理过程需求说明,包括:数据流程图;任务分类表;数据操作特征表;操作过程说明书。
- 4)数据字典,是数据库系统中存储三级结构定义的数据库,通常指的是数据库系统中各类数据详细描述的集合。功能是存储和检索各种数据描述,即元数据。包括数据分类表、数据元素表和各类原始资料。
- 5)数据量
- 6)数据约束
-
-
-
概念结构设计
-
概念模型(自顶向下)
- 独立于任何软件与硬件
- 主要目标:最大限度的满足应用需求
-
实体分析法(自顶向下法)
-
属性综合法(自底向上法)
-
-
逻辑结构设计
-
目标
- 将概念模型转换为等价的、并为特定DBMS所支持数据模型的结构。
-
步骤
- 1)模型转换 是指将概念模型等价地转换为特定DBMS支持的关系模型、网状模型或层次模型表 示。
- 2)子模式设计 的目标是抽取或导出模式的子集,以构造不同用户使用的局部数据逻辑结构。
- 3)编制应用程序设计说明 的目的是为可实际运行的应用程序设计提供依据与指导,并作为设计评价的基础。
- 4)设计评价 的任务是分析并检验模式及子模式的正确性与合理性
-
-
物理设计
-
任务
- 具体任务主要是确定数据库在存储设备上的存储结构及存取方法, 因DBMS的不同还可能包括建立索引和聚集,以及物理块大小、缓冲区个数和大小、数据压缩的选择等。
-
-
数据库实施
-
加载数据
-
收集、分类、整理、校验、输入等
- 应用程序
- 设计
-
-
应用程序设计
-
数据库试运行
- 有利于工作人员掌握并熟悉系统;
- 有利于正式运行时避免人为的操作不当等损害。
-
-
数据库运行与维护
- 系统维护中最困难的工作是数据库重组与重构。
关系数据库设计方法
-
关系数据库设计过程与各级模式
-
概念结构设计方法
-
E-R图
-
局部信息结构设计
-
确定局部范围
- 局部范围主要依据需求分析报告中标明的用户视图范围来确定 。
- 往往与子模式范围相对应
-
选择实体
- 数据分类表是选择实体的直接依据。
- 实体选择的最大困难是如何区别实体与属性
-
选择实体的关键字属性
- 实体的存在依赖于其关键字的存在。
-
确定实体间联系
- 数据间的联系必须在概念设计时确定。
-
确定实体的属性
- 属性分为标识属性和说明属性
-
-
全局信息结构设计
-
-
逻辑结构设计方法
-
将E-R图转换为关系模型
- 一个实体型转换为一个关系模式,实体的属性作为关系的属性,实体的码作为关系的码
- 一个一对一联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
- 一个一对多联系可以转换为一个独立的关系模式,也可以与N端对应的关系模式合并
- 一个多对多联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性
- 三个或以上实体间的一个多元联系可以转换为一个关系模式
- 具有相同码的关系模式可合并
-
对关系数据模型进行优化
- 数据库逻辑设计的结果,不是唯一的
- 1)确定各属性间的函数依赖关系
- 2)对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。
- 3)判断每个关系模式的范式,根据实际需要确定最合适的范式。
- 4)按照需求分析阶段得到的处理要求,分析这些模式对于这样的应用环境是否合适,确定是否要对某些模式进行合并或分解。
- 5)对关系模式进行必要的分解,提高数据操作的效率和存储空间的利用率
-
设计面向用户的外模式
- 1)可以通过视图机制在设计用户视图时,重新定义某些属性的别名,使其更符合用户的习惯,以方便使用。
- 2)可以对不同级别的用户定义不同的视图,以保证系统的安全性。
- 3)简化用户对系统的使用。
-
-
物理结构设计方法
-
建立索引
- 逻辑连接
- 静态建立索引
- 动态建立索引
-
建立聚集
- 物理聚集
- 聚集是将相关数据集中存放的物理存储技术。
- 数据聚集结构的一种有效方式是块结构方式。
- 数据聚集可在一个或多个关系上建立。
-
第4章 SQL与关系数据库基本操作
SQL概述
-
什么是SQL
- 结构化查询语言(Structured Query Language,SQL)是专门用来与数据库通信的语言,它可以帮助用户操作关系数据库
-
SQL的特点
- SQL不是某个特定数据库供应商专有的语言
- SQL简单易学
- SQL强大、灵活,可以进行非常复杂和高级的数据库操作
-
SQL的组成
-
数据查询
-
数据定义(Data Definition Language,DDL)
-
CREATE
- 创建数据库或数据库对象
-
ALTER
- 对数据库或数据库对象进行修改
-
DROP
- 删除数据库或数据库对象
-
-
数据操纵(Data Manipulation Language,DML)
-
SELECT
- 从表或视图中检索数据
-
INSERT
- 将数据插入到表或视图中
-
UPDATE
- 修改表或视图中的数据
-
DELETE
- 从表或视图中删除数据
-
-
数据控制(Data Control Language,DCL)
-
GRANT
- 用于授予权限
-
REVOKE
- 用于收回权限
-
-
-
SQL 调 用
- SQL 例 程
- 调 用 规 则
MySQL预备知识
-
MySQL使用基础
-
关系数据库管理系统(RDBMS)
- 优点:体积小、速度快、开放源代码、遵循GPL
-
-
MySQL扩展语言要素
-
常量
-
也称字面值或标量值
-
分类
-
字符串常量
- 用单引号或双引号括起来的字符序列,分为ASCII字符串常量和Unicode字符串常量
-
数值常量
- 整数常量
- 浮点数常量
-
十六进制常量
- 每对十六进制数字被转换为一个字符,其最前面有一个字母“X”(或“x”)
-
时间日期常量
- 用单引号讲表示日期时间的字符串括起来而构成的
例如:’2018-06-05’
- 用单引号讲表示日期时间的字符串括起来而构成的
-
位字段值
- 格式:b’value’→二进制值
-
布尔值
- TRUE→ 1
- FALSE→0
-
NULL值
-
-
-
变量
-
用户变量
- 用户变量前常添加一个符号@,用于将其与列名区分开
-
系统变量
- 大多数系统变量应用于其他SQL语句中时,必须在系统变量前添加两个@
-
-
运算符
-
表达式
- 表达式是常量、变量、列名、复杂计算、运算符和函数的组合。
-
内置函数
-
流程控制语句
-
注解
-
-
MySQL的安装与配置
数据定义
-
数据库模式定义
-
创建数据库
- []标示其内容为可选项;| 用于分隔花括号中的选择项
-
查看数据库
-
选择数据库
-
修改数据库
-
删除数据库
-
-
表定义
-
创建表
- 数据表是关系数据库中最重要、最基本的数据对象,也是数据存储的基本单位
- 数据表,
被定义为字段的集合
按( )和( )的格式来存储的,
每一( )代表一条记录,
每一( )代表记录中一个字段的取值
-
更新表
-
使用ALTER TABLE语句,增加或删减列、创建取消索引、更改原有列的数据类型、重新命名列或表,更改表的评注和的引擎类型,为表重新创建触发器、存储过程、索引和外键等。
-
ADD[COLUMN]子句
-
CHANGE[COLUMN]子句
- 修改表中列的名称或数据类型
-
ALTER[COLUMN]子句
- 修改或删除表中指定列的默认值
-
MODIFY[COLUMN]子句
- 只修改指定列的数据类型,不会干涉它的列名
-
DROP[COLUMN]子句
- 删除表中多余的列。
-
RENAME[TO]子句
- 为表重新赋予一个表名
-
-
删除表
-
查看表
-
-
索引定义
-
索引是提高数据文件访问效率的有效方法
-
索引存在的弊端
- 1)索引是以文件的形式存储的,如果有大量的索引,索引文件可能比数据文件更快达到最大的文件尺寸;
- 2)索引在提高查询速度的同时,会降低更新表的速度。
-
分类
-
普通索引
INDEX或KEY -
唯一性索引
UNIQUE- 唯一性索引和普通索引基本相同,只是有一点区别,即索引列中的所有值都只能出现一次,必须是唯一的
-
主键
PRIMARY KEY
-
-
索引的创建
-
索引的删除
-
-
数据更新
-
插入数据
-
INSERT…VALUES语句
-
INSERT…SET语句
-
INSERT…SELECT语句
-
-
删除数据
-
修改数据
数据查询
-
SELECT语句
-
列的选择与指定
-
选择指定的列
-
选择全部的信息
-
定义并使用列的别名
-
替换查询结果集中的数据
-
计算列值
-
聚合函数
-
-
FROM字句与多表连接查询
-
交叉连接,又称笛卡尔积
-
内连接
-
外连接
-
-
WHERE子句与条件查询
-
比较运算
-
子查询
- 表子查询
- 行子查询
- 列子查询
-
-
GROUP BY子句与分组数据
-
HAVING子句
-
ORDER BY子句
-
LIMIT子句
视图
-
什么是视图
- 视图是数据库中的一个对象,它是数据库管理统提供给用户的以多种角度观察数据库中数据的一种重要机制。
- 视图不是数据库中真实的表,而是一张虚拟表,其自身并不存储数据。
-
使用视图的优点
- 集中分散数据
- 简化查询语句
- 重用SQL语句
- 保护数据安全
- 共享所需数据
- 更改数据格式
-
创建视图
- 使用CREATE VIEW创建视图
-
删除视图
- 使用DROP VIEW语句删除视图
-
修改视图定义
- 使用ALTER VIEW语句对已有视图的定义(结构)进行修改
-
查看视图定义
- 使用SHOW CREATE VIEW语句查看已有视图的定义(结构)
-
更新视图数据
-
使用INSERT语句通过视图向基本表插入数据
-
使用UPDATE语句通过视图修改基本表的数据
-
使用DELETE语句通过视图删除基本表的数据
-
-
查询视图数据
第5章 数据库编程
存储过程
-
存储过程的基本概念
-
存储过程是一组为了完成某项特定功能的SQL语句集,其实质就是一段存储在数据库中的代码。
-
它可以由声明式的sql语句和过程式sql语句组成。
-
优点
- 可增强SQL语言的功能和灵活性
- 良好的封装性
- 高性能
- 可减少网络流量
- 可作为一种安全机制来确保数据库的安全性和数据的完整性
-
-
创建存储过程
-
DELIMITER命令
-
使用CREATE PROCEDURE语句创建存储过程
-
-
存储过程体
-
使用DECLARE语句声明局部变量
-
1)只能在存储过程体的BEGIN…END语句块中声明;
-
2)必须在存储过程的开头处声明;
-
3)作用范围仅限于声明它的BEGIN…END语句块;
-
4)不同于用户变量
-
局部变量与用户变量的区别
- 1)局部变量声明时,在其前面没有@符号,并且它只能被声明它的BEGIN…END语句块中的语句所使用;
- 2)用户变量在声明时,会在其名称前面使用@符号,同时已声明的用户变量存在于整个会话之中。
-
-
使用SET语句为局部变量赋值
-
使用SELECT…INTO语句把选定列的值直接存储到局部变量中
-
流程控制语句
-
条件判断语句
- IF…THEN …ELSE语句
- CASE语句
-
循环语句
- WHILE语句
- REPEAT语句
- LOOP语句
-
-
游标
-
使用DECLARE CURSOR语句创建游标
-
使用OPEN语句打开游标
-
使用FETCH…INTO语句读取数据
-
使用CLOSE语句关闭游标
-
-
-
调用存储过程
-
使用CALL语句调用存储过程
-
-
删除存储过程
存储函数
-
什么是存储函数
- 存储函数与存储过程一样,是由SQL语句和过程式语句组成的代码片段。
-
创建存储函数
-
使用CREATE FUNCTION语句创建存储函数
-
-
调用存储函数
-
使用关键字SELECT调用存储函数
-
-
删除存储函数
-
使用DROP FUNCTION语句删除存储函数
-
第6章 数据库安全与保护
数据库完整性
-
什么是数据库完整性
- 数据库完整性是指数据库中数据的正确性和相容性
-
完整性约束条件的作用对象
-
定义与实现完整性约束
-
实体完整性
-
在MySQL中,实体完整性是通过主键约束和候选键约束实现的。
-
主键列必须遵守的规则
- 每一个表只能定义一个主键
- 主键的值(键值)必须能够唯一标志表中的每一行记录,且不能为NULL
- 复合主键不能包含不必要的多余列
- 一个列名在复合主键的列表中只能出现一次
-
-
-
参照完整性
-
用户定义的完整性
-
非空约束
- NOT NULL
-
CHECK约束
- CHECK(expr)
-
-
-
命名完整性约束
- 只能给基于表的完整性约束指定名字 - 无法给基于列的完整性约束指定名字
-
更新完整性约束
-
使用ALTER TABLE语句更新与列或表有关的各种约束。
- 1、完整性约束不能直接被修改。(先删除,再增加)
- 2、使用ALTER TABLE语句,可以独立地删除整性约束,而不会删除表本身。(DROP TABLE句删除一个表,则表中所有的完整性约束都会被自动删除)
-
触发器
-
创建触发器
-
什么是触发器
- 是用户定义在关系表上的一类由事件驱动的数据对象,也是一种保证数据完整性的方法。
-
使用CREATE TRIGGER语句创建触发器
-
-
删除触发器
-
使用DROP语句删除触发器
-
-
使用触发器
-
INSERT触发器
- 在INSERT触发器代码内,可引用一个名为NEW(不区分大小写)的虚拟表,来访问被插入的行。在BEFORE INSERT触发器中,NEW中的值可以被更新。
-
DELETE触发器
- 在DELETE触发器代码内,可引用一个名为OLD(不区分大小写)的虚拟表,来访问被删除的行。
- OLD中的值全部是只读的,不能被更新。
-
UPDATE触发器
- 在UPDATE触发器代码内,可引用一个名为OLD(不区分大小写)的虚拟表,来访问UPDATE语句执行前的值,也可以引用一个名为NEW(不区分大小写)的虚拟表来访问更新后的值。
-
安全性与访问控制
-
概念
- 数据库的安全性是指保护数据库以防止不合法的使用而造成数据泄露、更改或破坏,所以安全性对于任何一个DBMS来说都是至关重要的。
- 身份验证
- 数据库用户权限确认
-
用户账号管理
-
使用CREATE USER语句创建MySQL账户
-
使用DROP USER语句删除用户账号
-
使用RENAME USER语句修改用户账号
-
使用SET PASSWORD语句修改用户登录口
-
-
账号权限管理
-
使用GRANT语句为用户授权
-
事务与并发控制
-
事务的概念
- 所谓事务是用户定义的一个数据操作序列,这些操作可作为一个完整的工作单元,要么全部执行,要么全部不执行,是一个不可分割的工作单位。
- 事务中的操作一般是对数据的更新操作,包括增、删、改。
- 以BEGIN TRANSACTION语句开始
以COMMIT语句或ROLLBACK语句结束
-
事务的特征
- 原子性
- 一致性
- 隔离性
- 持续性
-
并发操作问题
-
丢失更新
- 事务T1,T2同时读入同一数据并加以修改,T2的提交结果会破坏T1提交的结果
-
不可重复读
- 事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果
-
读“脏”数据
- 事务T1修改数据后撤销,使得T2读取的数据与数据库中不一致
-
-
*
-
*是最常用的并发控制技术
-
基本思想
- 需要时,事务通过向系统请求对它所希望的数据对象加锁,以确保它不被非预期改变
-
锁
-
一个锁实质上就是允许或阻止一个事务对一个数据对象的存取特权。
-
基本的*类型
- 1、排他锁(X锁),用于写操作
- 2、共享锁(S锁),用于读操作
-
工作原理
- 1.若事务T对数据D加了X锁,则所有别的事务对数据D的锁请求都必须等待直到事务T释放锁。
- 2.若事务T对数据D加了S锁,则别的事务还可对数据D请求S锁,而对数据D的X锁请求必须等待直到事务T释放锁。
- 3.事务执行数据库操作时都要先请求相应的锁,即对读请求S锁,对更新请求X锁。这个过程一般是由DBMS在执行操作时自动隐含地进行。
- 4.事务一直占有获得的锁直到结束时释放。
-
-
锁的粒度
- 我们通常以粒度来描述*的数据单元的大小
DBMS可以决定不同粒度的锁
粒度越细,并发性就越大,但软件复杂性和系统开销也就越大
- 我们通常以粒度来描述*的数据单元的大小
-
锁的级别
- *的级别又称为一致性级别或隔离度
- 0级*:不重写其他非0级*事务的未提交的更新数据。(实用价值低)
- 1级*:不允许重写未提交的更新数据。防止了丢失更新的发生
- 2级*:既不重写也不读未提交的更新数据(防止了读脏数据)
- 3级*:不读未提交的更新数据,不写任何(包括读操作)未提交数据。
-
死锁和活锁
-
活锁
- 先来先服务
-
死锁
-
预防
- (1)一次性锁请求
- (2)锁请求排序
- (3)序列化处理
- (4)资源剥夺
-
-
-
可串行性
- 一组事务的一个调度就是它们的基本操作的一种排序。
- 在数据库系统中,可串行性就是并发执行的正确性准则,即当且当一组事务的并发执行调度是可串行化的,才认为它们是正确的
-
两段*法(Two-Phase Locking,2PL)
- 1.发展(Growing)或加锁阶段
- 2.收缩(Shrinking)或释放锁阶段
-
备份与恢复
-
数据库备份与恢复的概念
- 数据备份是指通过导出数据或者复制表文件的方式来制作数据库的复本;
- 数据库恢复则是当数据库出现故障或遭到破坏时,将备份的数据库加载到系统,从而使数据库从错误状态恢复到备份时的正确状态。
- 数据库的恢复是以备份为基础的,它是与备份相对应的系统维护和管理操作
-
备份数据的方法
-
使用SELECT INTO…OUTFILE语句备份数据
-
-
恢复数据的方法
-
使用LOAD DATA…INFILE语句恢复数据
-
第7章 数据库应用设计与开发实例
需求描述与分析
系统设计
系统实现
系统测试与维护
-
PHP语言简介
- PHP是Hypertext Preprocessor(超文本预处理器)的递归缩写,目前使用相当广泛,它是一种在服务器端执行的嵌入HTML文档的脚本语言。
当前世界上最流行的构建B/S模式Web应用程序的编程语言之一。
- PHP是Hypertext Preprocessor(超文本预处理器)的递归缩写,目前使用相当广泛,它是一种在服务器端执行的嵌入HTML文档的脚本语言。
-
PHP操作Mysql数据库的基本步骤
- 1.首先建立与Mysql数据库服务器的连接
- 2.然后选择要对其进行操作的数据库
- 3.再执行相应的数据库操作,包括对数据的添加、删除、修改和查询等
- 4.最后关闭与Mysql数据库服务器的连接
第8章 数据管理技术的发展
数据库技术发展概述
-
概述
- 数据库是管理数据的技术,发展了以数据建模和数据库管理系统核心技术为主,内容丰富、领域宽广的一门学科,带动了一类巨大的软件产业——数据库管理系统(DBMS)产品及其相关工具和解决方案。
- 数据模型是数据库系统的核心和基础。
-
数据库技术的发展阶段
-
第一代数据库系统
- 层次模型数据库管理系统
- 网状模型数据库管理系统
-
第二代数据库系统
-
关系数据库系统
- 关系数据库是以关系模型为基础。
- 关系模型是由数据结构、关系操作和数据完整性三部分组成。
- 关系代数作为语言基础,由关系数据理论作为理论基础。
-
主要成果
- (1)奠定了关系模型的理论基础,给出了人们一致接受的关系模型的规范说明。
- (2)研究了关系数据语言,有关系代数、关系演算、SQL语言及QBE等。
- (3)研制了大量的RDBMS的原型,攻克了系统实现中查询优化、并发控制、故障恢复等一系列关键技术。
-
特点
- • 模型简单清晰
- • 理论基础好
- • 数据独立性强
- • 数据库语言非过程化
- • 标准化
-
-
-
第三代数据库系统的特征
- 应支持数据管理、对象管理和知识管理
- 必须保持或继承第二代数据库系统的技术
- 必须对其他系统开放
数据仓库与数据挖掘
-
数据仓库及其特征
-
计算机数据处理工作的类型
-
操作型处理
- 也称为联机事务处理(OLTP)
针对具体业务在数据库联机的日常操作
- 也称为联机事务处理(OLTP)
-
分析型处理
- 也称为联机分析处理(OLAP)
通常是对海量的历史数据查询和分析
- 也称为联机分析处理(OLAP)
-
-
数据仓库(Data Warehouse,DW)是面向主题的、集成的、稳定的、随时间变化的数据集合,用以支持管理决策的过程。
数据仓库不是可以买到的产品,而是一种面向分析的数据存储方案。- 面向主题
- 集成性
- 数据的非易失性
- 数据的时变性
-
三个概念
- 粒度
- 分割
- 维
-
-
数据挖掘
-
数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中发现并提取隐藏在其中的、人们事先不知道的、但又是潜在有用的信息和知识的一种技术。又被称为知识发现。
-
什么是数据挖掘
-
功能
- 概念描述
- 关联分析
- 分类与预测
- 聚类
- 孤立点检测
- 趋势和演变分析
-
大数据管理技术
-
大数据及其特征
- 大数据是指无法在可容忍的时间内用现有信息技术和软、硬件工具对其进行感知、获取、管理、处理的服务的数据集合。
- 大量化
- 多样化
- 快速化
- 价值密度低
-
大数据管理技术典型代表
- 大数据存储
- NoSQL数据管理系统
- MapReduce技术
上一篇: 数据库系统原理摘要 - 目录
下一篇: 简述数据库系统组件和数据库设计原则
推荐阅读
-
线性可微支持向量机的原理推导 最大化几何区间 d 公式分析
-
SpringCloud--持久层框架MyBatis Plus的使用方法和原理详解--V.MyBatis Plus 使用总结
-
Java HashMap 的数据结构和基本原理及其在 Jdk8、Jdk11 和 Jdk17 中的一些变化,以及一些常见问题。
-
关系数据库标准语言 SQL 的数据库系统入门 (I) [超详细]。
-
微控制器原理与应用
-
Redis 完全指南:命令与原理 - 4. 基本命令
-
深入了解 Java 中的 ThreadLocal 机制,了解其工作原理、优缺点分析、数据库连接管理的应用、使用注意事项
-
Spring Boot 异步任务、任务调度和异步请求线程池的用法和原理
-
数据结构顺序表:从原理到 C 语言实现
-
电力电子技术 03 交直流整流器 (2) - 单相半波整流二极管不受控整流 - II.用于电阻电感负载的半波整流器的工作原理