Mysql事务索引知识汇总
作者:Lokemow 发布时间:2024-01-18 17:06:24
一、事务
mysql事务是用于处理操作量大、复杂性高的数据
1. 事务特性
原子性:保证每个事务所有操作要么全部完成或全部不完成,不可能停滞在中间环节;如事务在执行过程中出现错误,则会回滚到一致性:事务开始结束后保证数据库的完整性没有被破坏,数据都是按照数据库要求的规范写入。
隔离性:数据库允许多个事务同时对数据进行读写改操作,隔离性则可以防止多个事务由于交叉执行时导致数据不一致;事务中隔离分为4个级别。【出现:√ 不会出现:×】
脏读 | 不可重复读 | 幻读 | |
读未提交 | ✔️ | ✔️ | ✔️ |
读已提交 | ✖️ | ✔️ | ✔️ |
可重复读 | ✖️ | ✖️ | ✔️ |
串行化 | ✖️ | ✖️ | ✖️ |
持久性:事务提交后对数据库中的修改则是永久性的。
2. 事务并发时出现的问题
脏读:一个事务在处理过程中读取了另一个未提交的事务数据,当未提交的数据提交后,最终导致数据不一致。
不可重复读:一个事务在多次进行查询返回数据时,另一个事务将数据修改后提交,导致前事务数据产生不同的结果。
幻读:A事务将数据修改完毕时,同一时间B事务新增一条数据,A事务提交后查询发现还有一条数据没有进行修改,好似产生幻觉一样则为幻读。
二、索引
索引能加快数据库的查询速度并高效获取指定的数据。
优势:
提高数据检索效率,降低数据库IO成本
通过索引列可以对数据进行排序,降低CPU消耗
确保数据唯一性
加速表与表之间连接,实现表与表之间参照完整性
劣势:
占据磁盘空间
降低更新表的效率
1. 索引使用
创建索引
普通索引:
create index 索引名称 on 表名(列名)
其他索引(举例唯一索引unique):
公式:
create unique index 索引名称 on 表名(列名)
实例:
create table Demo(id int,
name varchar(20),
sex int,
unique index Demo_id(id ASC));
删除索引
删除:
公式:
drop index 索引名 on 表名;
实例:
drop index Dmoe_id on Demo;
2. 索引类型
主键索引(primary key):对主键进行索引,主键不允许空值。
普通索引(index/key):默认类型,无限制,允许定义索引时有重复值和空值。
唯一索引(unique key):专注于对唯一类型数据进行索引,允许空值。
全文索引(full key):用于数值比较、范围过滤、关键字匹配的范围性快速查询。
联合索引:多列值组成索引,用于多列组合查询。
3. 索引注意原则
索引不是越多越好,数据量小的表不建议添加索引
不建议在经常增删改操作的表中添加索引
索引一般添加在需要索引的列上
三、SQL
SQL是一种结构化查询语言,用于对数据进行插入、查询、更新、删除操作来管理数据库系统。
1. SQL优点
简单易学,操作性强
大多数数据库都支持SQL
SQL操作数据库时大部分的工作由DBMS来完成
2. SQL分类
DDL[数据定义语言]:用于操作数据库、表、列,常用语句create、alter、drop;
DML[数据操作语言]:用于操作数据库中数据,常用语句insert、update、delect;
DCL[数据控制语言]:用于操作访问权限和安全级别,常用语句grant、deny;
DQL[数据查询语言]:用于查询数据,常用语句select;
3. SQL语法及关键字
insert into
:数据插入操作,语法为insert into 表名(列1,列2)value(值1,值2),插入时列名和值需要一一对应。select from
:数据查询操作,语法为select * from 表名;*则代表全部列名,可通过输入列名来查询特定数据。update set
:更新操作,语法为update 表名 set 条件A where 条件B,条件A为修改条件,条件B为修改操作。delete from
:删除操作,语法为delect from 表名 where 条件A,条件A为删除条件。where
:用于sql中条件判断、条件过滤等操作。having
:类似于where,一般使用于group by之后,与where区别在于where过滤行,having过滤组。like
:用于模糊查询,主要只针对于“字符型”字段,常用"_"和"%"这两种通配符,前者充当占位符,后者代表匹配任意字符。order by
:用于数据排序,常用ASC升序排列和DESC降序排列。group by
:用于对字段进行分组。not
:用于判断表达式真假,类似于java语言中boolean。and
:用于在where子句后面将多个条件结合起来。between
:用于取两个值之间的数据范围。lnner join
:内连接,多表连接时只会显示满足条件的数据结果。left join
:左连接,多表连接时只会以左表为基准显示左表全部数据,右表只会显示对应数据,若无对应数据显示null。right join
:右连接,与左连接相反;多表连接时只会以右表为基准显示左表全部数据,左表只会显示对应数据,若无对应数据显示null。in
:用于嵌套语句查询,常用语子查询中。
四、数据库设计
1. 数据库三大范式
每个字段具有原子性不可再分。
建立在第一范式的基础上,确保数据库表列中只保存一种数据,不可以把多种数据保存在一个数据库表列中。
建立在地二范式的基础上,数据不能存在传递关系,数据库中每个字段和主键都是直接关系。
2. 数据库规范设计
系统需求分析
概念结构设计
逻辑结构设计
物理结构设计
数据库实施
数据库运维
来源:https://www.cnblogs.com/Lokemow/p/LokemowKai_mysql.html


