MySQL的ALTER变更、正则查询、分组查询、排序查询以及事务查询的概

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、意向锁

锁表,可读可写;

猜你喜欢

转载自www.cnblogs.com/KevinGeorge/p/9172151.html