初始MySQL(六)(自增长,索引,事务,隔离级别)

news2024/12/23 14:28:52

目录

自增长

索引

索引的原理:

mysql索引的类型

添加/删除索引/查看索引

添加索引

删除索引

查看索引(没有生成或者问问什么时候存在)

小结

MySQL事务

关于事务的一些概念

mysql数据库控制台事务的几个重要操作

MySQL事务细节讨论

MySQL事务隔离级别

介绍

数据库中的四种隔离级别


自增长

在某张表中,存在一个id列(整数),我们希望在添加记录的时候,该列从1开始,自动增长,应该怎么处理?

语法: 字段名 整型 primary key auto_increment

 自增长的两种写法

 自增长使用的细节

(1) 一般来说自增长和primary key 配合使用的

(2) 自增长也可以单独使用(但是需要配合一个unique)

(3) 自增长修饰的字段为整型的,虽然小数也可以但是非常非常少的使用)

(4)自增长默认从1开始,你也可以通过下面的命令alter table 表名 auto_increment = 新的开始值

(5) 如果你添加数据时,给自增长字段(列)指定值后,则以指定的值为准,如果指定了自增长,一般来说,就按照自增长来添加数据

索引

索引的原理:

没有索引为什么会慢?因为会全表扫描

使用索引为什么会快?形成索引的数据结构,比如说二叉树,B树啥的

索引的代价: (1)磁盘占用 (2) 对dml(update delete insert) 语句的效率影响

mysql索引的类型

1.主键索引: 主键自动的为主索引(类型Primary key)

2.唯一索引(UNIQUE)

3.普通索引(index)

4.全文索引(MySQL的不好用,不说了)

添加/删除索引/查看索引

添加索引

添加主键索引: (1)一般直接在表中指定谁是主键索引

(2)ALTER TABLE 表名 ADD PRIMARY KEY(列名) 

添加唯一索引:(1) CREATE UNIQUE INDEX id_index(索引名) ON 表名(列名);

(2)ALTER TABLE t26(表名) ADD INDEX id_index(id) 索引名(列名)

CREATE TABLE t26(
id INT,
`name` VARCHAR(32));

-- 添加唯一索引
CREATE UNIQUE INDEX id_index ON t26(id); #第一种方法
CREATE UNIQUE INDEX id_index ON t26(id); #创建的第二种方法

添加普通索引:(1)CREATE INDEX id_index ON t26(id);

(2)ALTER TABLE t26 ADD INDEX id_index(id)

删除索引

1.DROP INDEX id_index(索引名) ON t26 (表名)

2.ALTER TABLE t26(表名) DROP PRIMARY KEY; -- 一张表只有一个主键,直接说主键就行了

查看索引(没有生成或者问问什么时候存在)

-- 查询索引
-- 1.方式
SHOW INDEX FROM t26
-- 2.方式
SHOW INDEXES FROM t26
-- 3.方式
SHOW KEYS FROM t26
-- 4.方式
DESC t26

小结

1. 较频繁的作为查询条件应该创建索引

select * from emp where empno = 1

2.唯一性太差的字段不适合创建索引,即使频繁作为查询条件

select * from emp where sex ='男'

3.更新非常频繁的字段不适合

MySQL事务

关于事务的一些概念

什么是事务: 用于保证数据的一致性,它由一组相关的dml语句组成的,该组dml语句要么全部成功,要么全部失败,如: 转账就要就用事务来处理,用以保证数据的一致性

那咱们就那转账来说说,假如说张三现在有300块钱,李狗蛋有200块钱,张三买了李狗蛋100块钱的二手书,张三要转给李狗蛋100块钱,咱们的数据库应该这么写

这个改变就是一组del语句,如果这个del语句一部分成功的话,就是说张三300减了100块钱,李狗蛋就是没收找,还是200块钱,凭空消失了100块钱,这不是活闹鬼了吗?不行,肯定不行!!!!,所以说我们这个事务只能全部成功,要么全部失败,不存在局部成功!!!

mysql数据库控制台事务的几个重要操作

1.start transaction 开始一个事务

2.savepoint 保存点名  -- 设置保存点

3.rollback to 保存点名 -- 回退事务

4.rollback -- 回退全部事务

5.commit -- 提交事务,所有的操作生效,不能回退

咱们画个图看看

-- 事务的重要的概念和具体操作
-- 1.创建一张测试表
CREATE TABLE t27(
id INT,
`name` VARCHAR(32));
-- 2.开始事务
START TRANSACTION
-- 3.设置保存点
SAVEPOINT a
-- 执行dml操作
INSERT INTO t27 VALUES(100,'tom')
SELECT * FROM t27


SAVEPOINT b
-- 执行dml操作
INSERT INTO t27 VALUES(200,'jack')
-- 回退到b
ROLLBACK TO b;

-- 继续回退 a 
ROLLBACK TO a;

ROLLBACK -- 表示直接回退到事务开始的状态
COMMIT -- 提交事务,回退无效

