【数据库】数据库基本知识
一、事务概念
事务简单来说就是一组原子性的SQL查询,或者一个独立的工作单元,通常由一组SQL语句组成,如果其中任何一条语句因为崩溃或其他原因没有执行,那么所有的语句都不会执行。
二、事务特性(ACID)
1、原子性(Atomicity)
一个事务是数据库系统最小的工作单元,不可再分割,整个事务的所有操作要么全部提交执行成功,要么全部失败回滚,不可能只执行其中的一部分。
2、一致性(Consistency)
一致性指数据库总是从一个一致性的状态转换到另外一个一致性的状态。从原子性的角度来讲,一致性就是说要么数据库处于一个事务执行之前的状态,要么是其执行之后的状态,不可能处于事务执行中的状态。
3、隔离性(Isolation)
通常来说,一个事务所作修改在最终提交之前对其他事务都是不可见的。
4、持久性(Durability)
一旦事务提交,其所作修改就会永久保存到数据库中,即使系统崩溃或其他特殊原因,已修改的数据都不会改变。
三、数据库读写问题
1、脏读(Dirty Read)
事务可以读取未提交的数据,称为脏读。
2、不可重复度(Nonrepeatable Read)
执行两次同样的查询,可能会得到不一样的结果。
3、幻读(Phantom Read)
当某个事务在读取某个范围内的记录时,另外一个事务又在该范围内插入了新的纪录,当之前的事务再次读取该范围内的记录时就会产生幻行。
四、隔离级别
1、READ UNCOMMITTED(未提交读)
事务的修改即使没有提交,对其他事务都是可见的。
2、READ COMMITTED(提交读)
一个事务开始时,只能看见已提交事务所作的修改。
3、REPEATABLE READ(可重复读)
在同一个事务中多次读取同样的记录结果是一致的。
4、SERIALIZABLE(串行化)
强制事务串行执行来避免上述问题,在读取的每一行数据上都加锁,会产生大量超时和锁争用问题。
隔离级别 | 脏读可能性 | 不可重复读可能性 | 幻读可能性 | 加锁读 |
---|---|---|---|---|
READ UNCOMMITTED | YES | YES | YES | NO |
READ COMMITTED | NO | YES | YES | NO |
REPEATABLE READ | NO | NO | YES | NO |
SERIALIZABLE | NO | NO | NO | YES |
五、数据库范式
1、第一范式(1NF)
数据库表的每一列都是不可再分割的原子数据项。
2、第二范式(2NF)
在1NF的基础上,非码属性必须完全依赖于候选码(消除非主属性对主码的部分函数依赖)。
不满足2NF可能产生的问题:数据冗余、更新异常、插入异常、删除异常
3、第三范式(3NF)
在2NF的基础上,任何非主属性不依赖于其他非主属性(消除传递依赖)。
不满足3NF可能产生的问题:数据冗余、更新异常
4、Boyce-Codd范式(BCBF范式)
在3NF的基础上,任何非主属性不能对主键子集依赖(消除对主码子集的依赖)
【数据库】数据库基本知识相关推荐
- 知识图:从图和数据库中获取知识
知识图:从图和数据库中获取知识 知识图到底是什么,以及关于它们的所有炒作是什么?如果想成为世界各地的Airbnbs,Amazon,Google和LinkedIn,那么学会区分真实的炒作,定义不同类型的 ...
- 数据库索引-基本知识
为什么80%的码农都做不了架构师?>>> 数据库索引--基本知识 有许多因素会影响数据库性能.最明显的是数据量:您拥有的数据越多,数据库的速度就越慢.虽然有很多方法可以解决性能 ...
- [python学习] 专题九.Mysql数据库编程基础知识
在Python网络爬虫中,通常是通过TXT纯文本方式存储,其实也是可以存储在数据库中的:同时在WAMP(Windows.Apache.MySQL.PHP或Python)开发网站中,也可以通过Pytho ...
- 2. Mysql数据库的入门知识
2. Mysql数据库的入门知识 (1)打开Windows系统提供的服务查看相应的服务. (2)在Windows任务管理器的进程中查看 (3)使用命令行管理windows的Mysql数据库服务. Ne ...
- OceanBase开源,11张图带你了解分布式数据库的核心知识
蚂蚁集团自研数据库OceanBase已经开源,这对国产分布式数据库来说,是一个重磅消息.一直以来OceanBase作为商业数据库,披露的技术细节并不多,以后又多了一个可以拿来研究的优秀分布式数据库.参 ...
- mysql数据库python基础知识_python学习之Mysql数据库编程基础知识介绍
在Python网络爬虫中,通常是通过TXT纯文本方式存储,其实也是可以存储在数据库中的:同时在WAMP(Windows.Apache.MySQL.PHP或Python)开发网站中,也可以通过Pytho ...
- 计算机基础三级,三级数据库计算机基础知识
<三级数据库计算机基础知识>由会员分享,可在线阅读,更多相关<三级数据库计算机基础知识(9页珍藏版)>请在人人文库网上搜索. 1.模拟 三级数据库计算机基础知识(二)一.选择题 ...
- 数据库入门理论知识介绍以及编译安装MySql
数据库入门理论知识介绍以及编译安装MySql 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 前言: 1.目前90%以上的公司面临的运维的瓶颈都在后端 最常见的2大瓶颈就是: 1&g ...
- 二、全国计算机三级数据库考试——理论知识总结(填空题)
上一篇博客:一.全国计算机三级数据库考试--理论知识总结(选择题)_简时刻的博客-CSDN博客 说明:红色字为三级数据库考试中需要输入的答案,填空题在考试中一共15道题,一题2分,一共30分. IDE ...
- 数据库 (基础数据库知识 )
目录: 一. 数据库基础知识 1. 数据库介绍 1.1 什么是数据库 1.2 数据库的分类 1.3 使用数据库的原因 1.4 Sql的优点 1.5 数据库的特点 1.6 数据库服务的操作 2.Mysq ...
最新文章
- go语言使用go-sciter创建桌面应用(八) 窗口显示时,自动加载后端数据。
- emwin修改text字体颜色_Rggplot2 绘制带颜色条的相关性散点图
- 第二课--字符串类型及操作
- 利用JavaScript选择GridView行
- 5911. 模拟行走机器人 II
- find找多个单元格的文本_灵活套用LEFT、RIGHT、MID、FIND函数,解决90%的信息提取问题...
- STL学习系列五:Queue容器
- LAV Filter 源代码分析 1: 总体结构
- [转载] 随机游走和随机重启游走_网络动画API的随机游走
- spring——工厂模式
- ios ipa分析之 .dSYM 文件、.xcarchive 文件和 Link Map 文件的Mac版本分析工具:MKAppTool
- 【离散数学】群、环和域的关系
- 《牧羊少年奇幻之旅》读后感
- mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法
- 红米Note 4超简单刷成开发版获取ROOT权限的流程
- android同时预览多个监控,基于VLC的Android多路视频监控系统.pdf
- 介绍Spring Boot 启动时,自动执行指定方法的 7 种方法
- 服务器12种基本故障+排查方法
- Speedoffice(word)文档如何操作上标和下标?
- (1-1)Matplotlib绘图模板