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 56 意外 57 update 表 set 郭襄的余额=1500 where 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 116 117 update 表 set 郭襄的余额=1500 where 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;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdfjs.html