猜你喜欢
- 这次主要教的是如何通过Python 获取Windows系统下的所有的磁盘盘符,以列表的形式展示出来,获取磁盘号下的盘符包括能够获取到我们正在
- 最近在学习Golang语言,中间遇到一个前辈指点,有一个学习原则:Learning By Doing。跟我之前学习Java的经验高度契合。在
- 前言只有Innodb和myisam存储引擎能用全文索引(innodb支持全文索引是从mysql5.6开始的)char、varchar、tex
- 在使用Django2.0 并配置了mysql作为数据库时,启动报错:报错1:找不到mysqlclientdjango.core.except
- 界面设计页面引用了youzan组件进行设计,包括icon,button,tag,toast以及布局github地址:https://gith
- 写在前面:在个别时候可能需要查看当前最新的事务 ID,以便做一些业务逻辑上的判断(例如利用事务 ID 变化以及前后时差,统计每次事务的响应时
- 目录MySQL 基础常用命令1. SQL语句2. 建表3.字段属性4.修改表:alter table5. 增删改查:字符串全部使用'
- JavaScript Date.toDateString()方法返回一个Date对象的人类可读形式的日期部分。语法Date.to
- 一些基本的操作,在工作者遇到相关问题要有相关印象。一、 你想对浮点数执行指定精度的舍入运算对于简单的舍入运算,使用内置的 round(val
-   在用Python进行数据处理的时候,经常会遇到DataFrame中的某一列本应该是数值类型,但由于数
- 教育信息化时代,考试成绩也要求上网公布。一次我将考试成绩制作成一个HTML文件,如图1所示,领导审查的意见是“将成绩按名次排列”,可是所有的
- 自动上次ymPrompt组件发布,自己就曾发现在IE8下遮罩的半透明滤镜有时无效的问题,后来也有网友提出过这个问题,但自己一直也没有太多关注
- PDO::commitPDO::commit提交一个事务(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)说
- 卸载旧版本的MySQL(没有就跳过此步骤)(注:3-6步 重新安装新版本的MySQL,一定要把之前版本卸载干净,要不会出错;新的虚拟机初装M
- 如果我们知道一个静态文件的实际路径如:https://www.aspxhome.com/download/cidianwang.pdf,如果
- 寻觅工具确定任务之后第一步就是找个趁手的库来干活。 Python Excel上列出了xlrd、xlwt、xlutils这几个包,但是它们都比
- SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL。其中用于定义数据的结构,比如 创建
- python-opencv3.0新增了一些比较有用的 * 算法,这里根据官网示例写了一个 * 类程序只能运行在安装有opencv3.0以上版
- 效果如下所示:项目需要动态生成面包屑导航,并且首页可以点击.其余为路径显示<el-menu :unique-opened="
- 在sql语句中,我们难免会用到单引号嵌套的时候,但是直接嵌套肯定是不行的,java中用反斜杠做转义符也是不行的,在sql中是用单引号来做转义