Mysql事务索引知识汇总


Posted in MySQL onMarch 17, 2022

一、事务

          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. 数据库规范设计

  • 系统需求分析
  • 概念结构设计
  • 逻辑结构设计
  • 物理结构设计
  • 数据库实施
  • 数据库运维

到此这篇关于Mysql事务索引知识汇总的文章就介绍到这了,更多相关Mysql事务索引内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySql学习笔记之事务隔离级别详解
May 12 MySQL
详解mysql三值逻辑与NULL
May 19 MySQL
MySQL为id选择合适的数据类型
Jun 07 MySQL
MySQL 5.7常见数据类型
Jul 15 MySQL
MySQL 四种连接和多表查询详解
Jul 16 MySQL
MySQL非空约束(not null)案例讲解
Aug 23 MySQL
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
Nov 17 MySQL
关于MySQL临时表为什么可以重名的问题
Mar 22 MySQL
优化Mysql查询的示例
Apr 26 MySQL
MySQL sql模式设置引起的问题
May 15 MySQL
mysql sock 文件解析及作用讲解
Jul 15 MySQL
MySQL慢查询优化解决问题
Mar 17 #MySQL
MySQL日期时间函数知识汇总
MySQL优化常用的19种有效方法(推荐!)
MySQL多表查询机制
MySQL高级进阶sql语句总结大全
Mar 16 #MySQL
一条慢SQL语句引发的改造之路
MySQL中一条update语句是如何执行的
You might like
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
2010/04/20 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
Javascript 按位与赋值运算符 (&=)使用介绍
2014/02/04 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
2016/05/14 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
JS 实现分页打印功能
2018/05/16 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
2018/10/11 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
django 微信网页授权登陆的实现
2019/07/30 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
田径运动会开幕式及主持词
2014/03/28 职场文书
保护环境建议书300字
2014/05/13 职场文书
校车安全责任书
2014/08/25 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
办公室规章制度范本
2015/08/04 职场文书
升学宴学生致辞
2015/09/29 职场文书
如何才能写好调研报告?
2019/07/03 职场文书