管理事务处理
事务处理
并非所有引擎都支持事务处理,MyISAM和InnoDB是两种最常见使用的引擎,前者不支持明确的事务处理管理,后者支持
事务处理可以用来维护数据库的完整性,它保证成批的mysql操作成批的mysql操作要么执行,要么不执行
相关的概念:
transaction :指一组SQL语句
rollback:指撤销指定SQL语句的过程
commit:指将未存储的SQL语句结果写入数据库表
savepoint:指事务处理中设置的临时占位符,你可以对它发布回退
控制事务处理
使用ROLLBACK命令用来回退MYSQL语句
strart transaction;
delect from orderotals;
rollback;
使用COMMIT
一般的MySQL语句都是直接针对数据表执行和编写的,这就是所谓的隐含提交,即提交操作是自动进行的,明文提交
取消自动提交
set autocommit=0;
这个是设置自动提交:
set autocommit=1;
使用保留点
简单的ROLLBACK和COMMIT语句可以写入或撤销整个事务处理,但是,只是对简单的事务处理才能这样做,更复杂的事务处理可能需要部分提交或回退
如:
SAVEPOINT deletel
rollback to deletel
保留点越多越好,你就越能按自己的意愿灵活地进行回退
释放保留点:执行一条rollback或commit后自动释放
全球化和本地化
字符集和校对顺序
数据库表被用来存储和检索数据,不用的语言和字符集需要以不用的方式存储和检索,因此,MySQL需要适应不同的字符集,适应不同的排序和检索数据的方法
在讨论多种语言和字符集时,将会遇到以下重要术语
字符集为字母和符号的集合
编码为某个字符集成员的内部表示
校对为规定字符如何比较指令
校对为什么重要排序英文正文很容易,对吗?但是大小呢
使用字符集和校对顺序
查看字符集完整列表,使用下列语句查看
show character set;
查看支持校对的完整列表
show collation;
MySQL引擎
引擎的特性
连通性
MySQL是在假定它的大部分应用程序都运行在TCP/IP协议的基础上而设计的
SQL
结构化查询语言是一个开放标准,这个标准在不同厂商的支持程度不同,SQL是当今使用最广泛的语言之一,MySQL有自己的SQL标准变体
数据完整性
通过使用主键,外键约束,触发器等,MySQL支持引擎级的数据完整性
事务
原子性:事务被定义为一个或一系列可以访问或改变数据库内容的动作,在SQL中当一个或多个SQL语句作为一个单元运行时,事务就发生了。把SQL语句分组作为一个单元的一部分将指示MySQL:将其整体视为不可分割的单元,一条语句执行失败都会导致事务失败,俗称为原子性
一致性:当一个事务使得系统处于一致状态时,就是作为单元SQL语句结果会保持一致性
隔离性:每个事务在各自的空间发生,与系统内可能发生的其他事务相互独立
持久性:持久性意味着即使系统崩溃时,也要保存已提交的事务所做的改变。
可扩展性
在大部分RDBMS产品中,可以通过使用存储过程来扩展数据库的能力,其方法通常是通过提高包含控制流语句和条件逻辑的SQL来进一步扩展编程能力