1.什么是存储过程

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

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

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

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

begin

​ 操作

end

2.什么是存储函数?

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

CREATE function 函数名

return 返回值类型

begin

​ 操作

end

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

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

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

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

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

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

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

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

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

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

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

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

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

6.视图

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

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

7.属性概念

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

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

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

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

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

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

8.数据完整性约束

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

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

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

10.适合创建索引的情况

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

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

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

11.不适合创建索引的情况
  1. where字句中使用不到的列
  2. 数据量小的表不需要创建
  3. 有大量重复数据的表
  4. 经常更新的字段
12.索引失效的情况
  1. 对联合索引来说,最左匹配原则,即如果主键是学生号和课程号,只有课程号是不能使用索引的
  2. 当查询条件的字段中出现计算,函数,类型转换时都会导致索引失效
  3. 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的主要功能
文件系统和数据库管理系统
三级模式和两级映像
数据操纵语言,控制语言,定义语言
等值连接和自然连接
数据安全性
存取控制
审计
触发器
数据库设计的基本步骤
查询处理的步骤
事务非正常结束
数据恢复和数据库故障
三级封锁协议

计算机考研复试-数据库相关推荐

  1. 计算机考研复试数据库常见面试题

    本文是我2021年考研时准备的复试面试题,现在拿出来给大家分享一下 觉得好的点个赞哦,毕竟当初我也是整理了好久,改了好几次版本呢 祝大家都上岸!!!! 1.三级模式结构是什么?二级映射有什么优点? 1 ...

  2. 计算机考研复试面试常问问题 数据库篇

    计算机考研复试面试常问问题 数据库篇 在复习过程中,我用心查阅并整理了在考研复试面试中可能问到的大部分问题,并分点整理了答案,可以直接理解背诵并加上自己的语言润色!极力推荐打印下来看,效率更高!绝对良 ...

  3. 2020杭电计算机考研复试面试

    2020杭电计算机考研复试面试问题 20考研学渣一枚,有幸上岸,整理了下自己以及朋友复试遇到的问题 英语题目: 1.如果你想邀请以为古代名人参加你的聚会,你会选谁 2.最重要的品质,为什么 专业题: ...

  4. 计算机考研复试面试常问问题 编程语言篇

    计算机考研复试面试常问问题 编程语言篇 个人整理,免费分享,不可用于商业用途,转载请注明出处! 但是有同学反应闲鱼上有人盗卖此免费分享资料,还有好多同学买了,所以希望大家多多点赞评论收藏,提高这份资料 ...

  5. 计算机考研复试面试常问问题 计算机网络篇(上)

    计算机考研复试面试常问问题 计算机网络篇(上) 在复习过程中,我用心查阅并整理了在考研复试面试中可能问到的大部分问题,并分点整理了答案,可以直接理解背诵并加上自己的语言润色!极力推荐打印下来看,效率更 ...

  6. 东北大学2022年计算机考研复试在几月

    2022年东北大学计算机考研复试时间预计在2022年3月中旬前后,考研复试内容当前暂未公布,建议考生参考2021年东北大学计算机考研复试信息. 东北大学2022年计算机考研复试时间:3月中旬前后 东北 ...

  7. 华科计算机专业考研专业课难度,我来谈谈我所经历的华中科技大学计算机考研复试...

    我来谈谈我所经历的华中科技大学计算机考研复试 复试总的来说比较正规,凡是认真对待的大都不出意外的获得了理想的结果.    我参加的是计算 作者 wah241 次阅读 2005-02-16 复试总的来说 ...

  8. 南京理工大学计算机考研2020复试和录取,南京理工大学计算机考研复试科目

    南京理工大学计算机考研复试科目如下~ 复试形式: 笔试(100分)+面试(80分)+机试(120分). 面试:考核英语交流水平(30分).专业素质.综合能力等. 各专业笔试如下: 计算机系统结构.计算 ...

  9. 计算机考研复试--英语常问问题及答案

    计算机考研复试–英语常问问题及答案 Category 1: Personal Questions Question 1.1: Tell us something about yourself. Ans ...

最新文章

  1. 因为一次 Kafka 宕机,终于搞透了 Kafka 高可用原理!
  2. 正则表达式 – 语法
  3. linux 图形界面 X Server 关闭 启动
  4. Java-JDK动态代理
  5. 工作135:引用当前组件下面的方法是混入
  6. Jackson动态处理返回字段
  7. seo从入门到精通_新手学习SEO一个月能学会吗?
  8. 【C++】图书管理系统(含全部源代码)
  9. 统计机器翻译与神经机器翻译区别_几十年的领域专家告诉你,机器翻译进化到哪一步了?...
  10. openwrt刷回原厂固件_小米路由器4刷breed, pandavan,openwrt
  11. 微信 JSAPI 支付流程
  12. 世界排名第一的免费开源CRM客户关系管理系统介绍
  13. amd cpu 安卓模拟器_Android 模拟器现已支持 AMD 处理器和 Hyper-V
  14. BCompare替代UltraCompare(UltraEdit)
  15. python生成扑克牌并实现比较大小玩法
  16. simd-neno加速
  17. 鼠眼看Linux调度器 by raise_sail @ chinaunix
  18. 用ps提取彩色图像的线稿
  19. 平稳性检验和白噪声检验
  20. xampp 64位 php5.2,XAMPP 64位

热门文章

  1. 全球家电产业格局生变:日资企业地位崩塌
  2. 807.保持城市天际线
  3. 客户端连接不上mysql数据库_客户端无法连接数据库的小问题
  4. 秒杀活动,提高性能,防止超卖,订单超时
  5. ADT OO OB 的区别
  6. 关于傅里叶变换的理解、快速傅里叶算法的推导以及蝶形运算的c语言实现
  7. 网络计算机怎么使用,联想电脑如何进入和使用网络同传功能
  8. 什么是 Nightly Build
  9. springboot+mybatis+Oauth2 +vue 框架实现登录认证
  10. CSDN日报191115:记软件开发满五年——盘点这些年的改变