事务,MySQL函数和索引详解

文章目录

    • 事务简介
    • 提交方式
      • 手动提交事务
    • 事务执行流程
      • 修改事务的默认提交方式
    • 事务原理
    • 四大特性
    • 隔离级别
  • MySQL函数
    • 常见的日期函数
    • 判断函数case when
    • 字符串函数
    • 数字函数
  • MySQL性能(了解)
  • 索引
    • 概念
    • 分类
    • MySQL索引语法
    • 数据结构(了解)
      • B+Tree
      • B+Tree好处
    • 优缺点
      • 优势
      • 劣势
    • 创建原则

事务简介

是一个不可分割的逻辑单元,可以在一个事务中书写多行SQL语句,这些SQL语句会做一个整体,要么同时成功,要么同时失败
MySQL数据库默认:一行SQL语句就会自动提交(表中数据持久更新)

提交方式

  1. 手动提交事务:先开启,再提交
  2. 自动提交事务(默认的):在执行一条sql语句时自动开启及提交一次事务 mysql是默认

手动提交事务

开启事务:start transaction
提交事务:commit
回滚事务:rollback

事务执行流程

Snipaste_2024-04-12_14-28-31.png

修改事务的默认提交方式

查看事务的默认提交方式
select @@autocommit;
0代表手动提交,1代表自动提交
修改默认提交方式
set @@autocommit = 0;
注意:如果修改了手动提交,增删改之后需要commit

事务原理

Snipaste_2024-04-12_16-03-05.png

四大特性

  1. 原子性 A

原子是不可分割的最小操作单位,要么同时成功,要么同时失败

  1. 一致性 C

事务操作前后,数据总量不变

  1. 隔离性 I

多个用户并发访问数据库,一个用户的事务不能被其他用户的事务干扰,多个并发的事务之间要相互隔离

  1. 持久性 D

当事务提交或回滚后,数据库会持久化的保存数据

隔离级别

Snipaste_2024-04-12_16-21-36.png
Snipaste_2024-04-12_16-21-57.png

MySQL函数

常见的日期函数

Snipaste_2024-04-12_16-51-46.png

判断函数case when

格式一
Snipaste_2024-04-12_17-04-12.png
格式二
Snipaste_2024-04-12_17-04-35.png
通常和select语句一起搭配使用
Snipaste_2024-04-12_17-06-09.png

字符串函数

Snipaste_2024-04-12_17-06-48.png

数字函数

Snipaste_2024-04-12_17-07-54.png

MySQL性能(了解)

Snipaste_2024-04-12_17-18-00.png

索引

概念

就是帮助MySQL高效获取数据的数据结构
本质:是数据结构(B+Tree)
1开始

分类

  1. 主键索引

主键约束(非空+唯一)+提高查询效率

  1. 唯一索引

唯一约束+提高效率

  1. 普通索引

仅提高效率

  1. 组合索引

多个字段组成索引

MySQL索引语法

  1. 创建索引

create index 索引名 on 表名 (字段); 创建普通索引
create unique index 索引名 on 表名(字段);唯一索引
create index 索引名 on 表名(字段1,字段2,…); 普通组合
create unique index 索引名 on 表名(字段1,字段2,…); 唯一组合索引
注意
如果在同一张表中创建多个索引,要保证索引名不能重复

  1. 在已有表的字段上修改表时指定

添加一个主键,索引值唯一非null,默认索引名primary
alter table 表名 add primary key (字段);
添加唯一索引,(null出现多次),默认索引名为字段名
alter table 表名 add unique (字段);
添加普通索引,默认索引名为字段名
alter table 表名 add index (字段);

  1. 创建表时指定

create table student{
id int primary key auto_increment, – 主键索引
name varchar(20),
telephone varchar(11) unique, – 唯一索引
birthday date,
index (name) – 普通索引
};

数据结构(了解)

B+Tree

Snipaste_2024-04-12_17-18-00.png

B+Tree好处

Snipaste_2024-04-12_20-35-26.png

优缺点

优势

1) 类似于书籍的目录索引,提高数据检索的效率,降低数据库的IO成本。IO次数越多,效率越低。
2) 索引底层就是排序,通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。

