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)操作时,该列的值 ...
随机推荐
- 复原docker中容器的启动命令
复原 docker 容器的启动命令 前言 查看 docker 容器的启动命令 参考 复原 docker 容器的启动命令 前言 不规范的操作,在启动 docker 容器,没有留命令脚本,或者没有使用 d ...
- Elasticsearch中的分页查询限制和近似去重统计
Elasticsearch 前言 深度分页的问题 如何解决 修改默认值 使用search_after方法 scroll 滚动搜索 es中的近似聚合 总结 Elasticsearch 前言 最近工作中用 ...
- el-select添加全部选项
/**给返回的搜索条件插入全部**/ global.addAll = function (list) { let addAllList = list addAllList.unshift({label ...
- Github最简单上传教程:真正的两分钟就可以学会! guitar
相关链接: 码云(gitee)配置SSH密钥 码云gitee创建仓库并用git上传文件 git 上传错误This oplation equires one of the flowi vrsionsot ...
- maven打包报错
* 系统:macOS* 开发工具:Idea* 问题描述:在idea中执行mvn clean install时报No compiler is provided in this environment. ...
- 好书推荐之《码出高效》、《阿里巴巴JAVA开发手册》
好评如潮 <阿里巴巴Java开发手册> 简介 <阿里巴巴Java开发手册>的愿景是码出高效,码出质量.它结合作者的开发经验和架构历程,提炼阿里巴巴集团技术团队的集体编程经验和软 ...
- 计网学习笔记四 Bridge && Switch
在前面的学习中,我们学习了MAC和LAN.在一个LAN里可以通信是很不错的,我们可以用一些东西让它变得更加不错!那就是我们接下来学习的网桥和交换机,其中包括了一点802.1D机制. Bridge 网桥 ...
- NC20259 [SCOI2007]降雨量
题目链接 题目 题目描述 我们常常会说这样的话:"X年是自Y年以来降雨量最多的".它的含义是X年的降雨量不超过Y年,且对于任意 Y<Z<X,Z年的降雨量严格小于X年. ...
- Python 中isinstance的用法
isinstance()函数用来判断一个对象是否是一个已知的类型.isinstance(object, classinfo) 类似 type().isinstance() 与 type() 区别: t ...
- Spring Boot 加载外部配置文件
Spring Boot 允许你从外部加载配置,这样的话,就可以在不同的环境中使用相同的代码.支持的外部配置源包括:Java属性文件.YAML文件.环境变量.命令行参数. 用@Value注解可以将属性值 ...