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

目录

自增长

索引

索引的原理:

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事务隔离级别

介绍

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

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

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

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

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

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

数据库中的四种隔离级别

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch 安装(单机版本)

文章目录 ElasticSearch 安装(单机版本)环境配置下载安装包调整系统参数安装启动并验证 ElasticSearch 安装(单机版本) 此文档演示 ElasticSearch 的单机版本在 CentOS 7 环境下的安装方式以及相关的配置。 环境配置 Linux 主机一…

Android 14 Beta 1

Android 14的第一个 Beta 版,围绕隐私、安全、性能、开发人员生产力和用户定制等核心主题构建,同时继续改进平板电脑、可折叠设备等大屏幕设备的体验。我们一直在完善 Android 14 的功能和稳定性方面取得稳步进展,现在是时候向开发者和早期采…

C++基础(3)——类与对象

1.构造函数: 1.1 构造函数的引入: 在关于数据结构这一部分的文章中,创建了一个新的数据结构后,通常需要编写一个初始化函数来对这个数据结构进行一次初始化。在C的类中,如果存在函数,同样也需要对函数进行…

传递函数的推导和理解

传递函数的推导和理解 假设有一个线性系统,在一般情况下,它的激励 x ( t ) x(t) x(t)与响应 y ( t ) y(t) y(t)所满足的的关系,可用下列微分方程来表示: a n y ( n ) a n − 1 y ( n − 1 ) a n − 2 y ( n − 2 ) ⋯ a 1 y…

【重点文章】服务升级惨痛教训

文章目录 事故解析:避免方法涉及知识 以前怎么接触过大表,所以alter操作我都是一次性执行好几条的,这几条一下子干过去了   结果就是一直在转圈执行,因为alter产生的是表级排它锁,所以有关这几个表的查询更新操作全部处于阻塞…

CTF-栈溢出-基本ROP-【ret2shellcode】

文章目录 ret2shellcodeHTBCyberSanta 2021 sleigh思路exp ret2shellcode 控制程序去执行我们自己填充的代码。 条件: 我们填充的代码的位置具有可执行权限 HTBCyberSanta 2021 sleigh 检查保护 Has RWX segments提示有可读可写可执行的段 main函数 banner函数…

教师资格证的照片是什么底色?一键替换证件照背景色

现在在报考教师资格证时,我们提交个人资料信息都是在网络上进行的,最关键的一步就是要提交证件照,很多小伙伴还都不太情书教师资格证证件照要求,比如规定的证件照背景色是什么颜色,今天就围绕着这个问题给大家详细说明…

赶快来!程序员接单必须知道的六大注意事项!!!

花花世界迷人眼,增加实力多搞钱!对于咱程序员来说,搞钱的最好办法就是网上接单了,相信也有不少小伙伴已经在尝试了吧!但是如何正确的搞钱呢?其中的注意事项你真的了解吗? 本期就和小编一起来看…

使用nacos配置中心管理配置文件时,springcloud程序启动报错,无法找到对应的配置文件(加载到了错误的配置文件)

这里写目录标题 一、场景二、关键依赖三、报错信息四、排查1、bootstrap.yml配置2、查看Nacos配置中心3、重启后程序依旧报错,查看启动日志,发现Nacos加载到了错误的配置文件4、Debug查看源码,企图弄清楚使用错误应用名的原因5、找不到使用依…

DDR3 的相关设计规范(个人总结)

文章目录 阻抗控制布局布线电源处理时序要求 DDR3 的相关设计规范(个人总结) 阻抗控制 DDR3 要严格控制阻抗,单线 50ohm,差分 100ohm,差分一般为时钟、DQS。在走线过程中,尽量减小阻抗跳变的因素,比如:换层(无法避免…

CSS特效012:边框线条环绕流动效果

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧,主要包含CSS布局,CSS特效,CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点,CSS特效主要是一些动画示例,CSS花边是描述了一些CSS…

C++二分查找算法:规划兼职工作

题目 你打算利用空闲时间来做兼职工作赚些零花钱。 这里有 n 份兼职工作,每份工作预计从 startTime[i] 开始到 endTime[i] 结束,报酬为 profit[i]。 给你一份兼职工作表,包含开始时间 startTime,结束时间 endTime 和预计报酬 pro…

Vue3 生命周期

如下是Vue3的生命周期函数图: 一、Vue2生命周期和Vue3声明周期的区别 1. Vue2 中,只要创建Vue实例对象而不需要挂载就可以实现beforeCreate 和 created 生命周期函数。 Vue3中必须要将Vue实例对象挂载完成,所有的准备工作做完,…

V10 桌面版、服务器版系统加固

V10 桌面版、服务器版系统加固 一、 文档说明 本文档中涉及的加固方法主要包括:密码策略配置、防火墙规 则配置、禁用高风险服务等。 二、 V10 桌面版系统加固 2.1 密码策略配置 密码策略包括密码老化控制策略和密码复杂度策略。密码老化 控制策略需要配置/etc…

Git客户端(TortoiseGit)使用

参考文章: https://www.cnblogs.com/xuwenjin/p/8573603.html 【精选】使用TortoiseGit工具进行开发(连接远程仓库进行克隆、拉取、获取、提交、推送、新建/切换/合并分支、解决冲突)_tortoisegit连接远程仓库-CSDN博客 tortoise git 拉取…

二进制的形式在内存中绘制一个对象实例

一、引用类型实例的内存布局 从内存布局的角度来看,一个引用类型的实例由如下图所示的三部分组成:ObjHeader TypeHandle Fields。前置的ObjHeader用来缓存哈希值和同步状态,TypeHandle部分存储类型对应方法表(Method Table&…

2023.11.17 -hivesql调优,数据压缩,数据存储

目录 1.hive命令和参数配置 2.hive数据压缩 3.hive数据存储 0.原文件大小 18.1MB 1.textfile行存储格式, 压缩后size:18MB 2.行存储格式:squencefile ,压缩后大小8.89MB​ 3. 列存储格式 orc - ZILIB ,压缩后大小2.78MB 4.列存储格式 orc-snappy ,压缩后大小3.75MB 5…

设计模式-中介者模式-笔记

Medicator中介者模式 动机(Motivation) 在软件构建过程中,经常会出现多个对象相互关联交际的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。 …

简单回顾矩阵的相乘(点乘)230101

[[1 0 1][1 1 0]] [[3 0 0 3][2 2 1 3][1 3 1 1]] [[4. 3. 1. 4.][5. 2. 1. 6.]]乘以 c11 a11*b11 a12*b21 a13*b31 1*3 0*2 1*1 4 c12 a11*b12 a12*b22 a13*b32 1*0 0*2 1*3 3 c13a11*b13 a12*b23a13*b33 c14a11*b14 a12*b24a13*b34 c21a21*b11 a22*b21 a23*b…

【iDRAC】突破错误信息壁垒,利用iDRAC提高效率

序 面对旧服务器上的黄色警示灯,工作人员往往陷入困惑。更糟糕的是,如果该服务器转手多次,缺少root用户密码和IP地址,那么要访问服务器iDRAC就更困难了。但是出现问题的硬件蕴含着重要信息,为了解开这个谜团&#xff…