劣势

  • 在数据库建立过程中,需花费较多的时间去建立并维护索引,特别是随着数据总量的增加,所花费的时间将不断递增。
  • 在数据库中创建的索引需要占用一定的物理存储空间,这其中就包括数据表所占的数据空间以及所创建的每一个索引所占用的物理空间。
  • 在对表中的数据进行修改时,例如对其进行增加、删除或者是修改操作时,索引还需要进行动态的维护,这给数据库的维护速度带来了一定的麻烦。

创建原则

  1. 字段内容可识别度不能低于70%,字段内数据唯一值的个数不能低于70%
    例如:一个表数据只有50行,那么性别和年龄哪个字段适合创建索引,明显是年龄,因为年龄的唯一值个数比较多,性别只有两个选项 。性别的识别度是50%。
    2. 经常使用where条件搜索的字段,例如user表的id name等字段。
    3. 经常使用表连接的字段(内连接、外连接),可以加快连接的速度。
    4. 经常排序的字段 order by,因为索引已经是排过序的,这样一来可以利用索引的排序,加快排序查 询速度。
    注意: 那是不是在数据库表字段中尽量多建索引呢?
    肯定是不是的。因为索引的建立和维护都是需要耗时的 创建表时需要通过数据库去维护索引,添加记录、更新、修改时,也需要更新索引,会间接影响数据库的效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/810894.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++取经之路(其五)——类和对象拷贝构造函数

概念:拷贝构造函数,只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。 特征: 1. 拷贝构造函数是构造函数的一个重载形式 如: 2. 拷贝…

基于springboot实现中小型医院网站管理系统【项目源码+论文说明】

基于springboot实现中小型医院网站管理系统演示 摘要 本基于Spring Boot的中小型医院网站设计目标是实现用户网络预约挂号的功能,同时提高医院管理效率,更好的为广大用户服务。 本文重点阐述了中小型医院网站的开发过程,以实际运用为开发背…

[数据结构]——二叉树——堆的实现

