MySQL基础-5 索引和事务

索引

就和文件目录差不多,你点一下目录,就可以快速定位到你所点击目录的内容

MySQL必须从第1条记录开始然后读完整个表直到找出相关的行,表的数据越多,花费的时间就越多;

如果表中查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要查看所有数据。

1 索引分类

索引类型 功能说明
普通索引 最基本的索引,它没有任何限制
唯一索引 某一列启用了唯一索引则不准许这一列的行数据中有重复的值。针对这一列的每一行数据都要求是唯一的 unique
主键索引 它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引,常用于用户ID。类似于书中的页码 primary key
全文索引 对于需要全局搜索的数据,进行全文索引

2 查看索引

基本语法:show index from tablename;

后面加个\G是为了便于查看;

示例:show index from user\G;

示例说明:查看user表的索引结构

3 普通索引

基本语法:alter table 表 add index(字段)

示例:alter table user add index(username);

示例说明:为user表的username字段增加索引

4 唯一索引

基本语法:alter table 表 add unique(字段)

示例:alter table user add unique(username);

示例说明:为user表的username字段增加唯一索引

5 主键索引

基本语法:alter table 表 add primary key(字段)

示例:alter table user add primary key(id);

示例说明:为user表的id字段增加主键索引

6 创建表时声明索引

创建表时可在创建表语句后加上对应的类型即可声明索引:

  • primary key(字段)
  • index (字段)
  • unique (字段)

被这些关键字所修饰的字段都可以作为索引使用

7 删除索引

基本语法:alter table table_name drop index index_name(就是你所设置索引的字段名);

示例:alter table user drop index age;

示例说明:为user表删除age索引

事务

1 事务控制语言

事务可以看作是一个“容器”,将多条语句,放入该容器,最后,只要一个命令行,来决定其中的所有语句是否“执行”

2 事务的四大特征

事务的四大特性(ACID):

  • 原子性(Atomicity) 事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行
  • 一致性(Consistency)事务应确保数据库的状态从一个一致状态转变为另一个一致状态
  • 隔离性(Isolation)多个事务并发执行时,一个事务的执行不应影响其他事务的执行
  • 持久性(Durability)已被提交的事务对数据库的修改应该永久保存在数据库中

3 事务的流程

执行语句 说明
start transaction 执行开始事务命令后,下面将进入事务模式.
update、delete、insert 操作 在事务执行后,这些操作只在内存状态下进行,而不是在物理状态下
commit 在事务执行完成后,确认执行无误且成功,就可以使用commit把内存中执行的结果,提交到物理内存中
rollback 如果在事务执行过程中,发生了错误,则可以使用rollback命令回滚到上一个事务操作

4 事务的使用

在mysql中默认一条sql语句一个事务因此,如果需要开启事务模式的话

使用 start transaction开头,开启事务模式

使用 commit 语句执行后,才能真正生效(确认操作结果无误之后就提交)

使用 rollback 语句进行回滚(操作结果有误就回滚)

猜你喜欢

转载自blog.csdn.net/hmh4640219/article/details/114130481