SQL语言与MySQL数据库(六)

一、事务

1.事务的基本介绍

             概念:如果一个包含多个步骤的操作,被事务管理,那么这些操作要么同时成功,要么同时失败。

             操作:

                      开启事务 start transaction;

                      回滚 rollback;

                      提交 commit。

  案例:

-- 事务管理

START TRANSACTION;

UPDATE account SET balance=balance-500 WHERE NAME='zhangsan';

-- 出错了

UPDATE account SET balance=balance+500 WHERE NAME='lisi';

COMMIT;

ROLLBACK;

          MySQL数据库中事务默认自动提交

          事务提交的两种方式:

                自动提交:一条DML(增删改)语句会自动提交一次事务

                手动提交:需要先开启事务,再提交;Oracle数据库是手动提交事务

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

                查看: select @@autocommit; -- 1自动提交 0手动提交

                修改:set @@autocommit=0;

2.事务的四大特征

               · 原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败

               · 持久性:当事务提交或回滚后,数据库会持久化的保存数据

               · 隔离性:多个事务之间,相互独立

               · 一致性:当事务操作前后,数据的总量保持一致

3.事务的隔离级别

              概念:多个事务之间是隔离的、相互独立的。但是如果多个事务操作同一批数据,则就会引发一些问题,设置不同的隔离级别就可以解决这些问题。

              存在问题:

                      · 脏读:一个事务,读取到另一个事务中没有提交的数据

                      · 不可重复读(虚读):在同一个事务中,两次读到不同的数据

                      · 幻读:一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改

               隔离级别:

                       read uncommitted:读未提交 产生问题:脏读、不可重复读、幻读

                       read committed:读已提交(Oracle) 产生问题:不可重复读、幻读

                       repeatable read:可重复读(MySQL默认) 产生问题:幻读

                       serializable:串行化 可解决所有问题

             注意:隔离级别从小到大安全性越来越高,但效率越来越低

             修改数据库隔离级别:

                    查询隔离级别  select @@tx_isolation; 新版本MySQL SELECT @@transaction_isolation;

                    设置隔离级别(设置后刷新数据库)  set global transaction isolation level 隔离级别字符串;

案例:转账操作(事务管理)

START TRANSACTION;     -- 开启事务

UPDATE account SET balance=balance-500 WHERE NAME='zhangsan';

UPDATE account SET balance=balance+500 WHERE NAME='lisi';

COMMIT;                 -- 提交事务

ROLLBACK;               -- 回滚 

二、用户管理和权限管理

DCL:管理用户,授权

 1.管理用户

    查询用户:

-- 切换到mysql数据库

use mysql;

-- 查询user表

Select * from user;

   添加用户:

create user ‘用户名’@’主机名’ identified by ‘密码’;

CREATE USER 'rootdemo'@'%' IDENTIFIED BY '123456';

--  %表示可以在任意主机使用用户登录数据库

 删除用户 :

drop user ‘用户名’@’主机名’ ;

  修改用户密码:

use mysql;

update user set password = password(‘新密码’) where user=’用户名’;

update user set password = password(‘12345’) where user=’root’;

set password for ‘用户名’@’主机名’=password(‘新密码’);

set password for ‘root’@’localhost’=password(‘987’); 

忘记root用户密码

       1.管理员运行cmd -->执行net stop mysql 停止mysql服务

       2.使用无验证方式启动mysql服务 -->mysql --skip-grant-tables;

       3.打开新的cmd -->mysql; 回车,无验证登录成功

             Use mysql;

             update user set password = password(‘新密码’) where user=’用户名’;

       4.关闭两个窗口

       5.打开任务管理器,手动结束mysqld.exe的进程

       6.启动mysql服务 net start mysql

       7.使用新密码登录

 

2.授权

查询权限

SHOW GRANTS FOR '用户名'@'主机名';

SHOW GRANTS FOR 'root'@'localhost';

授予权限

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

GRANT SELECT,DELETE,UPDATE ON demo1.account TO 'rootdemo'@'%';

GRANT ALL ON *.* TO 'rootdemo'@'%';   -- 通配,授予root用户的权限

撤销权限

REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

REVOKE SELECT,DELETE ON demo1.account FROM  'rootdemo'@'%';

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值