• 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;
  • 相关阅读:
    python中unicode、utf8、gbk等编码问题
    git常用操作
    python List&Set&Dict交集、并集、差集
    VIM的高级使用
    Logger级别和输出的地方
    Eclipse+pydev 常用快捷键
    架构相关领域的学习材料(转)
    深入浅出之正则表达式(一)
    深入浅出之正则表达式(二)
    软件project总结
  • 原文地址:https://www.cnblogs.com/deyo/p/13303771.html
Copyright © 2020-2023  润新知