目录
数据库系统概论
四个基本概念
-
数据
-
数据是描述事物的符号记录
-
信息与数据的关系:
-
数据是信息的载体,信息是数据的内涵
-
-
-
数据库
-
按照一定结构组织并长期存储在计算机内的、可共享的大量数据的集合
-
特点
-
永久存储、有组织、可共享
-
-
-
数据库管理系统(DBMS)
-
是位于用户和操作系统之间的一层应用软件,数据库的核心,
-
DBMS主要功能:
-
数据定义功能(DDL) :CREATE、ALTER、DROP
-
数据操纵功能(DML) : SELECT、UPDATE、INSERT 、DELETE
-
数据库的运行管理
-
数据库的建立和维护功能
-
数据库控制语言(DCL):grant ,deny,revoke
-
-
-
数据库系统(DBS)
-
DBS=计算机系统(硬件、软件平台、人(DBA))+DBMS+DB
-
特点
-
数据结构化
-
数据的共享性高,冗余度低且易扩充
-
数据独立性高
-
物理独立性:
-
用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的
-
应用程序处理的只是数据的逻辑结构,即物理存储改变,应用程序不变
-
-
逻辑独立性:
-
用户的应用程序与数据库的逻辑结构是相互独立的
-
即逻辑改变,用户程序不变
-
-
-
数据由DBMS统一管理和控制
-
数据控制功能:
-
数据的安全性保护
-
数据的完整性检查
-
并发控制
-
数据库恢复
-
-
-
-
数据管理技术的发展
-
人工阶段
-
数据不能共享,冗余度极大
-
数据无结构
-
独立性差
-
-
文件系统阶段
-
共享性差,冗余度大
-
物理独立性好,逻辑独立性差
-
记录内有结构,整体无结构
-
-
数据库系统阶段
-
共享性高、冗余度低
-
独立性高
-
整体结构化
-
-
数据库系统阶段和文件系统阶段区别:
-
数据结构化
-
数据库系统结构
三级模式结构
-
外模式(子模式或用户模式)
-
一个数据库可以有多个外模式
-
每个用户至少有一个外模式
-
外模式通常是模式的子集
-
-
模式(概念模式或逻辑模式)
-
一个数据库只有一个模式
-
概念数据库是物理数据库的逻辑抽象形式
-
-
内模式(存储模式)
-
数据物理结构和存储方式的描述
-
一个数据库只有一个内模式
-
内模式对用户透明
-
物理数据库是概念数据库的具体实现
-
二级映像
-
外模式/模式映像:
-
保障逻辑独立性
-
模式描述全局逻辑结构
-
外模式描述局部逻辑结构
-
-
内模式/模式映像;
-
描述全局逻辑结构和存储结构的对应关系
-
保障物理独立性
-
-
特性:
-
内模式/模式映像是唯一的
-
外模式/模式映像不唯一
-
-
优点
-
保证数据的独立性
-
方便用户使用,简化用户操作
-
保证数据库安全性
-
有利于数据的共享
-
数据模型
-
数据模型是数据库系统的核心和基础
-
三要素:
-
数据结构
-
对数据系统的静态特性的描述
-
-
数据操作
-
对数据库系统的动态特性的描述
-
-
数据的完整性约束条件
-
-
分类
-
概念模型:
-
实体--联系模型(E-R模型)
-
-
逻辑模型:
-
层次模型:
-
树型结构
-
节点之间的联系:一对多
-
有且只有一个节点没有双亲结点,这个节点叫根节点
-
根以外的其他节点有且只有一个双亲节点
-
-
优点
-
数据结构较简单,查询效率高
-
提供良好的完整性支持
-
-
缺点
-
不易表示多对多的联系
-
数据操作限制多、独立性较差
-
-
-
网状模型
-
有向图结构
-
允许一个以上的节点无双亲
-
一个节点可以有多于一个的双亲
-
-
优点
-
较为直接的描述显示世界
-
存取效力高
-
-
缺点
-
结构较复杂,不易使用
-
数据独立性差
-
-
-
网状和层次都是格式化数据模型
-
关系模型
-
二维表结构
-
关系模型的组成:关系数据结构,关系操作 和 关系完整性约束条件
-
-
优点
-
概念单一
-
建立在严格的数学概念基础上
-
存取路径对用户透明
-
-
缺点
-
查询效率不如格式化数据模型
-
为了提高性能,必须进行查询请求优化,增加了开发数据库管理系统的难度
-
-
-
划分原则:
-
数据之间的联系方式
-
-
面向对象模型
-
-
物理模型
-
关系数据结构
-
基本术语 :
-
元组
-
也称记录,关系表中的每一行对应一个元组
-
组成元组的元素称为分量
-
-
属性
-
列名
-
-
候选码
-
某个属性或属性组能唯一标识一个元组
-
-
主码
-
唯一标识关系的每行
-
作为关联表的外键,链接两个表
-
-
全码
-
所有属性都是这个关系的候选码
-
-
-
关系类型
-
基本关系(基本表)
-
实际存在的表
-
-
查询表
-
查询结果对应的临时表
-
-
视图表
-
是由基本表或其他视图导出的表,
-
虚表
-
-
-
关系操作
-
数据查询
-
数据维护
-
数据控制
-
-
关系操作语言
-
关系代数语言
-
关系演算语言
-
具有关系代数和关系演算双重特点的语言--结构化查询语言(SQL)
-
介于关系代数和关系演算之间的语言
-
-
-
关系完整性
-
实体完整性
-
不能取空值
-
-
参照完整性
-
两个表需要有相同的属性
-
-
用户自定义完整性
-
unique
-
not null
-
default
-
检查列值是否满足一个条件表达式:CHECK 短语
-
当操作违反数据库的实体完整性、参照完整性时,一般都采用拒绝执行的方式
-
'''
当发生不一致时,系统可以采用以下策略处理:
-
1、拒绝执行:NO ACTION,不允许该操作执行,一般设置为默认策略
-
`2、级联操作:CASCADE,删除或者修改被参照表Student中的元组导致参照表SC的不一 致时,删除或修改参照表中的所有导致不一致的元组。 '
-
3、设置为空值:就是级联但是不删除,而是设置为空值
-
-
-
-
-
关系代数
-
5 种基本运算
-
并、差、笛卡尔积、选择、投影
-
-
传统集合运算
-
并、交、差、笛卡尔积
-
-
专门的关系运算
-
选择、投影、连接、除
-
-
-
将E-R图转换成关系模式时,实体和联系都可以表示为属性
关系代数与关系数据库理论
关系代数
五个基本的关系代数操作:并、差、笛卡尔积、投影、选择
关系例子如下:
关系R:
关系S:
-
RUS(并)
注:无重复元组
-
R-S(差)
注:在关系R的基础上减去R中存在且S中存在的元组
-
R×S(笛卡尔积)
注:关系R与关系S的属性名可以不同
-
π C,A(R) (C,A在关系R上的投影)
-
σB>'4'(R)(在关系R上选择B大于4的元组)
剩余操作:交、除、连接:
-
R∩S(R与S的交集)
-
R÷S(除)
关系R_:
关系S_:
R÷S
运算过程:因为C, D是关系S中的两个属性, 因此在R集合对除了C, D的属性, 即A, B两属性进行投影, 得到a, b; b, c; e, d;这三组, 然后用这个结果与关系S进行笛卡尔积运算, 发现b c c d这组在关系R中没有, 其余a, b; e, d;做的运算在R中存在. 因此最后结果为a, b; e, d;
-
连接
关系R_:
关系S_:
-
自然连接:只返回两个表中联结字段相等的行
-
左连接:返回包括左表中的所有记录和右表中联结字段相等的记录,不相等则用null表示。
-
右连接:返回包括右表中的所有记录和左表中联结字段相等的记录,不相等则用null表示。
-
外连接:左连接+右连接(或者说并)
关系演算
-
关系代数和关系演算在功能上 是等价的
-
元组关系演算
-
域关系演算
关系数据库理论
-
在关系模型中,实体以及实体之间的联系都是用 关系 来表示的。
-
异常分类
-
数据冗余
-
插入异常
-
删除异常
-
更新异常
-
-
数据依赖
-
分类
-
函数依赖
-
部分函数依赖
-
一个例子,存在以下关系:学生(学号,姓名,学生宿舍)
(学号,姓名)→学生宿舍 (通过学号和姓名可以找到学生宿舍)
学号,姓名分别是(学号,姓名)的两个真子集。
(学号→学生宿舍)(通过学号可以得出学生宿舍)
(姓名→学生宿舍)(通过姓名也可以得出学生宿舍)
说明学生宿舍部分依赖于学号+姓名
-
-
完全函数依赖
-
考试成绩:(学号,课程,分数)
(学号,课程)→分数
但是单独知道学号或者课程两者中的一个,是无法知道具体分数的。
说明分数完全依赖于 学号+课程。
-
-
传递函数依赖
-
X->Y,Y->Z,则Z传递函数依赖于X
-
-
平凡函数依赖
-
若X->Y,且Y是X的子集(对任一关系模式,平凡函数依赖必然成立),就是 平凡函数依赖。
-
-
非平凡函数依赖
-
若X->Y,但Y不是X的子集,就是非平凡函数依赖。
-
-
-
多值依赖
-
4NF解决多值依赖
-
-
连接依赖
-
-
-
关系规范化
-
关系是关系模式在某一时刻的状态或内容
-
1NF
-
关系模式的所有属性都是不可分割的基本数据项
-
存在部分函数对主属性的依赖
-
存在数据冗余、插入异常、删除异常、修改异常
-
-
2NF
-
每个非主属性都完全函数依赖于候选码
-
消除了部分函数依赖,但存在传递函数依赖
-
存在插入异常、删除异常
-
减少数据冗余
-
修改异常解决
-
-
3NF
-
每个非主属性都不传递函数依赖于候选码
-
消除传递依赖
-
-
BCNF
-
关系模式中都是非平凡函数依赖,并且决定因素都是候选码 。
-
-
-
关系模式的分解
-
无损连接
-
1.进行自然连接
-
2.求交运算
-
3.交的属性是否能够推出其他属性
-
如果对分解后的新关系进行自然连接得到的元组的集合与原关系完全一 致,则称为无损连接;
-
-
有损连接
-
有损连接概念:如果对分解后的新关系进行自然连接得到的元组的集合与原关系不完全一 致,则称为有损连接;
-
-
保持函数依赖
-
若要求分解 保持函数依赖 ,那么模式分离总可以达到 3NF ,但不一定能 达到BCNF
-
1 如要求分解 既保持函数依赖,又具有无损连接性 ,可以达到 3NF ,但不 一定能达到BCNF
-
2 若要求分解具有 无损连接性 ,那一定能达到 4NF (自然就一定达到 BCNF)
-
-
数据库设计
-
数据库设计的特点
-
三分技术,七分管理,十二分基础数据
-
结构设计和行为设计相结合 1. 结构设计包括概念设计、逻辑设计、物理设计 2. 行为设计指用户对数据库的操作
-
综合性
-
-
设计方法
-
新奥尔良方法
-
基于E-R模型的设计方法
-
3NF的设计方法
-
ODL(面向对象的的数据库设计方法)
-
统一建模语言方法(UML)
-
-
数据库设计的阶段
-
需求分析
-
分为信息需求和处理需求
-
需求分析是整个设计过程的基础
-
数据字典
-
数据项、数据结构、数据流、数据存储、处理过程
-
-
数据流图 DFD
-
.利用数据流图来表示数据与加工之间的关系++
-
-
设计策略为:自顶向下进行设计
-
-
概念结构设计
-
概念结构设计->自底向上;
-
概念结构设计通常有四类方法: 自顶向上、 自底向下、 逐步扩张和混合策略
-
概念模型( ER图 )、 数据字典
-
概念结构设计是整个数据库设计的关键
-
需求分析、概念结构设计 独立于硬件设备和 DBMS进行
-
-
逻辑结构设计
-
将概念结构设计阶段的E-R图转变为逻辑模型(关系模式)
-
关系模式规范化
-
数据库逻辑设计的结果不是唯一的。并不是规范化程度越高的关系就越优越
-
关系模式进行分解,提高数据操作效率和存储空间的利用率。常用两种分解 方法:水平分解和垂直分解
-
-
物理结构设计
-
逻辑结构设计、物理结构设计 与选用的DBMS密切相关
-
两步
-
确定数据的物理结构,在关系数据库中主要指存取方法和存储结构
-
对物理结构进行评价,评价的重点是时间和空间效率
-
存取方法:索引方法、聚簇方法和HASH方法
-
存储方法:顺序存储、散列存储、聚簇存储
-
-
评价物理结构
-
主要从空间效率、时间效率、维护代价和各种用户要求进行权衡
-
-
-
数据库实施
-
加载数据
-
建立库结构
-
调试和运行应用程序
-
-
数据库运行和维护
-
数据库的备份和恢复
-
数据库的安全性、完整性控制
-
监督、分析和改进数据库性能
-
数据库的重组织和重构造
-
-
数据字典
-
组成
-
数据项
-
数据项是不可再分的数据单位
-
-
数据结构、数据流、数据存储、
-
处理过程
-
处理过程的具体处理逻辑一般用判定表或判定树来描述。
-
-
-
作用
-
数据字典是关于数据库中数据的描述,在需求分析阶段建立,是下一步进行概念设计的基础,在数据库设计过程中不断修改、补充和完善
-
-
-
相关概念
-
概念结构是画 E-R 图,逻辑结构是 E-R 模型转换成逻辑模型,物理结构是选择存 储结构和存取方法
-
数据的细化程度越高,粒度级就越小;反之细化程度越低,粒度级就越大
-
. 在需求分析阶段利用数据流图来表示数据与加工之间的关系
-
E-R 图的主要元素:实体型(注意是型),属性,联系
-
合并 E-R图时可能会发生三种冲突:属性冲突,结构冲突和命名冲突
-
设计子模式属于数据库设计的逻辑设计
-
数据库应用系统中的核心问题是数据设计
-
初步生成E-R图主要任务:
-
消除属性冲突、结构冲突、命名冲突
-
-
优化全局E-R图的主要任务:
-
消除不必要的冗余
-
实体的合并
-
-
概念设计图采用自底向上的方法
-
需求分析采用自顶向下的方法
-
拓扑结构采用回溯的方法
-
数据库设计人员和用户之间沟通信息的桥梁是实体联系图(E-R图)
-
概念结构设计的主要目标是产生数据库的概念结构,该结构主要反映企业组织的信息需求
-
数据库逻辑设计的主要任务是创建数据库说明
-
-
MySQL的安装与使用
-
mysql是一款单进程多线程、支持多用户。基于客户机/服务器(C/S)的关系数据库管理系统
-
优势
-
成本低、性能良、值得信赖、操作简单、兼容性好
-
-
字符集
-
指符号和字符编码的集合
-
-
特性
-
支持多种存储引擎
-
工作在C/S模式下,或嵌入式中
-
高度非过程化
-
支持多线程,使用C/C++语言编写,保证源代码的可移植性
-
-
SQL的组成
-
数据定义语言DDL
-
能够定义数据库的三级模式结构,即外模式、全局模式和内模式 结构。
-
-
数据操纵语言DML
-
包括对基本表和视图的数据插入、删除、修改和查询功能。
-
-
数据控制语言DCL
-
主要是对用户的访问权限加以控制,以保证系统的安全性
-
-
数据查询语言DQL
-
-
构成
-
Mysql数据库服务
-
MySQL服务器(MySQL Service)
-
MySQL数据库系统的核心
-
-
MySQL实例 (MySQL server)
-
MySQL数据库(MySQL Database Server)
-
-
-
MySQLD是MySQL服务器(因为MySQLD是服务器的核心进程)
-
MySQL的安装程序通常不会自动启动MySQL配置向导
-
MYSQL配置向导用于配置Windows中的服务器
-
两种配置模式:标准配置、详细配置
存储引擎与数据库操作管理
-
概述
-
是数据库底层软件组件
-
DBMS使用数据引擎进行创建、查询、更新和删除数据操作
-
在关系数据库中的数据的存储以表的形式存储的,所以存储引擎也称为表类型
-
-
常用存储引擎:
-
InnoDB存储引擎和MyISAM存储引擎
-
InnoBD
-
是事务性数据库的首选引擎
-
支持事务安全表(ACID)
-
支持行锁定和外键
-
5.5.5版本后作为默认存储引擎
-
适合处理巨大数据量
-
-
MyISAM
-
基于ISAM存储引擎,它是在web、数据仓库下最常用的存储引擎之一
-
拥有较高的插入、查询速度,但不支持事务
-
5.5.5之前的默认存储引擎
-
-
MEMORY存储引擎
-
将表中数据存储在内存中,如果数据库发生崩溃或重启,表中数据消失
-
适合用于临时存储数据、读写速度要求很快的临时表
-
使用哈希(HASH)索引
-
-
查看当前数据库支持的存储引擎:
-
SHOW ENGINES
-
SHOW VARIABLES LIKE 'have%'
-
-
-
MySQL字符集
-
包括字符集和校对规则两个概念
-
SHOW VARIABLES LIKE 'character_set_server' 查看字符集
-
SHOW VARIABLES LIKE 'collation_server' 查看校对规则
-
-
-
数据库操作管理
-
创建数据库
-
CREATE DATABASE 数据库名
-
CREATE DATABASE IF NOT EXISTS 数据库名 判断数据库是否存在
-
-
修改数据库
-
ALTER DATABASE 修改数据库
-
ALTER DATABASE CHARACTER SET GBK;
-
-
删除数据库
-
DROP DATABASE 数据库名称
-
MySQL表定义与完整性约束控制
-
表的基本概念
-
数据表是数据库中最重要、最基础的操作对象,是数据存储的基本单位
-
-
数据类型
-
数值数据类型
-
整数类型:INT
-
浮点类型:FLOAT DOUBLE DECIMAL(定点小数类型)
-
-
日期/时间类型
-
DATE、YEAR DATETIME、TIME、TIMESTAMP
-
-
字符串类型
-
CHAR、VARCHAR(可变长度类型)、TEXT
-
-
二进制类型
-
BINARY、VARBINARY、BLOB
-
-
数据表的操作:
-
创建数据表
-
CREATE TABLE 表名
-
语法
-
COMMENT 为字段名加注释
-
AUTO_INCREMENT 设置自增属性
-
PRIMARY KEY 设置主键
-
UNIQUE KEY 指定唯一性约束
-
DEFAULT 指定字段默认值
-
-
设置存储引擎、字符集
-
在create table 语句末尾加
-
ENGINE =存储引擎 类型
-
DEFAULT CHARACTER = 字符集类型
-
-
-
查看数据表结构
-
显示所有表名
-
SHOW TABLES
-
-
显示表结构
-
SHOW CREATE TABLE DESCRIBE/DESC
-
-
-
修改表数据
-
修改表名
-
ALTER TABLE 表名 RENAME TO 表名
-
-
修改字段数据类型
-
ALTER TABLE 表名 MODIFY 字段名 数据类型
-
-
修改字段名
-
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新字段数据类型
-
-
添加数据表字段
-
ALTER TABLE 表名 ADD 字段名 数据类型 (完整性约束)
-
-
在某个字段后添加字段
-
ALTER TABLE 表名 ADD 字段名 数据类型 AFTER 表中某个字段
-
-
更改表的存储引擎
-
ALTER TABLE 表名 ENGINE= MyISAM
-
-
-
复制数据表
-
CREATE TABLE 新表名 LIKE 旧表
-
复制字段
-
CREATE TABLE 新表名 AS SELECT 字段 from 旧表
-
-
-
删除数据表
-
DROP TABLE 表名
-
MySQL约束控制
-
数据完整性约束
-
实体完整性
-
参照完整性
-
Sql 基本表的创建中是通过外键子句(foreign key)实现参照完整性规则
-
-
域完整性
-
限制类型、范围、格式
-
-
用户自定义完整性
-
数据的完整性是指正确性、有效性和相容性
-
数据库完整性:是指 防止数据库中出现不合语义的数据
-
-
数据库的安全性:是指 防止非授权用户对数据库的恶意存储和破坏
MySQL 数据操作管理
-
插入数据
-
insert into 表名 values(值1,值2...)
-
指定字段
-
insert into 表名(字段名1,2....) values(值1 ,值2)
-
-
从目标表中插入值
-
insert into 表名 [列名列表] select 列名列表 from 表名
-
-
replace 语句插入
-
replace into 表名 values(值列表)
-
添加记录时,如果新记录的主键或唯一性约束与原有的记录相同,则删除已有记录,再添加
-
-
-
修改数据
-
语法
-
update 表名 set 字段名=‘ ’ where 条件表达式
-
如果没有where表达式则将所有字段更新
-
-
-
删除数据
-
delete
-
delete from 表名 [where 条件表达式]
-
不指名where条件,则删除表中所有数据
-
-
truncate清空表数据
-
truncate table 表名
-
比delete速度快,使用的系统和事务日志资源少
-
会删除所有记录,并将自增字段设置为初始值
-
-
区别
-
truncate table 删除内容,释放空间,但不删除定义
-
delete table 删除内容,不释放空间,不删除定义
-
drop table 删除内容,释放空间,删除定义
-
-
-
查询数据
-
基本语法
-
select 字段 form 表名
-
-
去重
-
select distinct 字段 form 表名
-
-
为字段取别名
-
select 字段 ‘别名’ form 表名
-
-
In关键字查询
-
判断某个字段的值是否在集合内
-
select 字段 form 表名 where 字段 in (10,23,34)
-
-
between and 查询
-
select 字段 form 表名 where grade [not] between 1 and 6
-
包含1和6 即 1<=grade<=6
-
-
is null 查询
-
判断字段的值是否为空值
-
select 字段 form 表名 where grade is [not] null
-
-
like 查询
-
模糊查询
-
[not] like ‘字符串’
-
% 代表任意长度
-
_ 代表一个任意字符
-
-
-
高级查询
-
分组查询
-
group by 字段名
-
select sex,count(sex) from student group by sex
-
-
加上 having 条件表达式 ,可以限制输出结果
-
select sex,count(sex) from student group by sex having count(sex)>10
-
经常通过聚合函数的结果来过滤查询结果集
-
-
-
聚合
-
count ,sum,avg,max,min
-
-
对查询结果排序
-
order by 字段名 [dese|asc]
-
dese 为逆序
-
asc 为升序
-
select * from student order by grade dese ,score asc;
-
-
-
限制查询结果数量
-
limit 2,5
-
从2开始但不包括2 ,取5条数据
-
-
-
多表查询
-
内连接查询
-
等值连接
-
inner join
-
select * from sc inner join course on sc.cno=course.cno
-
-
自然连接
-
natural join
-
在表关系的笛卡尔积中选择满足条件的行,消除重复列
-
select * from sc natural join course
-
-
等值连接与自然连接的区别和联系。
-
等值连接是条件θ为=的连接,会将指定的两个关系的属性相等的元组连接 起来得到一个新的关系,不过其中重复的属性列不会自动去除
-
自然连接是一种特殊的等值连接,就是将两个关系中的元组做笛卡尔积后选取属 性一样且属性值相等的记录形成新的关系,会去除多余的相同属性列
-
参考答案:他们是连接运算中两种最为重要,也是常用的连接。 自然连接是一种特殊的等值连接,他要求两个关系中进行比较的分量即连接属性 必须是相同的属性组,并且要在结果中去掉其中一个的重复属性
-
-
-
外连接查询
-
左外连接
-
left join
-
select * from sc left join course on sc.cno=course.cno
-
取出左侧关系与右侧关系中任一元组都不匹配的元组
-
-
右外连接
-
left join
-
select * from sc right join course on sc.cno=course.cno
-
取出右侧关系与左侧关系中任一元组都不匹配的元组
-
-
-
子查询
-
in 关键字的子查询
-
select * form stu where sno [not] in(select sno from sc)
-
-
exist 关键字的子查询
-
内查询语句,不返回查询的记录,而是返回一个真假值
-
当内查询返回TRUE时,外查询进行查询,否则不进行查询
-
select * form stu where sno exist(select sno from sc)
-
-
any 关键字的子查询
-
只要满足内查询语句返回结果中的一个,就通过该条件来执行外层查询语句
-
select * form stu where sno > any(select sno from sc where score=34)
-
-
all关键字的子查询
-
满足内查询的所有条件,>all 表示大于所有值, <all表示小于所有值
-
select * form stu where sno > all(select sno from sc where score=34)
-
-
-
-
MySQL索引
-
概念
-
索引是提高SELECT操作性能的最佳途径
-
使用索引的目的是加快查询速度
-
索引存储类型
-
B型树索引
-
哈希索引
-
-
建立索引是在物理结构设计阶段完成,属于内模式
-
-
作用
-
通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性
-
-
分类
-
聚簇索引 (一个表只能包含一个聚簇索引)
-
他的表的物理顺序和索引的物理顺序是保持一致的,如果索引产生变化,整个物理表排列也就产生变化, 所以聚簇索引适合建立在一个查询为主,索引单向增长(不会破坏原有索引顺序),不会有频繁更新,删除,插入动作(在聚簇索引字段上) , 否则会引起整个表的重新排序,影响性能
-
主属性适合建立
-
-
唯一性索引
-
主键是一种特殊的索引
-
UNIQUE可以设置索引为唯一性索引
-
-
全文索引
-
FULLTEXT参数可以设置索引为全文索引
-
只能创建在CHAR、VARCAHR、TEXT类型上
-
-
单列索引
-
根据一个字段索引,可以是普通、唯一、全文
-
-
多列索引
-
根据多个字段来索引
-
但只有查询条件中使用了这些字段中第一个字段时,索引才会被使用
-
-
空间索引
-
SPATIAL参数可以设置索引为空间索引
-
建立在空间数据类型上
-
-
-
创建
-
CREATE INDEX |KEY [索引名]
-
-
查看索引
-
show index from table
-
-
删除索引
-
drop index 索引名 on 表名
-
MySQL 视图
-
概述
-
优势
-
增强数据安全性
-
提高灵活性,操作变简单
-
提高数据的逻辑独立性
-
-
特点
-
虚表,由基本表或视图导出的表
-
只存放视图定义,不存放对应的数据
-
基本表的数据变化,视图中查询出的数据也变化
-
-
创建
-
create view 视图名 (视图列表) as select 字段 from 表
-
-
删除
-
drop view [if exist ] 视图名
-
-
查看视图定义
-
show create view ‘视图名’
-
show table status like ‘视图名’
-
-
修改视图定义
-
create or replace view 视图名 as select
-
-
更新视图
-
对视图的更新实际是对表的更新
-
以下情况视图无法更新
-
视图包含sum 、count等聚集函数的
-
视图包含UNION、UNION ALL、 DISTINCT、GROUP BY、 HAVING等关键字
-
视图中包含子查询
-
由不可更新的视图导出的视图
-
with check option 也将决定视图是否可以更新
-
-
-
题
-
-
视图可以提供数据的安全性
-
在定义视图的时候当后边使用 with check option 时,那么之后对视图进行 的增删改操作的语句后边都会默认跟上视图定义的时候 where 子句的条件
-
视图建立后,在数据字典中存放的是视图的定义
-
数据库保护
-
安全性控制
-
数据库的安全性是指保护数据库,防止不合法的使用所造成的数据泄露和破坏
-
数据库系统保证数据安全性的主要措施
-
进行存储控制 SQL的DCL:授权GRANT,回收权利REVOKE
-
-
常用方法
-
存取控制
-
包括定义用户权限 和 合法权限检查 两部分。
-
这两部分一起 组成了数据库管理系统的存取控制子系统:
-
-
自主存取控制方法
-
自主存取控制方法主要通过SQL的GRANT语句和REVOKE语句来实现。
-
用户权限由两部分组成: 数据库对象 和 操作类型 。
-
-
强制存取控制方法:
-
系统规定 只有具有某一许可证级别的用户才能存取某一个密级的数据对象
-
在强制存取控制中,数据库管理系统所管理的全部实体被分为 主体 和 客体
-
-
-
视图机制
-
审计
-
数据库安全审计系统提供了一种事后检查的安全机制。
-
-
数据加密
-
加密的基本思想: 根据一定的算法将原始数据(明文)转变成不可直接识别的 格式(密文)
-
数据加密主要包括 存储加密 和 传输加密 两种方式。
-
-
用户身份鉴别
-
前面的用户身份鉴别、存取控制是数据库安全保护的重要技术
-
-
-
完整性控制
-
数据库的完整性:是指数据库中数据的有效性、正确性与相容性
-
-
并发控制
-
恢复
授予与收回
-
授权:定义存储权限
-
grant update(name) on table Student to user1 [with grant option]
-
赋予用户user1对Student表的name属性的修改权限,若不指定属性则表明是对所有 属性 最后with grant option表示可以传播权限,不加表示不允许传播权限 发出这个语句的人可以是数据库管理员,数据库对象创建者,或者已经拥有该权限的用户 接受权限的用户可以是一个或多个具体用户,也可以是PUBLIC,即全体用户
-
-
grant select on table Student to u1
-
将表Student的所有属性的查询权限授予u1
-
-
grant select on table Student to public
-
将表Student的查询权限授予所有用户
-
-
grant all privileges on table Student to u1
-
将表student的全部操作权限授予u1
-
-
-
收回:
-
revoke update(name) on table Student from user1
-
收回用户user1对Student表的name属性的update的权限
-
-
revoke select on table sc from public
-
收回所有用户对标sc的查询权限
-
-
revoke insert on table sc from u5 cascade;
-
收回u5的对表sc的insert权限同时收回u5传播出去的权限,级联收回
-
-
访问控制机制
-
在数据库管理系统中, 用户存取权限 指的是不同的用户对于不同数据对象所允许执行的操作权限,每个用户只能访问他有权存取的数据并执行有权进行的操 作。
-
访问控制 就是DBMS为了防止非授权访问而采取的控制措施。访问控制通过预先为用户定义不同的操作权限实现。对于通过身份鉴定获得进入系统的用 户即合法用户,DBMS根据其对数据的存取权限对他的各种操作请求进行控 制,确保它只能执行被授权的操作即合法操作。
数据库恢复技术
事务
-
概念
-
事务是 用户定义的一个逻辑一致的数据库操作序列 ,这些操作要么全做,要么 全不做,是一个不可分割的工作单位。
-
事务是 恢复和并发控制的基本单位
-
多个事务的执行次序叫调度
-
-
特性
-
一致性
-
保证数据库从一个一致性状态到另一个一致性状 态。
-
-
原子性
-
事务是数据库的逻辑工作单位,事务中的操作要么都 做要么都不做。
-
-
隔离性
-
一个事务的执行不能被其他事务干扰,事务内部操作 的数据与外界是隔离的。
-
-
持续性/永久性
-
事务一旦提交,他对数据库中数据的改变就应 该是永久性的。
-
-
-
定义事务
-
BEGIN TRANSACTION 事务开始 COMMIT 事务提交,事务正常结束 ROLLBACK 事务回滚(回滚到事务开始的地方),事务非正常结束。
-
commit 提交事务的所有操作:将事务中所有对数据库的更新写回到磁盘上的物 理数据库中去,事务正常结束
-
rollback 回滚:在事务运行的过程中发生了某种故障,事务不能继续执行,系 统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。这里的操作指对数据库的更新操作。(回滚在提交之前执行)
-
撤销事务UNDO :在不影响其他事务运行的情况下,强行回滚该事务,撤销该事务已经做出的任何数据库的修改。(撤销操作在提交之后执行)
-
数据库恢复
-
概念
-
把数据库从错误状态恢复到某一已知的正确状态(即一致状态或完整状态) ,就是数据库恢复
-
-
故障的种类
-
事务内部的故障
-
系统故障
-
介质故障
-
计算机病毒
-
各类故障对数据库的影响有两种可能,
-
一是数据库本身被破坏
-
二是数据库没有被破坏,但数据库不正确(事务的运行被非正常终止造成的)
-
-
-
恢复的基本原理
-
基本原理一个词概括:冗余。 被破坏或不正确的数据可以根据存储在系统备 储的冗余数据来重建
-
常用技术
-
数据转储
-
转储状态
-
动态转储,静态转储
-
-
转储方式
-
增量转储,海量转储
-
-
-
登记日志文件
-
登记的次序严格按照并发事务执行的时间次序
-
必须先写日志文件,后写数据库
-
日志文件的两种格式:
-
以记录为单位的日志文件
-
以数据块为单位的日志文件
-
-
-
-
并发控制
-
概念
-
并发控制是 确保及时纠正由并发操作导致的错误的一种机制。
-
-
常用技术
-
封锁、时间戳、乐观控制法、多版本并发控制 等
-
-
并发操作带来的数据不一致性包括丢失修改,不可重复读,读脏数据
-
这三类数据点的不一致性的主要原因是 并发操作破坏了事务的 隔离性。
-
对并发操作进行控制,是为了保证事务的隔离性和一致性,防止造成数据不一 致。 并发操作机制主要是用正确的方式调度并发操作,使一个用户事务的执行不受 其他事务的干扰
-
丢失修改:两个事务同时读取同一个数据并修改,某一个事务会破坏另一个事 务提交的结果,导致第一个事务的修改被丢失(#我刚修改完就被你覆盖了,我 的丢失) 不可重复读:第一个事务读取数据后,刚好数据被另一个事务进行修改操作, 那么第一个事务就不能再现前一次读取的结果。(#我还在执行就被别人改了) 读'脏'数据:事务1修改某一数据,并将其写回磁盘,此时事务2读取该数据 后,事务1由于某种原因被撤销,这时事务1修改过的数据恢复原值,此时事务2 读取的数据就明显与原值不一致,这样一来事务2读到的数据就是“脏”数据,即 不正确的数据(#虚晃一枪,我读到数据后你撤销了,导致我的数据不一致。一 般有ROLLBACK)
-
-
封锁
-
概念:
-
事务通过向系统请求对它所希望的数据对象(数据库中的记录)加 锁,这样一来这个事务就对这个数据有了一定的控制,其他事务就不能更新此 数据,直到事务释放锁。以确保它不被非预期改变
-
-
两种封锁类型:
-
排它锁(写锁,X锁)
-
共享锁(读锁,S锁)
-
事务对数据加了X锁,就只能该事务对该数据进行读和写,则别的事务对该数据不能加任何类型的锁,自然也不能任何操作,直到锁释放 .
-
事务对数据加了S锁,则该事务可读数据但不能写,其他事务只能再对该数据加S 锁,而不能加X锁,直到锁释放。
-
事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)
-
-
封锁协议分类
-
分为一级封锁协议、二级封锁协议、三级封锁协议。
一级封锁协议:事务T在修改数据A之前必须先对其加X锁,直到事务结束才释放。一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。
二级封锁协议:二级封锁协议是指,在一级封锁协议基础上增加事务T在读数据A之前必须先对其加S锁,读完后即可释放S锁。二级封锁协议出防止了丢失修改,还可以进一步防止读“脏”数据。
三级封锁协议:三级封锁协议是指,在二级封锁协议的基础上增加事务T在读数据A之前必须先对其加S锁,直到事务结束才释放。三级封锁协议出防止了丢失修改和读“脏”数据外,还可以进一步防止了不可重复读。
-