CREATE TABLE account(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10),
balance DOUBLE
);
INSERT INTO account(NAME,balance) VALUES ('zhangsan',1000),('lisi',1000);
SELECT * FROM account;
UPDATE account SET balance=1000;
-- 0. 开启事务
START TRANSACTION;
-- 张三给李四转账500元
-- 1.张三账户-500
UPDATE account SET balance=balance-500 WHERE NAME='zhangsan';
-- 2.李四账户+500
-- 出错了
UPDATE account SET balance=balance+500 WHERE NAME='lisi';
-- 发现没有问题,提交事务
COMMIT;
-- 发现出现问题,回滚事务
ROLLBACK;
/*
事务:如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败
mysql数据库中事务默认自动提交
事务提交方式:
自动提交:mysql
手动提交:先开启事务,在提交事务.oracle数据库
事务的四大特征:
原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败
持久性:当事务提交或回滚后,数据库会发生持久化的保存数据
隔离性:多个事务之间相互独立
一致性:事务操作前后事务总量不变
事务的隔离级别(了解):多个事务之间隔离的,相互独立的。如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别可以解决
存在问题:
脏读:一个事务,读取到另一个事务中没有提交的数据
不可重复读:在同一个事务中,两次读到的数据不一样
幻读:一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改
隔离级别:
read uncommitted:读未提交
产生问题:脏读,不可重复读,幻读
read committed:读已提交
产生问题:不可重复读,幻读
repeatable read:可重复读(mysql默认)
产生问题:幻读
serializable:串行化
可以解决所有问题
从小到大安全性越来越高,效率越来越低
数据库查询隔离级别
select @@tx_isolation;
数据库设置隔离级别
set global transaction isolation level 级别字符串
*/
/*
DCL:管理用户
*/
select * from user;
-- 创建用户
create user '用户名'@'主机名' identified by '密码';
CREATE USER 'zhangsan'@'localhost' IDENTIFIED BY '123';
CREATE USER 'lisi'@'%' IDENTIFIED BY '123';
-- 删除用户
drop user '用户名'@'主机名';
DROP USER 'zhangsan'@'localhost';
-- 修改密码
update user set Password = Password('新密码') where user = '用户名';
UPDATE USER SET PASSWORD = PASSWORD('abc') WHERE USER = 'lisi';
set Password for '用户名'@'主机名' = Password('新密码');
SET PASSWORD FOR 'zhangsan'@'localhost' = PASSWORD('123456');
/*
mysql 忘记密码
管理员运行cmd-->net stop mysql
使用无验证方式启动mysql服务
mysqld --skip-grant-tables
打开新的cmd窗口,直接输入mysql命令,就可以登录成功
use mysql;
UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
关闭两个窗口
打开任务管理器,手动结束mysqld.exe进程
启动mysql服务
使用新密码登录
权限管理:
查询权限
授予权限
*/
-- 查询权限
show grants for '用户名'@'主机名';
SHOW GRANTS FOR 'lisi'@'%';
-- 授予权限
MySQL学习(三)SQLYOG之db3
最新推荐文章于 2024-07-30 16:51:22 发布