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;