MySQL事务细节讨论

-- 讨论事务细节
-- 1. 如果不开始事务,默认情况下,del操作是自动提交的,不能回滚
INSERT INTO t27 VALUES(300,'milan');
ROLLBACK
SELECT * FROM t27
-- 2. 如果开始一个事务,你没有创建保存点,你可以执行rollback,
-- 默认就是回到你事务开始的状态
START TRANSACTION -- 开启事务有一个默认的保存点
INSERT INTO 27 VALUES(400,'牛掰');
ROLLBACK -- 表示直接回退到事务的状态
-- 3.你可以在提交之前,创建多个保存点
-- 4. 在事务提交前,选择回退到哪个保存点
-- 5.mysql 的事务机制innodb的存储引擎还可以使用,myisam不好使
-- 6.开始一个事务start transaction ,set autocommit = off

MySQL事务隔离级别

介绍

多个连接开启各自的事务操作数据库时,数据库系统要负责隔离操作,来保证各个连接在获取数据时的准确性,不设置隔离性,可能会引发: 脏读,不可重复读,幻读,俗话说就是假如说现在有两个人都在操作这个数据库,必须让这两个人操作进行一定的隔离,不隔离会有不好的影响

上面的脏读,不可重复读,幻读是啥个意思呢?

我们就说大白话了,不说官方的了

脏读: 有两个事务,一个事务读了另一个事务还没提交的修改后的数据的时候,这就是脏读

不可重复读: 一个事务正在读数据库,读着读着,另一个事务跑过来,对数据库中的数据修改和删除的后提交了,提交完之后这个事务就跑了,第一个事务就会读到跑过来事务修改后的数据,这就是不可重复度

幻读:和上面一样,就是跑过来的那个事务,对数据进行了插入,然后提交跑了,第一个事务就读到了跑过来的那个事务插入的数据

数据库中的四种隔离级别

其中的加锁就是,这个数据库只能由一个事务进行访问,先下手为强哈!!只要是一个事务开始了他对数据库读到操作之后,别的事务只能再后面排队

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

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

相关文章

UI原型图

最近没啥项目,闲来无事,研究了一下原型图,万一以后年龄大了,代码敲不动还可以画画原型图,嘿嘿嘿 今天研究了两款画原型图的工具,即时设计-即时设计 - 可实时协作的专业 UI 设计工具 MODAO-墨刀 两款工具…

数组相关面试题--5.合并两个有序数组

5. 合并两个有序数组 88. 合并两个有序数组 - 力扣(LeetCode) 解题思路:1. 从后往前遍历数组,将nums1和nums2中的元素逐个比较将较大的元素往nums1末尾进行搬移2. 第一步结束后,nums2中可能会有数据没有搬移完,将nums…

Docker的3主3从redis集群配置(扩容和缩容配置)

3主3从redis集群配置 1、关闭防火墙启动docker后台服务 systemctl start docker2、新建6个docker容器redis实例 docker run -d --name redis-node-1 --net host --privilegedtrue -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly …

蓝凌OA sysUiComponent 任意文件上传漏洞复现

0x01 产品简介 蓝凌核心产品EKP平台定位为新一代数字化生态OA平台,数字化向纵深发展,正加速构建产业互联网,对企业协作能力提出更高要求,蓝凌新一代生态型OA平台能够支撑办公数字化、管理智能化、应用平台化、组织生态化&#xff…

论文排版一步搞定之图表题注——(图标自动编号,引用题注)

同学们在撰写研究生毕业大论文时,一定会进行章节的多次调整,不到最后一刻很难定稿。此时,一幅插图或表格位置的变化可能会导致此章内大部分插图或表格编号的变化,插图和表格编号的改变同样会使得前文的引用发生变化。牵一发而动全…

如何在Docker部署Draw.io绘图工具并远程访问

文章目录 前言1. 使用Docker本地部署Drawio2. 安装cpolar内网穿透工具3. 配置Draw.io公网访问地址4. 公网远程访问Draw.io 前言 提到流程图,大家第一时间可能会想到Visio,不可否认,VIsio确实是功能强大,但是软件为收费&#xff0…

Tomcat web.xml文件中的mime-mapping

在Tomcat安装目录的conf/web.xml文件中&#xff0c;定义了大量的<mime-mapping>元素&#xff0c;例如&#xff1a; 其中<extension>指定了文件的扩展名&#xff0c;<mime-type>指定了mime类型&#xff0c;放在<mime-mapping>元素中&#xff0c;就是将…

某60工业互联网安全测试技术学习记录

系列文章目录 文章目录 系列文章目录前言工业互联网安全测试技术安全工具分类常用安全工具介绍 主机安全测试5.1 主机安全测试概览5.2 通用主机安全测试技术主机信息扫描 5.3 Linux主机安全测试5.4 Android 安全测试5.5 Windows主机安全测试5.6 UNIX 主机安全测试 工业渗透测试…

基于单片机的指纹密码锁(论文+源码)

