一、事务 Transaction
1.事务处理可以保持数据的完整性,整批的sql操作要么不执行,要么全都执行完毕。然而并不是所有数据库引擎都支持事务处理,例如,InnoDB支持,而MyISAM不支持。所以创建表时候要选择对应的引擎,如果有需要的话。
2.在事务执行过程中,可以用ROLLBACK来回滚事物内的操作。但是ROLLBACK只对INSERT、UPDATE和DELETE操作有效,对CREATE和DROP是无效的。
3.一般的sql语句都是mysql自动提交的,但是在事务处理块中,提交不会隐含进行,必须明确指定什么时候提交。这时候使用COMMIT语句。在COMMIT和ROLLBACK执行后,事务会自动关闭。
4.用START TRANSACTION表示事务的开始。
eg:START TRANSACTION
DELETE FROM student WHERE sid = 125;
DELETE FROM school WHERE sid = 125;
COMMIT;
5.使用ROLLBACK或COMMIT可以写入或撤销整个事务,但是在某些需求下,可能需要部分的提交或回滚。这时,就用到了保留点SAVEPOINT。
eg:
START TRANSACTION
DELETE FROM student WHERE sid = 125;
SAVEPOINT delete1;
DELETE FROM school WHERE sid = 125;
ROLLBACK TO delete1;
6.在平时使用中,如果不想mysql自动的提交sql语句,可以这样更改:
eg:SET autocommit = 0;
但是,这个设置是针对当前连接的,而不是针对数据库服务器的。
二、字符集和校对顺序
mysql支持很多的字符集和校对顺序,可以这样查询:
eg:SHOW CHARACTER SET;
SHOW COLLATION;
通常系统在安装时定义一个默认的字符集和校对。也可以在创建数据库、表时指定。甚至不同的列有时候都需要不同的字符集,这些都可以再创建时指定。
eg:CREATE TLBLE mytable
(
columnn1 INT,
columnn2 VARCHAR(10)
) DEFAULT CHARACTER SET hebrew
COLLATE hebrew_general_ci;
eg: CREATE TABLE mytable
(
columnn1 INT,
columnn2 VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_general_ci
) DEFAULT CHARACTER SET hebrew
COLLATE hebrew_general_ci;
也可以再SELECT语句ORDER BY子句中指定:
eg:SELECT * FROM student ORDER BY name COLLATE latin1_general_cs;
三、账户管理
1.账户
查看所有账号:
eg:use mysql;
select user from user;
创建账号:
eg:CREATE USER wang IDENTIFIED BY 'passw0rd';
重命名:
eg:RENAME USER wang TO lulu;
删除:
DROP USER lulu;
2.权限
查看账户权限:
eg:SHOW GRANTS FOR lulu;
赋予权限:
eg:GRANT SELECT ON edu.* TO lulu;
撤销权限:
eg:REVOKE SELECT ON edu.* FROM lulu;
权限不只对于数据库、表,甚至细致到列、存储过程。
更改密码:
eg:SET PASSWORD FOR lulu = Psaaword('newpass');
新密码必须传入到Password()加密。