序言:将一些列操作作为单个逻辑工作单元处理的事务,是数据库运用过程不可或缺的功能,在学习事务之前我们需要了解一下mysql中的储存引擎
13.1什么是存储引擎?
13.1.1储存引擎
mysql的功能大致分为两种:<br /> 1.连接客户端和提前检查sql语句内容的功能,即数据库处理的前台部分。<br /> 2.是根据前台的显示,完成查询文件操作等工作的功能,即后台部分,这个部分被称为存储引擎<br /> **所以,mysq的存储引擎就是,根据sql语句完成操作文件工作的功能的部分。**
13.1.2存储引擎的种类:
mysql中预置了多个存储引擎,用户可以根据使用目的和个人喜欢进行选择。同时,每个表都可以单独指定存储引擎,因此,**存储引擎相互独立允许用户自主进行选择,正是mysql的特性**<br />** **mysql中可以使用的存储引擎↓图<br /> 
13.2设置存储引擎
13.2.1确认存储引擎
可以通过show create table 来查看表的详细信息,从而可以看到表中的存储引擎。<br /> ** 语法:**
show create table 表明
**示列 确认tb的存储引擎**
mysql> show create table tb;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tb | CREATE TABLE `tb` (
`empid` varchar(10) DEFAULT NULL,
`sales` int(11) DEFAULT NULL,
`month` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
13.2.2修改存储引擎
表的存储引擎可以被修改。<br /> ** 语法:**
alter table 表明 engine=存储引擎名;
示列:修改存储引擎
mysql> alter table tb engine=innodb;
Query OK, 0 rows affected (0.10 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table tb;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tb | CREATE TABLE `tb` (
`empid` varchar(10) DEFAULT NULL,
`sales` int(11) DEFAULT NULL,
`month` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
13.3什么是事务
**事务展示的示列**:<br /> <br /> 事务:将多个操作作为单个逻辑工作单元处理的功能称为事务。将事务开始之后的处理结果反映到数据库中的操作称为**提交(commit)**。不反映到数据库中而是恢复原来状态的操作称为回滚(**rollback**)。
13.4使用事务
13.4.2开启事务
开启事务是使用start transaction命令或者直接输入begin 或 begin work<br /> ** 语法;**
start transaction
示列:通过事务把tb表中的数据删除之后在恢复
/*1.开启事务*/
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
/*2.删除tb表中所有数据*/
mysql> delete from tb;
Query OK, 10 rows affected (0.02 sec)
mysql> select * from tb;//发现为空,但此时并未向数据库中提交
Empty set (0.00 sec)
mysql> rollback;//此时回滚事务,将该删除操作不映射到数据库中
Query OK, 0 rows affected (0.01 sec)
mysql> select * from tb;
+-------+-------+-------+
| empid | sales | month |
+-------+-------+-------+
| A103 | 101 | 4 |
| A103 | 101 | 4 |
| A104 | 181 | 5 |
| A101 | 184 | 4 |
| A103 | 17 | 5 |
| A101 | 300 | 5 |
| A102 | 205 | 6 |
| A104 | 93 | 5 |
| A103 | 12 | 6 |
| A107 | 87 | 6 |
+-------+-------+-------+
10 rows in set (0.00 sec)
mysql>
13.5自动提交功能
在mysql中执行命令,处理通常会直接提交。也就是说所有的命令都会自动commit。这种自动进行提交的功能,称为自动提交功能。<br /> 在默认情况下,自动提交功能处于开启状态。但是,当存储引擎为InnoDB时,如果输入start transaction 或者直接输入 begin,在执行commit之前就不会提交。
13.5.1关闭自动提交功能
执行set autocommit=0;就会关闭自动提交功能<br /> ** 示列:**
mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysql>
要注意的是,如果在关闭自动提交的状态下,如果没有进行commit就退出mysql,工作内容就不会反映到数据库中去
13.5.2启动已关闭的自动提交功能
语法:
set autocommit=1;
示列:
mysql> set autocommit=1;//打开自动提交功能
Query OK, 0 rows affected (0.00 sec)
mysql>
扩展;可以通过 select @@autocommit来确认当前自动提交功能的状态,如果是1则为打开,0则是关闭。
mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
| 1 | /*打开状态*/
+--------------+
1 row in set (0.00 sec)
mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
| 0 | /*关闭状态*/
+--------------+
1 row in set (0.00 sec)
mysql>

