2019.10.15 MySQL 事务介绍及操作演示

一、数据库事务的概念

事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么不都执行。

事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小的控制单元。

事务适用于多用户同时操作的数据库系统的场景,如银行、保险公司及证券交易系统等等。通过事务的完整性以保证数据的一致性。

二、事务的ACID特点
事务具有四个属性:ACID
原子性(Atomicity)
一致性(Consistency)
隔高性(Isolation)
持久性(Durability)
1、原子性
事务是一个完整的操作,事务的各元素是不可分的(原子的),事务的所有元素必须作为一个整体提交或回滚。如果事务中的任何元素失败,则整个事务将失败。

2、一致性
当事务完成时,数据必须处于一致状态:在事务开始之前,数据库汇总存储的数据处于一致状态;在正在进行的事务中,数据可能处于不一致的状态;当事务完成时,数据必须再次回到已知的一致状态。

3、隔离性
对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应该以任何方式依赖于或影响其他事务。修改数据的事务可以在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据。

4、持久性
事务的持久性指不管系统是否发生了故障,事务处理的结果都是永久的。一旦事务被提交,事务的效果会被永久地保留在数据库中。

三、事务的操作

默认情况下MySQL的事物是自动提交的,当SQL语句 提交时事物便自动提交。

手动对事物进行控制的方法:

1、事物处理命令控制

事物处理命令控制事物:

begin:开始一个事物

commit:提交一个事物

rollback:回滚一个事物(撤销)

事物的操作必须基于Innodb存储引擎

操作:

[[email protected] ~]# mysql -uroot -p123
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 37
Server version: 5.5.41-MariaDB-log MariaDB Server

Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| auth |
| client |
| crushlinux |
| lty |
| mysql |
| performance_schema |
| test |
+--------------------+
8 rows in set (0.00 sec)

MariaDB [(none)]> use auth
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [auth]> show tables;
+----------------+
| Tables_in_auth |
+----------------+
| user |
+----------------+
1 row in set (0.00 sec)

MariaDB [auth]> drop table user;
Query OK, 0 rows affected (0.01 sec)

MariaDB [auth]> create table users(user_name char(18) not null,user_passwd char(50) default‘‘,primary key (user_name));
Query OK, 0 rows affected (0.02 sec)

MariaDB [auth]> alter table auth.users engine=innodb;

Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

begin实例:

MariaDB [auth]> begin ;                          //事物开始

Query OK, 0 rows affected (0.00 sec)

MariaDB [auth]> insert into users values(‘lisi‘,password(‘123‘));
Query OK, 1 row affected (0.01 sec)

MariaDB [auth]> insert into users values(‘wangwu‘,password(‘321‘));
Query OK, 1 row affected (0. 00 sec)

MariaDB [auth]> commit;                           //事物提交
Query OK, 0 rows affected (0.00 sec)

MariaDB [auth]> select * from users;
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| lisi | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| wangwu | *7297C3E22DEB91303FC493303A8158AD4231F486 |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

里面存储的数据是永久的事物

rollback实例:

MariaDB [auth]> begin;
Query OK, 0 rows affected (0.00 sec)

MariaDB [auth]> update users set user_passwd=password(‘‘) where user_name=‘lisi‘;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

MariaDB [auth]> select * from users;
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| lisi | |
| wangwu | *7297C3E22DEB91303FC493303A8158AD4231F486 |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

MariaDB [auth]> rollback;                            //事物回滚(撤销)从begin开始的所有的命令都将被撤销
Query OK, 0 rows affected (0.01 sec)

MariaDB [auth]> select * from users;
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| lisi | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| wangwu | *7297C3E22DEB91303FC493303A8158AD4231F486 |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

2、使用set设置事务处理方式

set autocommit=0:禁止自动提交

set autocommit=1:开启自动提交

MariaDB [auth]> set autocommit=0;                               //禁止自动提交
Query OK, 0 rows affected (0.00 sec)

MariaDB [auth]> insert into users values(‘lty‘,password(‘123‘));
Query OK, 1 row affected (0.00 sec)

MariaDB [auth]> insert into users values(‘jhc‘,password(‘456‘));
Query OK, 1 row affected (0.00 sec)

MariaDB [auth]> commit;
Query OK, 0 rows affected (0.01 sec)

MariaDB [auth]> set autocommit=1;                             //开启自动提交
Query OK, 0 rows affected (0.00 sec)

不能进行回滚,一条SQL语句就会提交一次

原文地址:https://www.cnblogs.com/990624lty-jhc/p/11675304.html

时间: 2024-10-03 23:05:28

2019.10.15 MySQL 事务介绍及操作演示的相关文章

Ubutun 14.10下mysql 主从同步详细操作

一.相关介绍 1 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库:主数据库一般是实时的业务数据库,从数据库的作用和使用场合一般有几个: 一是作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作: 二是可在从数据库作备份.数据统计等工作,这样不影响主数据库的性能:2 读写分离,是指读与写分别使用不同的数据库,当然一般是在不同服务器上的:在同一台服务器上的读写环境,估计只是用来测试吧. 一般读写的数据库环境配置为,一个写入的数据库,一个或多个读的数据库,各个数据库分别

mysql事务介绍

什么是事务 一组sql语句操作单元组内所有sql完成一个业务如果整组成功,意味着组内的全部的sql成功如果其中任何一个失败,意味着整个操作失败 数据回到操作前的状态 事务的特点 1.多条sql语句组成.2.原子性3.一致性4.隔离性5.持久性 事务常用的语句 set autocommit=0 #关闭自动提交的功能 start transaction commitrollback savepoint p1 #保存一个恢复点

(10)MySQL触发器(同时操作两张表)

什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合.触发器的这种特性可以协助应用在数据库端确保数据的完整性. 举个例子,比如你现在有两个表[用户表]和[日志表],当一个用户被创建的时候,就需要在日志表中插入创建的log日志,如果在不使用触发器的情况下,你需要编写程序语言逻辑才能实现,但是如果你定义了一个触发器,触发器的作用就是当你在用户表中插入一条数据的之后帮你在日志表中插入一条日志信息.当然触发器并不是只能进行插入操作,还能执行修改,删除 触发器的事

mysql的介绍和安装

本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 1.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢.所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量.所谓的关系型数据库,是建立在关系

day20——安装客户端、数据库连接、mysql事务、mysql操作数据

python的mysql操作 mysql数据库是最流行的数据库之一,所以对于python操作mysql的了解是必不可少的.Python标准数据库接口为Python DB-API, Python DB-API为开发人员提供了数据库应用 编程接口.参考地址:https://wiki.python.org/moin/DatabaseInterfaces,你可以查看python支持数据库的详细列表.不同的数据库需要下载不同的DB API模块.DB-API是一个规范.它定义了一系列必须的对象和数据库存取方

mysql系列详解四:mysql事务-技术流ken

MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务. 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行. 事务用来管理 insert,update,delete 语句 一般来说,事务是必须满足4个条件(A

Mysql事务及实现

一.事务 MySQL 事务主要用于处理操作量大,复杂度高的数据. 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务. 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行. 事务用来管理 insert,update,delete 语句 二.理解事务 比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 在删除操作中,必须保证删除人

数据库-mysql事务

MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务. 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行. 事务用来管理 insert,update,delete 语句 一般来说,事务是必须满足4个条件(A

深入学习MySQL事务:ACID特性的实现原理

事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段.本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理. MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正. 一.基础概念 事务(Transaction)是访问和更新数据库的程序执行单元:事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行.作为一个关系型数据库,MySQL支持事务,本文介绍基于MySQL5.6. 首先回顾一下MySQL事务的基础知识. 1