MySql教程

MySQL—事务

本文主要是介绍MySQL—事务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

事务

一、事务的基本介绍

  • 概念:如果一个包含多个步骤的业务操作被事务管理,那么这些操作要么同时成功,要么同时失败
  • 操作:
    1. 开启事务:start transaction
    2. 回滚:rollback
    3. 提交:commit
    4. MySQL数据库中事务默认自动提交
      • 自动提交
        1. mysql是自动提交
        2. 一条DML(增删改)语句会自动提交一次事务
      • 手动提交
        1. Oracle数据库默认是手动提交
        2. 需要先开启事务再提交
      • 修改事务的默认提交方式
        1. 查看事务的默认提交方式:select @@autocommit; -- 1代表自动提交,0代表手动提交
        2. 修改默认方式:set @@autocommit=0;

二、事务的四大特征

  1. 原子性:事务是不可分割的最小单位,要么同时成功,要么同时失败
  2. 持久性:当事务提交或回滚后,数据库会持久化的保存数据
  3. 隔离性:多个事务之间相互独立
  4. 一致性:事务操作前后,数据总量不变

三、事务的隔离级别(了解)

  • 概念:多个事务之间是隔离的,相互独立的。但是如果多个事务操作同一批数据就会引发一些问题,设置不同的隔离级别就能解决这些问题
  • 存在问题:
    1. 脏读:一个事务读取到另一个事务中没有提交的数据
    2. 不可重复读(虚读):在同一个事务中,两次读取到的数据不一样
    3. 幻读:一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自动的修改
  • 隔离级别:
    1. read uncommitted:读未提交
      • 产生的问题:脏读、不可重复读、幻读
    2. read committed:读已提交
      • 产生的问题:不可重复读、幻读
    3. repeatable read:可重复读
      • 产生的问题:幻读
    4. serializable: 串行化
      • 可以解决所有的问题
  • 隔离级别从小到大安全性越来越高,但是效率越来越低
  • 数据库查询隔离级别:select @@tx_isolation;
  • 数据库设置隔离级别:set global transaction isolation level 隔离级别;

四、DCL

  • SQL分类
    1. DDL:操作数据库和表
    2. DML:增删改表中数据
    3. DQL:查询表中数据
    4. DCL:管理用户,授权
  • DBA:数据库管理员
  • DCL:管理用户,授权
    1. 管理用户
      • 添加用户:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
      • 删除用户:DROP USER '用户名'@'主机名';
      • 修改用户密码
        • UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
        • SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');
        • mysql中忘记了root用户的密码
          1. cmd使用管理员运行–>net stop mysql 停止mysql服务
          2. 使用无验证的方式启动mysql服务:mysql --skip-grant-tables
          3. 打开新的cmd窗口,直接输入mysql命令,敲回车,就可以登录成功
          4. use mysql;
          5. update user set password = password('新密码') where user = 'root';
          6. 关闭两个窗口
          7. 打开任务管理器,手动结束mysqld.exe的进程
          8. 启动mysql服务
          9. 使用新密码登录
      • 查询用户
        1. 切换到mysql数据库:USE mysql;
        2. 查询user表:SELECT * FROM USER;
        3. 通配符:%表示可以在任意主机使用用户登录
    2. 权限管理
      • 查询权限:SHOW GRANTS FOR '用户名'@'主机名';
      • 授予权限:GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
        GRANT ALL ON *.* TO '用户名'@'主机名';
      • 撤销权限:REVOKE 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
这篇关于MySQL—事务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!