数据库面试题总结之一
1.什么是事务?以及四个特性
事务(Transaction)是并发控制的基本单位。
所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。
ACID
原子性:要么执行,要么不执行,也就是不可再分,已经最小了。
隔离性:所有操作全部执行完以前其它会话不能看到过程。
一致性:事务前后,数据总额一致。
持久性:一旦事务提交,对数据的改变就是永久的
事物的语句:
1.开始事务:BEGIN TRANSACTION
2.提交事务:COMMIT TRANSACTION
3.回滚事务:ROLLBACK TRANSACTION
2.索引是什么?有哪些作用和优缺点
索引就一种特殊的查询表,数据库的搜索可以利用它加速对数据的检索。
它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。
索引可以是唯一的,创建索引允许指定单个列或者是多个列。
缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小
MySQL数据库几个基本的索引类型:普通索引、唯一索引、主键索引、全文索引
- 索引加快数据库的检索速度
- 索引降低了插入、删除、修改等维护任务的速度
- 唯一索引可以确保每一行数据的唯一性
- 通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能
- 索引需要占物理和数据空间
3.什么是存储过程?有哪些优点
存储过程是一些预编译的SQL语句。
更加直白的理解:存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,
这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。
- 存储过程是一个预编译的代码块,执行效率比较高
- 一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率
- 可以一定程度上确保数据安全
4.数据库的乐观锁和悲观锁是什么
数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。
乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。
- 悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作
- 乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。
5.使用索引查询一定能提高查询性能吗
通常,通过索引查询数据比全表扫描要快.但是我们也必须注意到它的代价.
索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时,索引本身也会被修改.
这意味着每条记录的INSERT,DELETE,UPDATE将为此多付出4,5 次的磁盘I/O.
因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢.使用索引查询不一定能提高查询性能,
6.简单说说drop,delete,truncate的区别
drop直接删掉表 。
- delete和truncate只删除表的数据不删除表的结构
- 速度,一般来说: drop> truncate >delete
7.drop,delete,truncate分别在什么场景下使用
- 不再需要一张表的时候,用drop
- 想删除部分数据行时候,用delete,并且带上where子句
- 保留表而删除所有数据的时候用truncate
8.超键,候选键,主键,外键分别是什么
主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。
外键:在一个表中存在的另一个表的主键称此表的外键。
超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。
候选键:是最小超键,即没有冗余元素的超键。
9.什么是视图,以及使用场景
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。
对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。
10,说说三大范式
1NF 属性不可分
2NF 非主键属性,完全依赖于主键属性
3NF 非主键属性无传递依赖