MySQL的表和字段信息的变更
ALTER TABLE table-name DROP column-name; #删除某个字段
ALTER TABLE table-name ADD column-name INT;#添加某个字段(需要指定数据类型),还可以添加未知信息,FIRST , AFTER xxxx
ALTER TABLE table-name CHANGE source-column-name new-column-name DATATYPE;#更换字段名字和类型
ALTER TABLE table-name MODIFY column-name DATATYPE NOT NULL DEFAULT 100;# 变更字段约束条件
ALTER TABLE table-name ALTER column-name SET DEFAULT 1000;# 变更字段约束条件,当然也可以DROP DEFAULT
ALTER TABLE table-name ENGINE = MYISAM;#变更引擎
ALTER TABLE old-table-name RENAME TO new-table-name;#修改表名
ALTER TABLE table-name DROP FOREIGN KEY key-name;#删除外键
正则表达式
SELECT * FROM table-name WHERE column-name REGEXP '正则表达式内容';#正则的使用
分组查询和排序查询
SELECT * FROM table-name ORDER BY column-name ASC;#也可以是DESC,排序查询,表名和字段名都可以多个
SELECT * FROM table-name GROUP BY column-name;#分组查询
MySQL事务
事务是MySQL保障数据一致性的重要机制,MySQL的事务具备四种基本属性
1、原子性
每一个事务只能完全提交或者回滚,不存在事务执行一般的情况。
2、一致性
数据一致性状态只能从一中状态成为另外一种一致性状态。
3、隔离性
事务与事务的操作相互隔离,这种特性通过锁机制实现。
4、持久性
改变了状态就是改变了,不会因为其他原因例如重启等二变动,事务状态改变了,这种改变是永久性的。
MySQL事务控制语句
BEGIN
DO SOMETHING
COMMIT/ROLLBACK
MySQL的事务隔离级别
1、未提交读
SET GLOBAL TRANSATION ISOLATION LEVEL READ UNCOMMITTED;
性能没有显著提高,很少用;
2、提交读
SET GLOBAL TRANSATION ISOLATION LEVEL READ COMMITTED;
大多数数据库的默认事务隔离级别,但是不是MySQL的,会有问题存在;
3、可重复读
SET GLOBAL TRANSATION ISOLATION LEVEL REPEATEABLE READ;
MySQL的默认事务隔离级别,但理论上有可能导致一个问题,幻读。InnoDB和Flacon存储引擎通过并发控制解决了这个问题。
4、可串行化
SET GLOBAL TRANSATION ISOLATION LEVEL SERIALIZABLED;
最高级别,有锁机制实现,强行排序事务,会导致大量的超时和锁竞争。
InnoDB的锁机制
1、共享锁
锁行或者多行,获得锁进行读取;
2、排它锁
锁行或者多行,获得锁进行写入;
3、意向锁
锁表,可读可写;