1.系统设计 基于单片机的指纹锁控制系统设计的整体框图如图2.1所示&#xff0c;主控制模块选用单片机STC89C52单片机&#xff0c;同时还包括AT24C02存储电路&#xff0c;指纹模块&#xff0c;LCD12864液晶&#xff0c;继电器&#xff0c;矩阵键盘等硬件电路。其中指纹模块和矩…

分布式事务 - seata安装

分布式事务 - seata 一、本地事务与分布式事务 1.1、本地事务 本地事务&#xff0c;也就是传统的单机事务。在传统数据库事务中&#xff0c;必须要满足四个原则&#xff08;ACID&#xff09;。 1.2、分布式事务 分布式事务&#xff0c;就是指不是在单个服务或单个数据库架构…

【LeetCode刷题-滑动窗口】--567.字符串的排列

567.字符串的排列 方法&#xff1a;滑动窗口 由于排列不会改变字符串中每个字符的个数&#xff0c;所以只有当两个字符串每个字符的个数均相等时&#xff0c;才是另一个字符串的排列 根据这一性质&#xff0c;记s1的长度为n&#xff0c;遍历s2中的每个长度为n的子串&#xff…

JVM虚拟机:垃圾回收器ZGC和Shenandoah算法

随着计算机技术的不断发展,内存管理成为了一个重要的话题。垃圾回收是一种自动内存管理技术,它可以自动地回收不再使用的内存,从而减少内存泄漏和程序崩溃的风险。在Java等高级编程语言中,垃圾回收器是必不可少的组件。近年来,ZGC和Shenandoah算法作为新一代的垃圾回收器,…

flutter跨端开发for Web、Windows QA (持续补充中)

flutter跨端开发for Web、Windows Q&A Q1 开发环境运行web 解决跨域问题 问题描述 : 常见于本地调试项目 本地项目 10.125.10 如图所示 请求项目接口 解决方案&#xff1a; 开发环境运行web 解决跨域问题 flutter run -d chrome --web-browser-flag "--disable-web-s…

HDRP图形入门:RTHandle未知问题

正好电脑看奥本海默&#xff0c;全程尿点十足&#xff0c;就一边看一边把之前整合HDRP遇到的问题说一下。 那就是RTHandle的未知问题&#xff0c;这是官方对RTHandle的说明&#xff1a; unity RTHandle 源代码如下&#xff1a; using System.Collections.Ge…

react+video.js h5自定义视频暂停图标

目录 参考网址 效果图&#xff0c;暂停时显示暂停图标&#xff0c;播放时隐藏暂停图标 代码说明&#xff0c;代码传入url后&#xff0c;可直接复制使用 VideoPausedIcon.ts 组件 VideoCom.tsx Video.module.less 参考网址 在Video.js播放器中定制自己的组件 - acgtofe 效…

【vue2】前端如何播放rtsp 视频流,拿到rtsp视频流地址如何处理,海康视频rtsp h264 如何播放

文章目录 测试以vue2 为例新建 webrtcstreamer.js下载webrtc-streamervideo.vue页面中调用 最近在写vue2 项目其中有个需求是实时播放摄像头的视频&#xff0c;摄像头是 海康的设备&#xff0c;搞了很长时间终于监控视频出来了&#xff0c;记录一下&#xff0c;放置下次遇到。…

《QT从基础到进阶·三十》QVariant的基础用法

很多时候&#xff0c;需要几种不同的数据类型需要传递&#xff0c;如果用结构体&#xff0c;又不大方便&#xff0c;容器保存的也只是一种数据类型&#xff0c;而QVariant则可以统统搞定。 QVariant可以保存QT和C常用类型&#xff0c;如果是自定义类型&#xff0c;比如struct,c…

克鲁斯卡尔算法(C++)

目录 克鲁斯卡尔算法 ​编辑代码&#xff1a; 结果&#xff1a; 克鲁斯卡尔算法 克鲁斯卡尔算法是一种用于求解最小生成树的算法。最小生成树是指一棵包含了所有节点的连通图&#xff0c;并且边的权值之和最小。 克鲁斯卡尔算法的基本思想是&#xff0c;每次选择图中最小的…

【漏洞复现】OneThink前台注入漏洞

漏洞描述 OneThink 是一个基于 PHP 的开源内容管理框架&#xff0c;旨在简化和加速Web应用程序的开发过程。它提供了一系列通用的模块和功能&#xff0c;使开发者能够更轻松地构建具有灵活性和可扩展性的内容管理系统&#xff08;CMS&#xff09;和其他Web应用。 免责声明 …

nodejs+vue教室管理系统的设计与实现-微信小程序-安卓-python-PHP-计算机毕业设计

用户 用户管理&#xff1a;查看&#xff0c;修改自己的个人信息 教室预约&#xff1a;可以预约今天明天的教室&#xff0c;按着时间段预约&#xff08;可多选&#xff09;&#xff0c;如果当前时间超过预约时间段不能预约该时间段的教室 预约教室的时候要有个预约用途&#xff…