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;
作者:Esofar
出处:https://www.cnblogs.com/deyo/p/13303771.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
本文来自博客园,作者:自律即自由-,转载请注明原文链接:https://www.cnblogs.com/deyo/p/13303771.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器