1.数据(Data)
是数据库中存储的基本对象
2.数据库DB(Database)
是长期储存在计算机内、有组织的、可共享的大量数据的集合
3.数据库(DB)的基本特征
- 数据按一定的数据模型组织、描述和储存
- 可为各种用户共享
- 冗余度较小
- 数据独立性较高
- 易扩展
4.数据库(DB)的作用
- 实现数据共享、减少数据的冗余
- 保证数据一致性和可维护性
- 实现数据的集中控制、故障恢复
- 实现数据的独立性
5.数据库管理系统DBMS(Database Management System)
是位于用户和操作系统之间的一层存储和管理数据库的软件,是数据库系统的核心
6.数据库管理系统(DBMS)的作用
科学地组织和存储数据、高效地获取和维护数据
7.数据库管理系统(DBMS)的功能
- 数据定义功能
- 数据组织、存储和管理功能
- 数据操纵功能
- 数据库的事务管理和运行管理功能
8.数据库系统DBS(Database System)
在计算机系统中引入数据库后的系统构成。数据库系统是由数据库、数据库管理系统、应用系统、数据库管理员组成
9.数据库系统(DBS)的构成
- 数据库(DB)
- 数据库管理系统(DBMS)
- 应用系统
- 数据库管理员(DBA)
10.数据管理
对数据进行分类、组织、编码、存储、检索和维护
11.数据库系统(DBS)的特点
- 数据结构化
- 数据的共享性高,冗余度低,易扩充
- 数据独立性高
- 数据由数据库管理系统(DBMS)统一管理和控制
12.数据共享的好处
- 减少数据冗余,节约存储空间
- 使系统易于扩充
13.数据库管理系统(DBMS)提供的数据控制功能
- 数据的安全性保护
- 数据的完整性检查
- 并发控制
- 数据库恢复
14.数据库管理员DBA(Database Administrator)
对数据库进行规划、设计、协调、维护和管理等工作的人员
15.数据库管理员(DBA)的职责
- 决定数据库中的信息内容
- 决定数据库的存储结构
- 定义数据的安全性要求和完整性约束条件
16.数据独立性
应用程序与数据库中数据的物理存储和数据的逻辑结构之间是相互独立的,数据独立性是由数据库管理系统的二级映像功能来保证的
- 物理独立性: 指应用程序和数据库中数据的物理存储是相互独立的。当数据的物理存储改变了,应用程序不受影响
- 逻辑独立性: 指应用程序和数据库中数据的逻辑结构是相互独立的。当数据的逻辑结构改变了,应用程序不受影响
17.现实世界中客观对象的抽象过程
现实世界中的客观对象抽象为概念模型,再把概念模型转换为逻辑模型,最后把逻辑模型转化为物理模型
18.数据模型(Data model)
是描述数据的一组概念和定义
19.数据模型的分类
- 概念模型:是按用户的观点来对数据建模
- 逻辑模型:是按计算机系统的观点对数据建模
- 物理模型:描述数据在系统内部的表示方式,在磁盘上的存储方式
20.常用的数据模型
- 层次数据模型
- 网状数据模型
- 关系数据模型
- 面向对象模型
- 对象关系模型
21.数据模型的组成要素
- 数据结构
- 数据操作
- 完整性约束条件
22.实体(Entity)
实体是客观存在并可以相互区别的事物
23.属性(Attribute)
实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画
24.码(Key)
码是唯一标识实体的属性集
25.实体之间的联系
一对一(1:1)、一对多(1:n)、多对多(n:m)
26.E-R图有三个组成部分
实体、属性、联系
- 实体:用矩形表示,矩形框内写实体名
- 属性:用椭圆表示,并用无向边将其与相应的实体连接起来
- 联系:用菱形表示,菱形框内写联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型。如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来
27.层次数据模型
因为现实世界中很多事物之间本身就存在层次关系,所以用树形结构来表示实体和实体间的联系,层次数据模型只能直接处理一对多的实体联系
28.网状数据模型
网状模型能处理多对多的实体联系
29.关系数据模型
关系数据模型中将实体和实体之间的联系全部用表来表示,关系数据模型中数据的逻辑结构是一张表,一个关系就是一张表,它由行和列组成,关系数据模型中的一行是一个元组,一列是一个属性
30.关系数据模型的数据结构
- 关系:实体和实体之间的各种联系都是用关系来表示,一个关系对应一张二维表,表的每行对应一个元组,表的每列对应一个域。表示格式:关系名(属性1,属性2,…,属性n)
- 元组:表中的一行就是一个元组
- 属性:表中的一列就是一个属性
- 主码:表中的某个属性组,它可以唯一确定一个元组
- 域:是一组具有相同数据类型的值的集合,是属性的取值范围
- 分量:元组中的一个属性值
- 关系模式:对关系的描述。表示格式:关系名(所有属性名,属性来自的域,属性和域的映射,属性间的依赖关系)
- 关系必须是规范化的,最基本的规范条件是:关系的每一个分量必须是一个不可分的数据项, 不允许表中还有表
31.关系模式和关系的区别
关系是关系模式在某一时刻的状态,关系是不断变化的,关系模式是对关系的描述,是稳定的
32.关系数据模型的完整性约束条件 / 数据库的完整性
- 实体完整性:主键不能为空,主键必须唯一,不能重复
- 参照完整性:外键为空或者外键等于被参照关系(被参照表)中的主键值(实体完整性和参照完整性是关系的两个不变性)
- 用户定义的完整性:是针对数据库中数据的约束条件,给属性值约定范围
33.关系数据模型的优点
- 实体和各类联系都用关系来表示
- 具有更高的数据独立性,更好的安全保密性
- 简化了程序员的工作和数据库开发建立的工作
34.模式
是数据库逻辑结构和特征的描述,模式是相对稳定的
35.实例
是模式的一个具体值,实例是不断变化的
36.数据库系统的三级模式结构
- 模式(又叫逻辑模式): 是数据库中所有数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个模式,模式是数据库系统的模式结构的中间层。
- 外模式(又叫用户模式):是数据库用户使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图。模式和外模式是一对多的关系,一个外模式可以被多个应用程序所使用,一个应用程序只能使用一个外模式。
- 内模式(又叫存储模式): 是数据物理结构和存储方式的描述,一个数据库只有一个内模式
37.数据库的二级映像功能
- 外模式/模式映像 : 对于每一个外模式,有一个外模式/模式映像,保证了数据的逻辑独立性。当模式改变时,数据库管理员对外模式/模式映像作相应改变,使外模式保持不变。
- 模式/内模式映像 : 模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。数据库中模式/内模式映像是唯一的,保证了数据的物理独立性。当数据库的存储结构改变了,数据库管理员对模式/内模式映像作相应改变,使模式保持不变。
38.关系数据库
- 定义: 是所有实体和实体之间联系的关系的集合
- 关系数据库的优点: 是使用方便,易于维护,降低了数据冗余和数据不一致的概率,支持SQL和事务
- 关系数据库的缺点: 是读写性能比较差
40.关系代数的5种基本操作 (每个元组就是一行,每个属性就是一列)
- 选择σ:从一个表中把满足条件的元组找出来
- 投影π:选择出若干属性列组成新的关系,投影要去掉重复元组(行)
- 笛卡尔积:笛卡尔积就是把两个关系的元组进行拼接,包含了两个关系的所有元组的各种可能的组合。比如现在有两个关系,关系R有2个元组,关系S有3个元组,笛卡尔积就是拿关系R的第一个元组去跟关系S的三个元组分别进行拼接,再拿关系R的第二个元组去跟关系S的三个元组分别进行拼接,一共得到6个元组
- 差:元组属于关系R但不属于关系S
- 并:元组来自关系R或者关系S,并起来的关系不允许有重复行
41.关系代数的其它操作
- 交:元组既属于关系R又属于关系S
- 连接:是从两个关系的笛卡尔乘积中选择满足一定条件的元组。如果没有条件限制,连接就是笛卡尔乘积
注:
- 等值连接 equal join:是从两个关系的笛卡尔乘积中选择属性值相等的元组
(两个表中列值相等的)。格式如下:
select *
from 表1,表2
where 表1.列名 = 表2.列名 - 自然连接 natural join:自然连接是一种特殊的等值连接,自然连接是从两个关系的笛卡尔乘积中选择相同的属性里面属性值相等的元组(两个表中相同的列里面值相等的),并且要去掉结果中的重复列
- 内连接inner join:内连接包括等值连接和不等值连接。格式如下:
select *
from 表1
inner join 表2
on 表1.列名 = 表2.列名 - 外连接 :外连接包括左连接和右连接
- 左连接(左外连接)left join:两个关系作自然连接,但是左边关系中的所有元组保留下来,右边关系中不符合条件要舍弃的元组填空值
- 右连接(右外连接)right join:两个关系作自然连接,但是把右边关系中的所有元组保留下来,左边关系中不符合条件要舍弃的元组填空值
42.SQL的功能
(1)数据操纵:插入insert、删除delete、更新update
- 插入数据:
insert into 表名(属性1,属性2,......)
values(属性1的值,属性1的值,......);
- 删除数据:
delete from 表名
where + 条件
- 更新数据:
update 表名
set属性 = 修改的值
where + 条件
(2)数据查询
select [distinct] 所查询的内容 (distinct是去掉重复行)
from 表名
where + 条件
group by 列名
having 条件
order by 列名 asc(升序)/desc(降序)
43.基本表
基本表是实际存在的表,基本表的数据存储在数据库中,在SQL中一个关系就对应一个基本表
44.虚表
虚表的数据不是存储在数据库中,虚表在数据库里面只存储定义
45.视图
是由基本表构成的虚表,数据库里面只存储视图的定义,不存储视图对应的数据,视图对应的数据存放在基本表中。所以基本表里面的数据发生变化,从视图中查询的数据也随之改变
46.视图的作用
- 视图能够简化用户的操作
- 视图使用户能以多种角度看待同一数据
- 视图对重构数据库提供了一定程度的逻辑独立性
- 视图能够对机密数据提供安全保护
- 适当的利用视图可以更清晰的表达查询
47.码
包括候选码和主码
48.候选码(候选键)
如果关系中的某个属性组合的值能唯一地标识一个元组,那么这个属性组合就是候选键。换句话说,当一个属性组合能够推出关系中所有的属性,但是这个属性组合的任何一个真子集不能推出所有的属性,则这个属性组合是候选键。候选键不是唯一的
49.主码(主键)
从候选键中选择一个作为主键。主键是唯一的,不能重复,并且主键不能为空
50.外码(外键)
这个属性不是自身关系的主键,而是另一个关系的主键,则这个属性是外键
51.主属性
包含在候选键里面的属性就是主属性
52.非主属性
不包含在候选键里面的属性就是非主属性,去掉主属性剩下的属性都是非主属性
53.函数依赖
在属性X能推出属性Y,那么就说Y函数依赖于X,写作X → Y
54.完全函数依赖
属性X能推出属性Y,但是属性X的任何一个真子集不能推出属性Y,那么就说Y对X是完全函数依赖
55.部分函数依赖
属性X能推出属性Y,属性X的真子集能推出属性Y,那么就说Y对X是部分函数依赖
56.传递函数依赖
属性X能推出属性Y,属性Y能推出属性Z,那么就说Z对X是传递函数依赖
57.引入的范式的原因
- 数据冗余
- 更新异常
- 插入异常
- 删除异常
58.范式
是我们在设计数据库结构过程中所要遵循的规则和指导方法
59.第一范式(1NF)
关系模式的每一个属性都是不可再分的,换句话说就是二维表的每一列都是不可再分的,不允许表中套表
60.第二范式(2NF)
关系模式首先要满足第一范式,并且不存在非主属性对候选键的部分函数依赖
例1. 候选键AB可以推出非主属性C,主属性A可以推出非主属性C,则非主属性C对候选键AB是部分函数依赖
例2. 候选键AB可以推出非主属性C,主属性A推不出来非主属性C或者主属性B推不出来非主属性C,则非主属性C对候选键AB是完全函数依赖
61.第三范式(3NF)
关系模式首先要满足第二范式,并且不存在非主属性对候选键的传递函数依赖
例如:候选键AB可以推出非主属性D,非主属性D可以推出非主属性C,则非主属性C对候选键AB是传递函数依赖
62.BC范式(BCNF)
关系模式首先要满足第三范式,并且不存在主属性对候选键的传递函数依赖和部分函数依赖
63.判断范式的步骤
- 第一步:求闭包,就是对左边属性进行一个组合,使得左边属性组合能够推出所有属性
- 第二步:找出候选键,左边属性组合就是候选键
- 第三步:找出主属性和非主属性,包含在候选键里面的属性就是主属性,不包含在候选键里面的属性就是非主属性
- 第四步:根据范式定义去判断
64.索引
是对数据库的表里面一列或多列的值进行排序的一种结构。索引的优点是提高查询速度,索引的缺点是索引会占用物理存储空间,并且索引需要动态维护。
65.索引的类型
- B+树索引(优点是动态平衡)
- hash索引(优点是查找速度快)
- 聚集索引:物理存储顺序与逻辑顺序相同
- 非聚集索引
- 唯一索引
66.游标
是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果
67.存储过程
是由PL/SQL语句写的过程,经过编译和优化后存储在数据库服务器中。存储过程使用时只要调用就可以了,运行效率高。
68.触发器
是用户定义在关系表上的一类由事件驱动的特殊的存储过程,当用户对表进行insert插入、delete删除、update更新的操作时,服务器会自动激活相应的触发器,触发器可以用来防止对数据的不正确修改。
69.触发器的类型
- 行级触发器
- 语句级触发器
70.触发器的工作原理
触发器触发的时候,系统会自动在内存中创建deleted表或者inserted表,deleted表和inserted表只允许读,在触发器执行完成后,会自动删除,inserted表临时保存了插入或者更新后的记录行,deleted表临时保存了删除或者更新前的记录行。
注:
更新隐含的操作:删掉原来的再插入新的,原来的放在deleted表,插入的新的放在inserted表
71.事务
是用户定义的一个数据库操作序列,这些操作要么全部做,要么全部不做,事务是一个不可分割的工作单位,事务是恢复和并发控制的基本单位。事务通常以begin transaction开始,以commit或者rollback结束。
注:
- commit表示提交事务的所有操作,具体来说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中,事务正常结束
- rollback表示回滚,就是说在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已经完成的更新操作全部撤销,回滚到事务开始时的状态
72.事务的特性
事务有四个特性,简称为ACID特性,分别是:
- 原子性:事务是数据库的逻辑工作单位,事务中包括的操作要么都做,要么都不做。
- 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性状态是指数据库中只包含成功事务提交的结果。
- 隔离性:一个事务的执行不能被其他事务干扰,也就是说一个事务内部的操作和使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能相互干扰
- 永久性:指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对其执行结果有任何影响。
73.事务并发执行的目的
- 改善系统的资源利用率和吞吐率
- 改善短事务的响应时间
74.需要对事务并发执行进行并发控制的原因
为了保证事务的一致性和隔离性
75.如果没有并发控制对事务的并发操作进行正确的调度,可能会产生如下问题
并发一致性问题:
- 丢失修改:是两个事务对同一数据并发的写入所引起的
- 读脏数据:是一个事务读取另一个事务修改了但没有提交的数据所引起的
- 不可重复读:是一个事务读取数据之后,另一个事务修改了数据,如果此时第一个事务再次读取数据,两次读取的结果可能不一样
76.数据库的隔离级别
- 未提交读:一个事务可以看到其他未提交的事务的数据
- 提交读:一个事务只能读取已经提交的事务的修改。换句话说,一个事务所做的修改在提交之前对其它事务是不可见的
- 可重复读:保证同一个事务多次读取同一数据的结果是一样的
- 可串行化:强制事务串行执行,这样多个事务互不干扰,不会出现并发一致性问题。这种隔离级别需要加锁实现,因为要使用加锁机制保证同一时间只有一个事务执行。
77.数据库中的死锁
事务1等待事务2释放锁,事务2等待事务1释放锁,事务之间出现了循环等待的情况,如果不进行干预,会一直等待下去形成死锁
78.数据库中死锁的预防
- 一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行
- 顺序封锁法:预先对数据规定一个封锁顺序,所有事务都按这个顺序实行
封锁
79.数据库中死锁的检测
- 超时法:如果一个事务的等待时间超过了规定的时间就认为发生了死锁
- 等待图法:如果有向图出现了回路,说明发生了死锁
80.封锁
是事务在对某个数据操作之前,先向系统发出请求,对数据加锁,加锁后事务对该数据有了一定的控制,在事务释放数据上的锁之前,其他的事务不能更新此数据,封锁是实现并发控制的一个非常重要的技术。
81.封锁的类型
- 排它锁(又称为写锁):是只允许当前事务读取和修改数据,在当前事务释放数据上的排它锁之前,其他事务不能再读取和修改数据
- 共享锁(又称为读锁):是当前事务只能读取数据但不能修改数据,其他事务也可以读取数据,但是在当前事务释放数据上的共享锁之前,其他事务不能修改数据
82.封锁协议
对数据加锁需要约定一些规则,例如何时申请封锁,何时释放封锁
83.两段封锁协议
是指每个事务必须分为两个阶段,第一个阶段是加锁,第二个阶段是解锁
84.数据库的完整性
数据库的完整性是指数据的正确性和相容性,数据库的完整性是为了防止数据库中存在不正确的数据。数据库的完整性的防范对象是不正确的数据,防止他们进入数据库。
85.数据库的安全性
是保护数据库防止恶意的破坏和非法的存取。数据库的安全性的防范对象是非法用户和非法操作,防止他们对数据库数据的非法存取。
86.varchar(n)和char(n)的区别
varchar存储的字符串长度是可变的,最大长度为n,char存储的字符串长度是固定的n
87.drop和delete的区别
drop是直接删除这张表,delete是删除表中的数据,并且可以通过commit提交或者rollback回滚
88.关系模式和关系的区别
关系是关系模式在某一时刻的状态,关系是不断变化的,关系模式是对关系的描述,是稳定的
89.数据冗余
同一信息在数据库中存储了多个副本
90.恢复中最经常使用的技术(建立冗余数据最常用的技术)
- 数据库转储
- 登记日志文件
91.恢复的基本原理
系统发生故障的时候,利用数据库中的后备副本和日志文件,以及数据库镜像中的冗余数据来重建数据库。
92.JDBC
是java程序连接数据库服务器的应用程序接口
93.常见的数据库
MySQL 、SQL Server、Oracle
94.数据字典
是各类数据描述的集合,数据字典包括数据项、数据结构、数据流、数据存储、处理过程
95.数据项
不可再分的数据单位
96.数据库设计的步骤
需求分析、概念设计、逻辑设计、物理设计、数据库实施、数据库运行和维护
97.常见的数据库的约束
- 非空约束(NULL/NOT NULL)
- 唯一约束(UNIQUE)
- 主键约束(PRIMARY KEY)
- 外键约束(FOREIGN KEY)
- 检查约束(CHECK)
98.数据管理技术的发展过程
- 人工管理阶段
- 文件系统阶段
- 数据库系统阶段
99.SQL
关系数据库的标准语言
100.SQL特点
- 综合统一
- 高度非过程化
- 面向集合的操作方式
- 以同一种语法结构提供多种使用方式
- 语言简洁,易学易用
101.DDL
数据库定义语言
102.DQL
数据库查询语言
103.DML
数据库操纵语言
104.DCL
数据控制语言,用于控制用户对数据的访问权限
105.关系语言的分类
- 关系代数语言
- 关系演算语言
- SQL语言
106.数据库安全性控制的常用办法
- 用户身份鉴别
- 存取控制
- 视图机制
- 审计
- 数据加密
107.ODBC的优点
- 移植性好
- 能同时访问不同的数据库
108.ODBC的工作流程
- 配置数据源
- 初始化环境
- 建立连接
- 分配语句句柄
- 执行SQL语句
- 结果集处理
- 中止处理
109.数据库系统的故障的种类
- 事务内部的故障
- 系统故障
- 介质故障
- 计算机病毒
110.E-R图转换成关系模型的原则
- E-R图的实体转换为关系(表名)
- E-R图的属性转换为关系的属性
- E-R图的联系转换成关系模型要根据联系的类型一对一、一对多、多对多分别讨论
111.数据库的级联
数据库的级联是用来设计一对多的关系。比如级联更新的时候,如果一个主键值被改了,那么和它关联的外键也需要修改