Mysql 面试题总结
主键 超键 候选键 外键
- 主 键: 数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。
- 超 键: 在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。
- 候选键: 是最小超键,即没有冗余元素的超键。
- 外 键: 在一个表中存在的另一个表的主键称此表的外键。
事务 transanction
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
- 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
- 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
- 事务用来管理 insert,update,delete 语句
缩写常用:ACID
- Atomicity 原子性:
- 整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。
- 事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
- Consistency 一致性:
- 类似线程安全:并行,并发执行结果和顺序执行一致
- Isolation 隔离性:
- 不受其他行为干扰:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
- 事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
- Duration 持久性:
- 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
视图 view
视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询;不包含任何列或数据。
作用: 使用视图可以简化复杂的 sql 操作,隐藏具体的细节,保护数据;视图创建后,可以使用与表相同的方式利用它们。
总结:
- 抽象:简化复杂的 sql 操作,隐藏具体的细节,保护数据
- 复用:视图创建后,可以使用与表相同的方式利用它们。
使用:
- 视图不能被索引,也不能有关联的触发器或默认值,如果视图本身内有 order by 则对视图再次 order by 将被覆盖。
- 创建视图:create view XXX as XXXXXXXXXXXXXX;
- 对于某些视图比如未使用联结子查询分组聚集函数 Distinct Union 等,是可以对其更新的,对视图的更新将对基表进行更新;但是视图主要用于简化检索,保护数据,并不用于更新,而且大部分视图都不可以更新。
索引 Index
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用 B 树及其变种 B+ 树。
在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。
为表设置索引要付出代价的: 1. 增加了数据库的存储空间, 2. 在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。
- 原文作者:战神西红柿
- 原文链接:https://tomatoares.github.io/posts/database/mysql-%E6%80%BB%E7%BB%93/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。