Mysql数据库中,事务是指啥?如何使用该功能?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql数据库中,事务是指啥?如何使用该功能?相关的知识,希望对你有一定的参考价值。
参考技术A 什么是事务? \\x0d\\x0a\\x0d\\x0a事务是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这个特性就是事务 \\x0d\\x0a\\x0d\\x0a注意:mysql数据支持事务,但是要求必须是innoDB存储引擎 \\x0d\\x0a\\x0d\\x0a解决这个问题: \\x0d\\x0a\\x0d\\x0amysql的事务解决这个问题,因为mysql的事务特性,要求这组操作,要不全都成功,要不全都失败,这样就避免了某个操作成功某个操作失败。利于数据的安全 \\x0d\\x0a\\x0d\\x0a如何使用: \\x0d\\x0a\\x0d\\x0a(1)在执行sql语句之前,我们要开启事务 start transaction; \\x0d\\x0a\\x0d\\x0a(2)正常执行我们的sql语句 \\x0d\\x0a\\x0d\\x0a(3)当sql语句执行完毕,存在两种情况: \\x0d\\x0a\\x0d\\x0a1,全都成功,我们要将sql语句对数据库造成的影响提交到数据库中,committ \\x0d\\x0a\\x0d\\x0a2,某些sql语句失败,我们执行rollback(回滚),将对数据库操作赶紧撤销 \\x0d\\x0a\\x0d\\x0a(注意:mysql数据支持事务,但是要求必须是innoDB存储引擎) \\x0d\\x0amysql> create table bank(name varchar(20),money decimal(5,1))engine=innodb defau \\x0d\\x0alt charset=utf8; \\x0d\\x0a\\x0d\\x0amysql> inset into bank values(\'shaotuo\',1000),(\'laohu\',5000); \\x0d\\x0a\\x0d\\x0amysql> select*from bank; \\x0d\\x0a+---------+--------+ \\x0d\\x0a| name | money | \\x0d\\x0a+---------+--------+ \\x0d\\x0a| shaotuo | 1000.0 | \\x0d\\x0a| laohu | 5000.0 | \\x0d\\x0a+---------+--------+ \\x0d\\x0a\\x0d\\x0a------没有成功“回滚”执行rollback \\x0d\\x0amysql> start transaction; //开启事务 \\x0d\\x0aQuery OK, 0 rows affected (0.00 sec) \\x0d\\x0a\\x0d\\x0amysql> update bank set money=money+500 where name=\'shaotuo\'; \\x0d\\x0aQuery OK, 1 row affected (0.00 sec) \\x0d\\x0aRows matched: 1 Changed: 1 Warnings: 0 \\x0d\\x0a\\x0d\\x0amysql> update bank set moey=money-500 where name=\'laohu\'; \\x0d\\x0aERROR 1054 (42S22): Unknown column \'moey\' in \'field list\' \\x0d\\x0amysql> rollback; //只要有一个不成功,执行rollback操作 \\x0d\\x0aQuery OK, 0 rows affected (0.01 sec) \\x0d\\x0a\\x0d\\x0amysql> select*from bank; \\x0d\\x0a+---------+--------+ \\x0d\\x0a| name | money | \\x0d\\x0a+---------+--------+ \\x0d\\x0a| shaotuo | 1000.0 | \\x0d\\x0a| laohu | 5000.0 | \\x0d\\x0a+---------+--------+ \\x0d\\x0a------成功之后 进行commit操作 \\x0d\\x0amysql> start transaction; //开启事务 \\x0d\\x0aQuery OK, 0 rows affected (0.00 sec) \\x0d\\x0a\\x0d\\x0amysql> update bank set money=money+500 where name=\'shaotuo\'; \\x0d\\x0aQuery OK, 1 row affected (0.01 sec) \\x0d\\x0aRows matched: 1 Changed: 1 Warnings: 0 \\x0d\\x0a\\x0d\\x0amysql> update bank set money=money-500 where name=\'laohu\'; \\x0d\\x0aQuery OK, 1 row affected (0.00 sec) \\x0d\\x0aRows matched: 1 Changed: 1 Warnings: 0 \\x0d\\x0a\\x0d\\x0amysql> commit; //两个都成功后执行commit(只要不执行commit,sql语句不会对真实的数据库造成影响) \\x0d\\x0aQuery OK, 0 rows affected (0.05 sec) \\x0d\\x0a\\x0d\\x0amysql> select*from bank; \\x0d\\x0a+---------+--------+ \\x0d\\x0a| name | money | \\x0d\\x0a+---------+--------+ \\x0d\\x0a| shaotuo | 1500.0 | \\x0d\\x0a| laohu | 4500.0 | \\x0d\\x0a+---------+--------+oracle中DDL是指啥意思?
甲骨文股份有限公司(NASDAQ:ORCL,Oracle)是全球大型数据库软件公司。总部位于美国加州红木城的红木岸(Redwood Shores),现时首席执行官为公司创办人劳伦斯·埃里森(Lawrence J. Ellison)。
数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言。一个数据库模式包含该数据库中所有实体的描述定义。
数据库模式定义语言并非程序设计语言,DDL数据库模式定义语言是SQL语言(结构化查询语言)的组成部分。SQL语言包括四种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事务控制语言(TCL)。
DDL描述的模式,必须由计算机软件进行编译,转换为便于计算机存储、查询和操纵的格式,完成这个转换工作的程序称为模式编译器。
模式编译器处理模式定义主要产生两种类型的数据:数据字典以及数据类型和结构定义。
数据字典和数据库内部结构信息是创建该模式所对应的数据库的依据,根据这些信息创建每个数据库对应的逻辑结构;对数据库数据的访问、查询也根据模式信息决定数据存取的方式和类型,以及数据之间的关系和对数据的完整性约束。
数据字典是模式的内部信息表示,数据字典的存储方式对不同的DBMS各不相同。
数据类型和结构的定义,是指当应用程序与数据库连接操作时,应用程序需要了解产生和提取的数据类型和结构。是为各种宿主语言提供的用户工作区的数据类型和结构定义,使用户工作区和数据库的逻辑结构相一致,减少数据的转换过程,这种数据类型和结构的定义通常用一个头文件来实现。
数据库模式的定义通常有两种方式: 交互方式定义模式和通过数据描述语言DDL 描述文本定义模式。
折叠
参考技术A 诸如Create、Drop等操作,会自动commit事务的语句,为DDL。insert、update、delete操作,需要显式commit事务的语句,为DML。
这样你清楚了吧? 参考技术B DDL是指数据定义语言,有create,alter,drop等
类似的分类还有DML数据操纵语言(select,delete,update,insert等)
以及DCL数据控制语言(grant,revoke)
TCL 事务控制语言(commit,rollback)
望采纳! 参考技术C 数据库定义语言DDL-Data Definition Language 参考技术D data description language:数据定义语言
以上是关于Mysql数据库中,事务是指啥?如何使用该功能?的主要内容,如果未能解决你的问题,请参考以下文章