1. 堆的概念及结构 如果有一个关键码的集合K { &#xff0c; &#xff0c; &#xff0c;…&#xff0c; }&#xff0c;把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中&#xff0c;并满足&#xff1a; < 且 < ( > 且 > ) i 0&#xff0c;1&…

rocky9 yum 安装与配置MySQL8

1.前置条件&#xff1a; 把yum包更新到最新 [rootlocalhost ~]# yum update 查看系统中是否已安装 MySQL 服务 rpm -qa|grep mysql 如果有安装mysql,则需要先卸载之前安装的mysql&#xff1a;yum -y remove mysql 然后再查看mysql是否都卸载完成,如果还有没卸载完成的&am…

小程序开发SSL证书下载和安装

在开发小程序时&#xff0c;确保数据的安全传输至关重要&#xff0c;而实现这一目标的关键在于正确获取与安装SSL证书。以下详细介绍了从获取到安装SSL证书的完整流程&#xff0c;以助您为小程序构建可靠的加密通信环境。 一、小程序SSL证书类型选择&#xff1a; 域名验证型D…

Linux:软件包管理器 - yum

Linux&#xff1a;软件包管理器 - yum Linux的软件安装方式源代码安装rpm包安装yum安装 yum三板斧yum listyum installyum remove yum生态yum源 Linux的软件安装方式 源代码安装 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序 源代码安…

git知识

如何将develop分支合并到master分支 #简单版 git checkout master git pull origin master git merge origin/develop # 解决可能的冲突并提交 git push origin master#复杂版 git checkout master # 拉取远程 master 分支的最新代码并合并到本地 git pull origin master # 拉…

新时代·高质量·硬道理丨开放的大门越开越大、开放的水平越来越高

新时代下&#xff0c;中国坚定不移地实施扩大高水平对外开放战略&#xff0c;致力于构建更高层次、更宽领域的开放型经济体系。以下是对新时代高质量硬道理这一主题下&#xff0c;中国开放大门越开越大、开放水平越来越高的几个关键点分析&#xff1a; 全方位开放格局 政府工…

YOLOv8打印模型结构配置信息并查看网络模型详细参数:参数量、计算量(GFLOPS)

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

计算机基础知识-第7章-程序的本质(2)——算法与数据结构概论

一、算法数据结构程序 提出这一公式并以此作为其一本专著的书名的瑞士计算机科学家尼克劳斯沃思&#xff08;Niklaus Wirth&#xff09;由于发明了多种影响深远的程序设计语言&#xff0c;并提出结构化程序设计这一革命性概念而获得了1984年的图灵奖。他是至今惟一获此殊荣的瑞…

【Linux杂货铺】文件系统

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 硬盘 &#x1f4c2; 物理结构 &#x1f4c2; 存储结构 &#x1f4c2; CHS定址法 &#x1f4c2; 操作系统对硬盘的管理和抽象 &#x1f4c1; 文件系统 &#x1f4c2; 分区 &#x1f4c2; 分组 &#x1f4c2; inode号 分配…

1113. 红与黑--Flood Fill 算法

目录 1113. 红与黑--Flood Fill 算法---宽搜&#xff08;BFS&#xff09; 输入格式 输出格式 数据范围 输入样例&#xff1a; 输出样例&#xff1a; 思路&#xff1a; 代码&#xff1a; 运行结果&#xff1a; 1113. 红与黑--Flood Fill 算法---宽搜&#xff08;BFS&am…

股票价格预测 | Python股票价格数据导入和处理

文章目录 文章概述代码设计导入处理文章概述 股票价格预测 | Python股票价格数据导入和处理 代码设计 导入 import os import numpy as np import csv import pandas as pd import matplotlib.pyplot

python入门(一)配置环境和选择IDE

Python&#xff0c;作为一种简洁易懂的编程语言&#xff0c;近年来在全球范围内受到了广泛的关注和追捧。它不仅语法简单明了&#xff0c;易于上手&#xff0c;而且拥有强大的第三方库和广泛的应用领域。从数据分析、机器学习到Web开发&#xff0c;Python都能发挥出色的性能&am…

4.8QT

将按钮3&#xff0c;基于qt4版本连接实现点击按钮3&#xff0c;实现关闭窗口。 widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), btn3(new QPushButton(this)) {ui->s…

区块链相关概念

区块链是什么&#xff0c;就算是做计算机技术开发的程序员&#xff0c;100个当中都没有几个能把这个概念理解明白&#xff0c;更不要说讲清楚了。那对于普通人来说&#xff0c;就更扯了。 除了“挖矿”表面意思似乎比较好理解外&#xff0c;其他的基础概念真TMD绕。 去中心化、…

2024MathorCup(妈妈杯) C题完整思路+数据集+完整代码+高质量成品论文

C题物流网络分中心货量预测及人员排班 &#xff08;完整的资料数据集代码在文末&#xff09; 电商物流网络在订单履约中由多个环节组成&#xff0c;其中&#xff0c;分拣中心作为网络的中 间环节&#xff0c;需要将包裹按照不同流向进行分拣并发往下一个场地&#xff0c;最终使…

快速实现一个Hibernate的例子

写第一个简单的Hibernate程序&#xff1a; 具体的开始第一个Hibernate程序之前: 找到jar包, hibernate 的核心包, mysql数据库的连接驱动包, junit测试包 ①创建Hibernate配置文件 ②创建持久化类 也是和数据库中数据表一一对应这个类 ③创建对象-关系映射文件 ④通过hibern…

Android开发基础:对话框,Toast,Notification的使用 选项菜单,上下文菜单,弹出式菜单的使用

目录 一&#xff0c;Android提示消息 1.提示消息的形式 2.对话框 &#xff08;1&#xff09;默认对话框的创建步骤 &#xff08;2&#xff09; 自定义对话框的创建步骤 3.Toast 4.Notification 二&#xff0c;菜单 1.选项菜单 OptionsMenu 2.上下文菜单 ContextMenu …

LeetCode-1143. 最长公共子序列【字符串 动态规划】

LeetCode-1143. 最长公共子序列【字符串 动态规划】 题目描述&#xff1a;解题思路一&#xff1a;动规五部曲解题思路二&#xff1a;1维DP解题思路三&#xff1a;0 题目描述&#xff1a; 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。…