数据库索引与事务

创建索引的方法

创建普通索引:
create index <索引的名字> on tablename (列的列表)
数据库索引与事务
创建唯一性索引:
create unique index <索引名字> on tablename(列的列表)
数据库索引与事务
创建主键索引,有俩种方式,一种是在创建表的同时创建主键,主键索引会自动创建:
数据库索引与事务
另外一种就是已经创建了表,没有指定主键,然后修改表加入主键,主键索引会自动创建;
数据库索引与事务
多列索引只需要在创建索引时指定多列即可;
create index 名字 on 表名(name,id)
不需要使用索引时,应删除索引:
drop index index——name on table_table;
alter table table_name drop index index_name;
alter table table_name drop primary key;
第一条命令是直接删除索引,第二条是修改表时删除索引,第三条是删除主键索引
数据库索引与事务
名称是xingming的索引已经删除

修改表结构

删除某一列,如果此列有索引存在,相应的索引也会被删除
数据库索引与事务
删除id一列后,关于id的索引也删除掉了

索引查看方法:

show index from tablename;

show keys from tablename;
在命令后面加上\G,可以竖向显示索引的信息;
数据库索引与事务

事务的概念:

事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小的控制单元。事务适用于用户同时操作数据库系统的场景。事务是保证了一组操作的平稳性和可预测性的技术。
MYSQL中使用命令控制事务需要用到三个命令:
begin:表示开始一个事务,后面会有多条数据库操作语句执行
commit : 表示提交一个事务,对应前面的begin操作,它们之间的数据库操作语句一起完成
rollback :表示回滚一个事务,在begin和commit之间,如果某一个数据库操作语句出现错误,执行rollback命令,执行rollback回滚,数据库回到begin之前的状态,也就是操作语句都没执行
数据库索引与事务
如果只开启一个事务不提交,操作语句并不是真正的插入到数据库中,退出MySQL连接后数据是没有插入的

rollback回滚的使用

数据库索引与事务
很多时候一个事务会包含多条语句,而出现问题需要回滚时,并不一定是要回滚到begin之前的状态,有可能是某条语句执行后的状态,这时需要使用save point定义回滚点,rollback决定回滚到的位置

数据库索引与事务
执行第一条插入语句后,定义了回滚点s1,执行第二条插入语句后,定义了回滚点s2,如果后面直接使用rollback命令,这俩条插入语句都将失败,现在使用回滚点进行回滚
数据库索引与事务
回滚到了s1,第一条插入的数据可以查询出来,但是没有提交,如果需要保存到数据库,使用commit命令提交

使用set设置控制事务

MySQL默认是自动提交事务,也可以修改为不自动提交,使用set命令操作
set autocommit=0:禁止自动提交
set autocommit=1:开启自动提交