mysql标识列和事务
1 #标识列
2 /*
3 又称为自增长列
4 含义:可以不用手动的插入值,系统提供默认的序列值
5
6
7 特点:
8 1、标识列必须和主键搭配吗?不一定,但要求是一个key
9 2、一个表可以有几个标识列?至多一个!
10 3、标识列的类型只能是数值型
11 4、标识列可以通过 SET auto_increment_increment=3;设置步长
12 可以通过 手动插入值,设置起始值
13
14
15 */
16
17 #一、创建表时设置标识列
18
19
20 DROP TABLE IF EXISTS tab_identity;
21 CREATE TABLE tab_identity(
22 id INT ,
23 NAME FLOAT UNIQUE AUTO_INCREMENT,
24 seat INT
25
26
27 );
28 TRUNCATE TABLE tab_identity;
29
30
31 INSERT INTO tab_identity(id,NAME) VALUES(NULL,'john');
32 INSERT INTO tab_identity(NAME) VALUES('lucy');
33 SELECT * FROM tab_identity;
34
35
36 SHOW VARIABLES LIKE '%auto_increment%';
37
38
39 SET auto_increment_increment=3;
40
41
42
43 #TCL
44 /*
45 Transaction Control Language 事务控制语言
46
47 事务:
48 一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。
49
50 案例 转账
51
52 张三丰 1000
53 郭襄 1000
54
55 update 表 set 张三丰的余额=500 where name='张三丰'
56 意外
57 update 表 set 郭襄的余额=1500 where name='郭襄'
58
59
60 事务的特性:
61 ACID
62 原子性:一个事务不可再分割,要么都执行要么都不执行
63 一致性:一个事务执行会使数据从一个一致状态切换到另外一个一致状态
64 隔离性:一个事务的执行不受其他事务的干扰
65 持久性:一个事务一旦提交,则会永久的改变数据库的数据.
66
67
68
69 事务的创建
70 隐式事务:事务没有明显的开启和结束的标记
71 比如insert、update、delete语句
72
73 delete from 表 where id =1;
74
75 显式事务:事务具有明显的开启和结束的标记
76 前提:必须先设置自动提交功能为禁用
77
78 set autocommit=0;
79
80 步骤1:开启事务
81 set autocommit=0;
82 start transaction;可选的
83 步骤2:编写事务中的sql语句(select insert update delete)
84 语句1;
85 语句2;
86 ...
87
88 步骤3:结束事务
89 commit;提交事务
90 rollback;回滚事务
91
92 savepoint 节点名;设置保存点
93
94
95
96 事务的隔离级别:
97 脏读 不可重复读 幻读
98 read uncommitted:√ √ √
99 read committed: × √ √
100 repeatable read: × × √
101 serializable × × ×
102
103
104 mysql中默认 第三个隔离级别 repeatable read
105 oracle中默认第二个隔离级别 read committed
106 查看隔离级别
107 select @@tx_isolation;
108 设置隔离级别
109 set session|global transaction isolation level 隔离级别;
110
111
112
113
114 开启事务的语句;
115 update 表 set 张三丰的余额=500 where name='张三丰'
116
117 update 表 set 郭襄的余额=1500 where name='郭襄'
118 结束事务的语句;
119
120
121
122 */
123
124 SHOW VARIABLES LIKE 'autocommit';
125 SHOW ENGINES;
126
127 #1.演示事务的使用步骤
128
129 #开启事务
130 SET autocommit=0;
131 START TRANSACTION;
132 #编写一组事务的语句
133 UPDATE account SET balance = 1000 WHERE username='张无忌';
134 UPDATE account SET balance = 1000 WHERE username='赵敏';
135
136 #结束事务
137 ROLLBACK;
138 #commit;
139
140 SELECT * FROM account;
141
142
143 #2.演示事务对于delete和truncate的处理的区别
144
145 SET autocommit=0;
146 START TRANSACTION;
147
148 DELETE FROM account;
149 ROLLBACK;
150
151
152
153 #3.演示savepoint 的使用
154 SET autocommit=0;
155 START TRANSACTION;
156 DELETE FROM account WHERE id=25;
157 SAVEPOINT a;#设置保存点
158 DELETE FROM account WHERE id=28;
159 ROLLBACK TO a;#回滚到保存点
160
161
162 SELECT * FROM account;
mysql标识列和事务的更多相关文章
- mysql - 标识列
#标识列 /* 又称为自增长列 含义:可以不用手动插入值,系统提供默认的序列值 特点: 1.表示列必须和主键搭配吗?不一定,但是要求是一个key 2.一个表中只能有一个标识列! 3.标识列的类型有限制 ...
- MySQL标识列(自增长列)
#标识列/*又称为自增长列含义:可以不用手动的插入值,系统提供默认的序列值 特点:1.标识列必须和主键搭配吗?不一定,但要求是一个key2.一个表可以有几个标识列?至多一个!3.标识列的类型只能是数值 ...
- (七)MySQL常见的数据类型、约束和标识列
一.MySQL常见数据类型 1.数值型: ①整型:tinyint.smllint.mediumint.int/integer.bigint 图源:尚硅谷李玉婷 案例1:关键表格teacher,分别添加 ...
- MySQL 避免使用字符串类型作为标识列
避免使用字符串类型作为标识列: 消耗空间. 比数字类型慢(MyISAM 中对字符串使用压缩索引,查询会慢). 对于 MD5().UUID() 生成的随机字符串,这些值会分布在很大的空间内,导致 ins ...
- MySQL数据库引擎、事务隔离级别、锁
MySQL数据库引擎.事务隔离级别.锁 数据库引擎InnoDB和MyISAM有什么区别 大体区别为: MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是性能 ...
- MySQL InnoDB存储引擎事务的ACID特性
1.前言 相信工作了一段时间的同学肯定都用过事务,也都听说过事务的4大特性ACID.ACID表示原子性.一致性.隔离性和持久性.一个很好的事务处理系统,必须具备这些标准特性: 原子性(Atomicit ...
- SQL Server解惑——标识列的限制和跳号现象
1:每个表只能创建一个标识列. 如下测试所示,如果表中有一个标识列,新增一个标识列就会遇到错误"Multiple identity columns specified for table ...
- 当 IDENTITY_INSERT 设置为 OFF 时,不能为表‘XXX’中的标识列插入显式值。
在创建事务复制时,很多时候不一定使用快照进行初始化,而是使用备份还原初始化.当对有标识列(即identity的自增列)的表进行复制的时候,使用备份还原初始化搭建起来的复制常常就会报错,即:当 IDEN ...
- 【原创】互联网项目中mysql应该选什么事务隔离级别
摘要 企业千万家,靠谱没几家. 社招选错家,亲人两行泪. 祝大家金三银四跳槽顺利! 引言 开始我们的内容,相信大家一定遇到过下面的一个面试场景 面试官:"讲讲mysql有几个事务隔离级别?& ...
- 关于SQL Server数据库中的标识列
一.标识列的定义以及特点 SQL Server中的标识列又称标识符列,习惯上又叫自增列. 该种列具有以下三种特点: 1.列的数据类型为不带小数的数值类型 2.在进行插入(Insert)操作时,该列的值 ...
随机推荐
- 从零开始配置 vim(18)——终端模式
在进入下一个配置之前,先了解一下如何在 neovim 中使用它内置的终端. 我们之前说过在命令模式中可以使用 !来执行shell命令.但是终归来说,执行和使用上不是那么方便,特别是混合使用 vim 命 ...
- 大语言模型的预训练[3]之Prompt Learning:Prompt Engineering、Answer engineering、Multi-prompt learning、Training strategy详解
大语言模型的预训练[3]之Prompt Learning:Prompt Engineering.Answer engineering.Multi-prompt learning.Training st ...
- conda创建虚拟环境后文件夹中只有conda-meta文件夹,无法将环境添加到IDE中
1.问题描述:anaconda的envs的其中一个环境目录下,没有python.exe文件,只有conda-meta和scripts 平时创建虚拟环境都是: conda create -n test ...
- 物色到的 c# 模拟 http post get 请求 做下笔记
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...
- Windows 恶意软件数量是 Mac 的 5000 倍,是 Linux 的 36 倍
AV-TEST 是一个独立的测试机构,他们会根据各种标准对操作系统的防病毒和安全软件进行评估和评级,并将测试结果免费提供给用户,帮助用户选择最适合自己的产品.近日,AV-TEST 联合旗下的威胁情报平 ...
- 教你用JavaScript获取大转盘
案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个大转盘.当你难以抉择的时候不妨用这个案例来帮你做选择.通过编程实战我们可以学到按钮的 ...
- 使用XAG配置GoldenGate在RAC集群环境中的高可用
背景:本文是根据实际客户测试需求整理,因为客户OGG所在环境只有GI集群,数据库部署在其他位置,所以会有一些差异,但核心思路一致,已完全测试通过,整理出来供大家参考. 1.前期准备 2.创建ACFS文 ...
- Oracle ADG + Keepalived 切换演练
客户的一套生产环境采用的架构是Oracle ADG + Keepalived,近期需要进行切换演练,要求我这边保障.ADG本身切换倒没啥可说的,但引入keepalived软件,就需要提前研究下这个架构 ...
- yapi 个人空间 这个分组的问题
总结:yapi个人空间分组的问题,我暂时不用理睬 他自己自由,但是 不允许他 创建非个人空间的分组.这点留意 避免不统一.所有的分组都必须我自己来创建,不允许他们私自创建.
- [JVM] JVM的类加载机制
JVM的类加载 首先我们来看下Java虚拟机的类加载过程: 如上图. 当JVM需要用到某个类的时候,虚拟机会加载它的 .class 文件.加载了相关的字节码信息之后,会常见对应的 Class 对象,这 ...