面试题锦集:1、数据库三大范式,2、mysql索引类型及作用,3、事务的特性和隔离级别
面试题集锦
一、数据库三大范式
第一范式(1NF):
指数据库中表的每一列都是不可分割的最小单位
# 分割前:
地址
安徽省合肥市蜀山区
# 分割后:
省 | 市 | 区
安徽省|合肥市|蜀山区
第二范式(2NF):
如果表是单主键,那么主键以外的列必须完全依赖于主键列,如果表是符合主键(联合索引),那么主键以外的列必须完全依赖于主键,而不是主键的一部份
第三范式(3NF):
表中的非主键列必须直接依赖于主键列,而不是间接依赖于主键,也就是说非主键列不能间接依赖于主键列,出现这种情况应该在建立一张关联表而不是存放在一张表中
二、mysql有哪些索引类型及作用
首先先说一下什么是索引及索引的作用:
在关系型数据库中,给一个或多个字段(联合索引)设置索引,可以加快数据检索(类似于目录),达到快速查找的作用
普通索引:
允许该字段出现重复的值,且可以为空
唯一索引:
不允许该字段出现重复值,且不可以为空
主键索引:
非空且唯一,在不主动生成的情况下数据库会默认生成一个字段为主键(一般是id字段),非空且唯一
联合索引:
多个字段联合唯一
全文索引:
所有字段都作为索引条件,一般用的比较少,如果删除或修改字段可能照成B树结构改变,在数据量庞大的情况下不建议使用(主要根据业务逻辑来判断是否使用)
三、事务的特性和隔离级别
1、事务的四大特性
原子性(Atomicity):
事务一旦提交,要么全部成功,要么全部失败
隔离性(Isolation):
事务之间相互隔离,不受影响
一致性(Consistency):
一个事务开启后,在这个事务中多次查询数据的结果都必须是一致的
持久性(Durable):
事务一旦提交,对数据的影响是永久的,不可回滚
2、事务的隔离级别
未提交读(READ UNCOMMITTED):
事务的最低级别,会造成脏读、不可重复读、幻读
已提交读(READ COMMITTED):
该级别解决了脏读,但不可重复读和幻读任然存在
可重复度(REPEATABLE READ):
该级别是mysql5.7版本后默认的事务级别,该级别解决了脏读、不可重复度
串行化(SERIALIZABLE):
事务的最高级别,解决了脏读、不可重复读、幻读,该级别极大的保证了数据的安全性,缺点是无并发可言
| 事务的隔离级别 | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|
| 未提交读(READ UNCOMMITTED) | √ | √ | √ |
| 已提交读(READ COMMITTED) | - | √ | √ |
| 可重复度(REPEATABLE READ) | - | - | √ |
| 串行化(SERIALIZABLE) | - | - | - |
3、什么是脏读、不可重复度、幻读
脏读:
指A在事务的过程中可以读取到B修改单位提交的数据
不可重复度:
指在同一个事务中,多次读出数据,出现数据不一致的情况,这种情况通常是update和delete(数据前后不一致或开始时候读取存在,后来就消失了)
幻读:
很多人会把幻读和不可重复读混淆,幻读指在同一个事务的过程中,多次读取数据时,出现了新的数据(insert)
4、解决办法
机制锁:
- ru:最低级别,不加锁
- rc:开启事务时加行级锁,读到的时候加锁,读取完毕释放锁
- rr:开启事务时加行级锁,关闭事务时释放
- se:开启事务加表锁,关闭事务释放锁
MVCC机制:
- 保存某个时间上的数据快照
面试题锦集:1、数据库三大范式,2、mysql索引类型及作用,3、事务的特性和隔离级别的更多相关文章
- 数据库事务ACID特性及隔离级别
数据库ACID特性介绍 1.原子性(Atomic)一个事务被视为一个不可分割的最小工作单元,这个事务里的所有操作要么全部成功执行,要么全都不执行,不能只执行其中的一部分操作.实现事务的原子性,要支持回 ...
- Java数据库事务四大特性以及隔离级别
四大特性ACID 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚.失败回滚的操作事务,将不能对数据库有任何影响 一致性(Consistency) 一致性是指事 ...
- 数据库三大范式(1NF,2NF,3NF)及ER图
数据库三大范式(1NF,2NF,3NF)及ER图 百度官方解释: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据 ...
- C#笔试题面试题锦集(全)总20篇
前些时候找过一次工作,收集了很多不错的笔试题目.共享一下:) C#笔试题面试题锦集(20) 微软应试题目 (2010-01-15 21:32) C#笔试题面试题锦集(19) 雅虎C#题目 (2010- ...
- 数据库三大范式和反范式 · oldmee
后一个范式都是在满足前一个范式的基础上建立的. 1NF 无重复的列.表中的每一列都是不可分割的基本数据项.不满足1NF的数据库不是关系数据库.如联系人表(姓名,电话),一个联系人有家庭电话和公司电话, ...
- 11月29日内容总结——SQL注入问题、视图、触发器、事务、存储过程、函数、流程控制、索引、慢查询、数据库三大范式
目录 一.SQL注入问题 SQL注入问题引入 SQL注入概念和解决方案 二.视图 三.触发器 定义 代码 1.触发器命名有一定的规律 2.临时修改SQL语句的结束符 四.事务 事务的四大特性(ACID ...
- 一天五道Java面试题----第七天(mysql索引结构,各自的优劣--------->事务的基本特性和隔离级别)
这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 1 .mysql索引结构,各自的优劣 2 .索引的设计原则 3 .mysql锁的类型有哪些 4 .mysql执行计划怎么看 ...
- Mysql加锁过程详解(6)-数据库隔离级别(2)-通过例子理解事务的4种隔离级别
Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...
- 重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化
重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化 一:Mysql原理与慢查询 MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能 ...
- 数据库索引原理,及MySQL索引类型(转)
在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: CREATE TABLE mytable( ID INT NOT NULL, username ) NOT N ...
随机推荐
- kali linux|01.kali下安装Nessus
Kali安装Nessus 说明 Nessus是一款基于插件的系统漏洞扫描和分析软件 一.安装 1.下载安装包 https://www.tenable.com/downloads/nessus 查看ka ...
- 开始 go
为什么开始想转 go ? 毕业三年多,一直从事的是 Java , 大学学的也是 Java ,本来想一直干下去的,可是似乎 Java 水涨船高,面试要求也越来越高. 曾经一起毕业的同事自学 go ,已经 ...
- 树莓派启动后自动发送本地IP 到指定邮箱
在 /etc/init.d 目录下建立 GetLocalip.py 文件 #coding: utf-8 import smtplib from email.mime.text import MIM ...
- Liunx mosquitto卸载
1.查询文件: whereis mosquitto whereis mosquitto_sub 2.删除查询到的文件,命令: rm -rf /etc/mosquitto rm -f /usr/loca ...
- conda相关的设置备忘
因为默认channel已经没有3.4.4(最后一个支持xp的python3)了,为了添加这个的版本,尝试先用conda-forge channel: conda create -n myenv pyt ...
- Linux(2)
虚拟机关键配置名词解释 远程链接工具 linux准则 远程链接工具快捷键 系统相关命令 文件相关命令 linux目录结构 虚拟机关键配置名词解释 # 虚拟网络编辑器说明 桥接模式 # 可以访问互联网 ...
- nojejs 弹出子窗口,取值后返回
1.主窗口: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...
- C/C++ 数据结构单链表的实现(初始化、插入、删除、销毁)
#include <iostream> #include <Windows.h> #define MAX_SIZE 100 using namespace std; //单链表 ...
- Docker 容器与镜像
列出所有容器ID :docker ps -aq 查看所有运行或者不运行容器:docker ps -a 停止所有的container(容器),这样才能够删除其中的images:docker stop $ ...
- 2020.11.24 javaScript匿名函数的使用
参考链接:http://www.voidcn.com/article/p-ngxxuegm-bmv.html 匿名函数: 函数表达式中创建的函数叫做匿名函数,也就是没有函数名的函数. 自执行函数: 创 ...