MySQL事务处理

  • MyISAM和 InnoDB是mysql常用的引擎,前者不支持事务处理后者支持。
  • 事务处理用来维护数据库的完整性,它保证成批的Mysql操作要么执行,要么都不执行。
  • 关系型数据库设计把数据存储在多个表里,使数据更容易操纵、维护和重用。
  • 关键:事务处理的关键在于,将SQL语句分解为逻辑块,并明确规定数据何时退回何时不应该退回。

控制事务处理

  • 开始:start transaction
  • 回滚:rollback
  • commit:平时的Mysql语句都是隐式提交,但在事务处理的时候需要显示提交,commit语句只有在不出错时提交。
  • 保留点:可以指定回退到指定的点,这个点使用**savepoint pointname;**给出保留点。注:可以多设置保留点,以方便后面回滚。release savepoint 删除保留点。

更改默认提交行为

设置: autocommit = 0;
autocommit是针对每个连接的,不是服务器的。

字符集合校对顺序

不同的语言和字符集需要以不同的方式存储和检索。因此,MySQL需要适应不同的字符集,适应不同的排序和检索数据的方法。

  • 字符集:为字母和符号的集合
  • 编码:某个字符集的内部表示
  • 校对:规定字符如何比较,例如区分大小写还是不区分。

show CHARACTER SET
SHOW COLLATION

可以在创建数据库,表,或者定义列的时候指定默认的校对。

--表指定
CREATE TABLE mytable
(
columnn1 INT,
columnn2 VARCHAR(10) CHARACTER SET latin1 COLLATE --列指定
) DEFAULT CHARACTER SET hebrew
  COLLATE hebrew_general_ri;

校对在对用ORDER BY 子句检索出来的数据排序时起重要作用。

--或者排列的时候指定
SELECT * FROM customers
ORDER BY lastname, firstname COLLATE latin1_general_cs;