MySQL-高频面试题详细总结

一、数据库基本概念

1. 超键、候选键、主键、外键是什么?

超键:能唯一标识某条数据的属性集合,比如身份证号、学号等等。

候选键:最小的超键。比如学号或身份证号。

主键:人为规定的候选键,能够标识出某一条数据。

外键:另外一个表的主键在这个表中的引用称为外键,用来描述两个表的关系。


2. 什么是存储过程?有哪些优缺点?

存储过程是一组预编译的SQL语句,封装了多个SQL,就像编程语言中的函数一样,创建一次,就能被多次调用。

优点

  1. 存储过程是预编译过的,执行效率比单独执行每一条语句要高。
  2. 存储过程的代码存在数据库中,通过存储过程名直接调用,可以减少网络通信量。
  3. 存储过程可以重复使用,有效减少开发人员的工作量。

缺点

  1. 将核心逻辑放在数据库中,难以更新、迭代。
  2. 移植性差,不同数据库的存储过程实现几乎不同。

3. 什么是触发器?有什么作用?

触发器是一种特殊的存储过程,通过事件的触发来执行,比如修改、插入、删除特定表中的数据时执行。可以用来强化约束,维护数据的完整性和一致性。比如说删除某个班级后,将属于该班级学生的班级置为空。


4. 什么是视图?有什么作用?

视图是一种虚拟的表,建立在现有表的基础上,通常为一个或多个表的子集。

有时候,我们不希望表中的所有字段被看到,就可以将表中的部分字段封装为一个视图,以供他人查询。而且,对于一些复杂的连结查询,使用视图能让开发者注重逻辑,简化编码流程。


5. 三个范式是什么?

第一范式:字段是最小的单位,不可再分。例如姓名字段,不能拆分成姓和名。

第二范式:表中的字段必须完全依赖于主键。例如我的姓名是xxx,我的年龄是21,这都依赖于主键学号。

第三范式:表中的字段都与主键直接相关,而不能间接相关。例如订单表中关联用户信息,那么就只用关联id就行,不用把用户的姓名、年龄等等信息都加入。这样能消除传递依赖,就是当用户信息更改后,还需要更改订单表中的一堆字段。


6.什么是事务?事务有哪些隔离级别?

事务指的是一个操作序列,要么同时成功,要么同时失败,它是一个不可分割的工作单位。

事务有四个特性

  • 原子性:事务中的所有操作像原子一样不可分割。
  • 一致性:事务执行后,必须从一个一致性状态转为另一个一致性状态。
  • 隔离性:并发执行的事务不会相互影响。
  • 持久性:事务一旦提交,对数据库的更改是持久的。

事务的隔离级别,就和以下几种并发异常相关:

  • 脏读:事务A修改了数据,未提交。事务B读到了这个未提交的数据,然后事务A回滚了数据,这样,事务B就读到了错误的数据。
  • 不可重复读<
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值