vlambda博客
学习文章列表

数据库---Mysql概念篇(二)

MySQL事务(Transaction)主要用于处理操作量大,复杂度高的数据。

  • Innodb数据库引擎的数据库才支持事务。

  • 事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。

满足事务的4个条件(ACID):

  • 原子性(Atomicity, 不可分割性):一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,就被回滚到事务的初始状态。

  • 一致性(Consistency):在事务开始之前和事务结束以后,数据库的完整性并没有被破坏。

  • 隔离性(Isolation, 独立性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。【锁机制来实现的】

  • 持久性(Durability):事务处理结束后,对数据的修改就是永久的。


事务控制语句

BEGIN # 事务开始ROLLBACK  # 事务回滚COMMIT    # 事务确认

MySQL索引的目的是大大提高MySQL的检索速度。

InnoDB索引存储类型使用的是B+树。

缺点:

  • 降低了表的更新速度;

  • 建立索引会占用磁盘空间的索引文件;

  • 如果某列重复的数据多,为它建索引的意义不大;

普通索引:允许数据列包含重复的值。

# 创建索引CREATE INDEX indexname ON tablename(username(length));
# 修改表结构ALTER tablename ADD INDEX [indexname] ON (username(length));
# 删除索引DROP INDEX [indexname] ON tablename;

唯一索引:数据列的值必须唯一,但允许有空值。

# 创建索引CREATE UNIQUE INDEX indexname ON tablename(username(length));
# 修改表结构ALTER tablename ADD UNIQUE [indexname] ON (username(length));

主键索引:特殊的唯一索引,不允许有空值。

CREATE TABLE tablename( id INT NOT NULL, username VARCHAR(16NOT NULL, PRIMARY KEY(id) );