<>1.什么是存储过程

就是一组经过预先编译的SQL语句的封装,预先存储在MySQL服务器上,需要执行的时候客户端只需要调用就能把这些SQL语句全部执行。简化操作,提高SQL语句的重用性。

它和视图有同样的有点,安全,减少网络传输量,但是视图是虚拟表,通常不对底层数据表直接操作,而存储过程是程序化的SQL,可以直接操作数据表。

传递参数的方式 IN 参数名 参数类型 或者 OUT 参数名 参数类型

create procedure 过程名(IN 参数名 类型,OUT 参数名 类型)

begin

​ 操作

end

<>2.什么是存储函数?

用户自定义的,对数据进行各种处理操作的函数,需要有返回值

CREATE function 函数名

return 返回值类型

begin

​ 操作

end

<>3.多个人同时操作数据库

如果他们操作的不是一张表,那自然不会冲突,而如果他们操作的是一张表,他们可以采用加锁的方式实现同时操作,而对于InnoDB存储引擎来说,支持行级锁和表级锁,也就是只要他们操作的不是一行数据,那他们就能同时操作,而对于MyISam来说,它只支持表级锁。

而如果是多个事务的话,数据库事务有隔离级别,隔离级别一共有四种 READ-UNCOMMITTED , READ-COMMITTED ,
REPEATABLE-READ , SERIALIZABLE
,分别是读取未提交,读取已提交,可重复读,可串行化,InnoDB的存储引擎默认采用可重复读,也就是可以解决脏读和不可重复读。

<>4.数据库事务的四大特性

原子性:事务是执行的最小单位,不允许分割。

一致性:执行事务前后,数据保持一致,其实意思是从一个合法性状态到另一个合法性状态。

隔离性:事物之间不会相互干扰,各并发事务是相互独立的。

持久性:一个事务被提交了,那对数据库中数据改变就应该是永久性的。

<>5.脏读,幻读,不可重复读

脏读:某个事务已更新一份数据,另一个事务在此时读取了同一份数据,前一个又进行了回滚,则后一个事务读取的数据就是正确的。

不可重复读:在一个事务的两次查询中,数据不一致,可能是两次查询过程中间插入了一次事务,更新了原有数据。

丢失修改:A,B用时更改一条记录,相互影响,导致其中一方的更改丢失。

幻读:一个事务的两次查询中数据量不一致,可能是两次查询中间一个事务插入或删除了几条数据。

<>6.视图

视图是一种虚拟表,本身是不具有数据的,物理上是不存在的,可以理解为存储起来的 select 语句。

简化查询,对于数据表比较复杂的情况下,视图可以把经常查询的结果放在虚拟表中(查询缓存),提升使用效率。

<>7.属性概念

超键:能够唯一标识元组的属性集叫做超键

候选键:如果超键中不包含多余的属性,这个超键就是候选键

主键:用户可以从任意一个候选键中选择一个作为主键

外键:一个属性集在一个表中是主键,另一个表中不是主键,那这个属性在第一个表中是外键

主属性:能够唯一标识元组的属性,并且不包含多余属性,任意一个候选键

非主属性:不包含在候选键的属性

<>8.数据完整性约束

数据库的完整性:防止数据库中存在不正确的数据

* 实体完整性 主键的约束,记录里唯一
* 域完整性 数据表字段属性的约束,保证数据的有效性
* 参照完整性 外键约束,也就是参考主键有效
* 用户定义完整性 代表用户自定义的一种约束,如check (age between 0,100)
<>9.联合索引

最左匹配原则
(这里简略,最好知道原理)

<>10.适合创建索引的情况

1.字段本身就有唯一性的限制

2.频繁的作为 where 字句查询条件的字段

3.经常被group by和order by的列

<>11.不适合创建索引的情况

* where字句中使用不到的列
* 数据量小的表不需要创建
* 有大量重复数据的表
* 经常更新的字段
<>12.索引失效的情况

* 对联合索引来说,最左匹配原则,即如果主键是学生号和课程号,只有课程号是不能使用索引的
* 当查询条件的字段中出现计算,函数,类型转换时都会导致索引失效
* like也会导致索引失效
<>13. join优化

一般是小表驱动大表,如果经常需要join,大表可以考虑建立索引,这样小表O(n),大表为 O(logn)
(这里简略,最好知道原理)

<>14. order by

如果不进行优化,即不建立索引的话,肯定是把全字段逐一取到内存中排序,但要是建立给where后的字段,order
by后的字段,limit后的字段建立联合索引,就可以把全字段排序变成RowId排序,只把索引调入内存,这样IO次数就会明显减少。

<>15.索引覆盖

把经常进行查询的字段建立成为联合索引,这样可以避免回表。

比如经常要通过姓名查性别,而姓名又不是主键,是一个二级索引,这样如果把姓名和性别作为联合索引的话,就无需进行回表操作了。

<>16.索引下推

在存储引擎层过滤数据的优化方式,如果where字句后的多个字段可以部分使用索引,则会在存储引擎层就会进行一次过滤,并不会把所有数据都读入内存。

<>17.五级范式

第一范式:确保数据表中每个字段的值必须具有原子性,是不能拆分的

第二范式:第一范式基础上,还要满足数据表中每一条记录都是可唯一标识的,且每个非主键字段都是完全依赖于主键的,不能依赖于主键的一部分,也就是在第一范式的基础上,消除了非主属性到主属性的部分函数依赖。

第三范式:第二范式基础上,所有非主键字段都必须和主键字段直接相关,非主键字段不能依赖于非主键字段,也就是在第二范式的基础上,消除了非主属性对主属性的传递函数依赖。

BC范式(巴斯范式):第三范式基础上,表中只有一个候选键,或者每个候选键都是单属性的。

