1.事务的基本介绍:
概念:如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败
案例:张三向李四转账
SQL语句:
-- 0.开始事务 START TRANSACTION; -- 张三账户 -500 UPDATE bank SET money = money - 500 WHERE id = '1'; -- 李四账户 +500 update bank SET money = money + 500 WHERE id = '2' -- 出错了 -- 发现没有问题,提交事务 commit; -- 发现出问题了,回滚事务 rollback;
MySQL数据库中事务默认自动提交
1、自动提交:mysql就是自动提交的
一条DML(增删改)语句会自动提交一次事务
2、手动提交:Oracle 数据库默认是手动提交事务
需要先开启事务,再提交
修改事务的默认提交方式:
查看事务的默认提交方式:SELECT @@autocommit; -- 1 代表自动提交 0 代表手动提交
修改默认提交方式:set @@autocommit = 0;
操作:1、开启事务:start transaction;
2、回滚:rollback;
3、提交:commit;
事务的四大特征:
原子性:
持久性:
一致性:
隔离性:
事务的隔离级别(了解)
SQL分类:
DDL:操作数据库和表
DML:增删改表中的数据
DQL:查询表中的数据
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服务(需要管理员运行该cmd)
2、使用无验证方式启动mysql服务:mysqld --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数据库
2.查询user表
%:通配符%:表示可以在任意主机使用用户登录数据库
2 授权
1、关闭自动提交
2、遇到异常就回滚
3、没有异常,提交事务
例子:张三香李四转500元
Connection con = DBUtil.getConnection();//获得数据库的连接 try { con.setAutoCommit(false);//关闭自动提交 Statement stmt = con.createStatement();//创建命令 stmt.executeUpdate("UPDATE bank set money = money - 500 WHERE id = 1");//账户-500 int i = 5/0;//除数不能为0,发生异常 stmt.executeUpdate("UPDATE bank set money = money + 500 WHERE id = 2");//账户+500 con.commit();//提交事务 } catch (SQLException e) { e.printStackTrace(); }catch (Exception e){ try { con.rollback();//事务回滚 } catch (SQLException ee) { System.out.println("事务回滚时发生异常"); ee.printStackTrace(); } e.printStackTrace(); }