事务&DCL

一、事务

1. 事务的基本介绍
  • 概念:如果一个包含多个步骤的业务操作,被事务管理,要么同时成功要么同时失败。

  • 操作
    开启事务:start transaction;
    回滚 :rollback;
    提交:commit;

  • MySQL数据库种事务摩恩自动提交
    事务提交的两种方式:
    自动提交:

    • mysql就是自动提交的
    • 一条dml语句会自动提交一次事务

    手动提交:

    • 需要先开启事务,在提交

    查看事务的默认提交方式:

    • select @@autocommit;
    • 1代表自动提交,0代表手动提交

    修改事务的默认提交方式:

    • set @@autocommit=0;
2. 事务的四大特征
  • 原子性:是不可分割的最小操作单位,要么同时成功要么同时失败
  • 持久性:当事务提交或回滚后,数据库会持久化的保存数据
  • 隔离性;多个事务之间,相互独立
  • 一致性:事务操作前后数据总量不变
3. 事务的隔离级别
  • 概念:多个事务之间是隔离的,相互独立的。但是多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题
  • 存在问题
    • 脏读:一个事务读取到另一个事务中没有提交的数据
    • 不可重复读(虚读):在同一个事务中,两次读取到的数据不一样
    • 幻读:一个事物操作数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改
  • 隔离级别
    • read uncommitted:读未提交
      产生的问题:脏读、不可重复读、幻读
    • read committed:读已提交
      产生问题:不可重复读、幻读
    • repeatable read:可重复度 (mysql默认)
      产生问题:幻读
    • serializable:串行化
      可以解决所有问题
  • 注意:隔离级别从小到大安全性越来越高,但是效率越来越低
  • 数据路查询隔离级别:select @@tx_isolation;
  • 数据库设置隔离级别:set global transaction isolation level 级别字符串;

二、DCL:管理用户,授权

DBA:数据库管理员
  • 管理用户
添加用户:
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服务(需要管理员运行cmd)
2. 使用无验证方式启动mysql服务:mysql --skip-grant-tables
3. 打开新的cmd窗口,直接输入mysql命令,敲回车。就可以登陆成功
4. use mysql;
5. update user set password=password('你的新密码') where user ='root';
6. 关闭两个窗口
7. 打开任务管理器,手动结束mysql.exe的进程
8. 启动mysql服务
9. 使用新密码登录
  • 查询用户
    切换到MySQL数据库 use myql;
    查询user表 select * from user;
    通配符:%表示可以在任意主机使用用户登录数据库
  • 权限管理
    查询权限
    show grants for ‘用户名’@‘主机名’;
    授予权限
    grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’;
    撤销权限
    revoke 权限列表 on 数据库名.表名 from ‘用户名’@‘主机名’;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值