第四范式:消除了属性间的非平凡且非函数依赖的多值依赖

第五范式:消除不是由候选键所蕴含的连接依赖

<>18.数据库管理系统的主要功能

数据定义,数据操纵,数据库的运行管理,数据库的建立和维护

<>19.文件系统和数据库管理系统

文件系统由文件管理系统统一管理,共享性差,冗余度高,记录内有结构,整体无结构。

数据库由DBMS统一管理,共享性高,冗余度低,具有较高的物理独立性和逻辑独立性,整体结构化,用数据模型描述。

<>20.三级模式和两级映像

三级模式包括外模式,模式,内模式。

模式描述了数据库中全部数据的逻辑结构和特征。

外模式描述了用户可见的局部数据的逻辑结构和特征。

内模式描述了数据库的物理结构和存储方式。

二级映像
:外模式和模式间的映像可以保证当模式改变的时候,由DBA对模式和外模式的映像做出相应的改变,而使外模式可以保持不变,从而应用程序也不必改变,保证了数据与程序的逻辑独立性。

模式和内模式间的映像可以保证当存储结构改变的时候,由DBA对内模式和和模式之间的映像做出相应的改变,而使模式可以保持不变,从而保证数据与程序的物理独立性。

<>21.数据操纵语言,数据控制语言,数据定义语言

数据操纵语言(DML):对表的记录进行增删改查。

数据控制语言(DCL):对数据库用户的权限进行控制。

数据定义语言(DDL):对数据库表进行增删改查。

<>22.等值连接和自然连接

等值连接:只需要等值连接的条件,两个关系中不需要有相同的属性列。

自然连接:必须要有相同的属性列才能进行,即等值连接之后要去除相同的属性列。

<>23.数据安全性

数据库的数据保护主要包括数据的安全性和完整性。

数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露,更改和破坏。

数据安全性技术有:用户标识和鉴别,多层存取控制,视图,数据加密。

<>24.存取控制

存取控制是指:确保只授权给有资格的用户访问数据库的权限,且令所有未被授权的用户无法接近数据

两个部分:定义用户权限和合法权限检查

自主存取控制:用户对不同的对象有不同的存取权限,不同的用户对同一对象也有不同的存取权限。

强制存取控制:每个数据对象都被标以一定的密级,每个用户也被授予一定级别的许可证,只有合法许可证才能进行存取。

25.审计

把用户对数据库的一系列操作自动记录在审计日志中,审计员可以利用审计日志监控数据库的各种行为。

26.触发器

触发器是一种特殊的存储过程,类似其他编程语言的事件函数,insert,update,delete都可以绑定触发器,它可以用来强化约束,保证数据库完整性和一致性。

create trigger 触发器名

on 表名

for insert/update/delete

as

触发器执行的东西

27.数据库设计的基本步骤

需求分析,概念结构设计,逻辑结构设计,物理结构设计,数据库实施阶段,数据库的运行和维护

28.查询处理的步骤(我复试被问到)

查询分析:对查询语句进行词法分析和语法分析

查询检查:对合法的查询语句进行语义检查

查询优化:选择一个高效的查询执行策略

查询执行:根据优化器生成的执行策略生成查询执行计划,并生成相应的代码

<>29.优化规则

选择运算和投影操作尽量先做

<>30.事务非正常结束会影响到数据库数据的正确性?

事务具有一致性,事务执行的结果是使数据库从一个一致性状态到另一个一致性状态,如果数据库系统发生故障,有些事务尚未完成就被中断,这些未完成事务对数据所做的修改一部分已写入物理数据库,这是数据库就处于一个不一致状态。

<>31.数据恢复和数据库故障

数据恢复的关键是建立冗余数据

数据库恢复的基本技术

数据转储:数据库管理员定期将数据库的数据复制到其他介质上进行保存,作为后备副本

登记日志文件:日志文件是用来记录对数据库进行更新的文件

要先写日志文件,后写数据库

写日志文件和写数据库是两个操作,如果先写数据库,在这两个操作之间发生系统故障,则数据恢复不能恢复这个修改,但若先写日志文件,数据恢复时可以恢复这个修改。

事务故障:事务在运行至终点前被终止

事务故障恢复是由系统自动完成的,利用日志文件撤销此事务已对数据库进行的修改

系统故障:造成系统停止运转的任何事件

系统故障的恢复是在系统重新启动后系统自动完成,用户无须干预。恢复就是撤销故障时未完成的事务,重做已完成的事务。

介质故障:磁盘上的物理数据和日志文件被损坏。

重装数据库,重做已完成的事务。

<>32.三级封锁协议

一级封锁协议:事务在修改数据之前加写锁,知道事务结束后才释放,防止丢失修改。

二级封锁协议:在一级封锁基础上加上了事务在读取数据之前加读锁,读完后释放,防止读脏数据。

三级封锁协议:在一级封锁基础上加上了事务在读取数据之前加读锁,事务完成后释放,防止不可重复读。

<>
检测自己有没有复习到位,看着以下这些关键字,是否可以说出内容,复试时很多时候老师都是说个关键字,然后你自己根据关键字拓展,既可以检验广度,又可以检验深度。

存储过程
存储函数
多人同时操作数据库
视图
超键 候选键 主键 外键 主属性 非主属性
数据完整性约束
适合创建索引的情况
索引失效的情况
join优化
order by
索引覆盖
索引下推
五级范式
DBMS的主要功能
文件系统和数据库管理系统
三级模式和两级映像
数据操纵语言,控制语言,定义语言
等值连接和自然连接
数据安全性
存取控制
审计
触发器
数据库设计的基本步骤
查询处理的步骤
事务非正常结束
数据恢复和数据库故障
三级封锁协议

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信