索引
就和文件目录差不多,你点一下目录,就可以快速定位到你所点击目录的内容
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 语句进行回滚(操作结果有误就回滚)