ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL 事务

2021-08-12 15:31:59  阅读:145  来源: 互联网

标签:事务 -- money MySQL 提交 mysql 500


事务

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:管理用户,授权

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 授权

事务之JAVA代码的写法:

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();
        }

标签:事务,--,money,MySQL,提交,mysql,500
来源: https://www.cnblogs.com/yong-w/p/15132946.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有