MySQL数据库(6) 事务和索引

1.什么是事务

  要么都成功,要么都失败(银行转账 A给B 转账)

  将一组SQL放在一个批次中去执行

  事务原则:ACID 原则 原子性,一致性,隔离性,持久性       (脏读,幻读)

    • 原子性:要么都成功,要么都失败

    • 一致性:事务前后的数据完整性要保持一致    1000元

    • 持久性(事务提交):事务一旦提交则不可逆,被持久化到数据库中!

    • 隔离性:事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,事务之间要相互隔离。 

   -- mysql 是默认开启事务自动提交的
    SET autocommit =0 /*关闭*/
   SET autocommit =1 /*开启(默认)*/

   --1. 手动处理事务
   SET autocommit =0 -- 关闭自动条件

   --2. 事务开启
   START TRANSACTION -- 标记一个事务的开始,从这个之后的sql 都在同一个事务内

   --3. 提交(成功
   COMMIT
   --3. 回滚(失败) :回到的原来的样子(失败!)
   ROLLBACK

   --4. 事务结束 
   SET autocommit=1 -- 开启自动提交

CREATE DATABASE shop CHARACTER SET utf8 COLLATE utf8_general_ci 

CREATE TABLE `account`(
    
    id INT(3) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(30) NOT NULL,
    money DECIMAL(9,2) NOT NULL,
    PRIMARY KEY(id)
)ENGINE=INNODB DEFAULT CHARSET=utf8
INSERT INTO account(`name`,`money`)
VALUES ('A',2000.00),('B',10000.00)
-- 模拟转账:事务
SET autocommit =0; -- 关闭自动提交
START TRANSACTION -- 开启一个事务

UPDATE account SET money=money -500  WHERE `name`='A';
UPDATE account SET money=money +500  WHERE `name`='B';

COMMIT; -- 提交事务,就被持久化了
ROLLBACK; -- 回滚

SET autocommit=1; -- 恢复默认值

 2.索引

  MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。 0.5s 0.00001s

  一个表中,主键索引只能有一个,唯一索引可以有多个

    • 主键索引(PRIMARY KEY):唯一的标识,主键不可重复,只能有一个列作为主键

    • 唯一索引(UNIQUE KEY):避免重复的列出现,唯一索引可以重复,多个列都可以标识位唯一索引

    • 常规索引(KEY/INDEX):默认的,index。key关键字来设置

    • 全文索引(FullText):在特定的数据库引擎下才有,MyISAM,快速定位数据

  索引原则

 

 

posted @ 2022-03-02 21:26  十三加油哦  阅读(55)  评论(0)    收藏  举报