-- 索引的类型,主键索引(primary key)、唯一索引(unique)、普通索引(index)、全文索引(fulltext)CREATETABLE suoyin_tab(
id INT,`name`VARCHAR(32));-- 查询表是否有索引SHOW INDEXES FROM suoyin_tab;-- 添加唯一索引CREATEUNIQUEINDEX id_index ON suoyin_tab(id);-- 查询表是否有索引SHOW INDEXES FROM suoyin_tab;-- 删除索引DROPINDEX id_index ON suoyin_tab;-- 添加普通索引CREATEINDEX id_index ON suoyin_tab(id);-- 查询表是否有索引SHOW INDEXES FROM suoyin_tab;-- 删除索引DROPINDEX id_index ON suoyin_tab;-- 添加普通索引的方式2ALTERTABLE suoyin_tab ADDINDEX id_index(id);-- 查询表是否有索引SHOW INDEXES FROM suoyin_tab;-- 删除索引DROPINDEX id_index ON suoyin_tab;-- 添加主键索引ALTERTABLE suoyin_tab ADDPRIMARYINDEX id_index(id);-- 查询表是否有索引SHOW INDEXES FROM suoyin_tab;
二、事务
2.1事务操作
-- 事务就是保证数据的一致性-- 1、创建一张测试表CREATETABLE shiwu_tab(
id INT,`name`VARCHAR(32));-- 2、开始事务STARTTRANSACTION-- 3、设置保存点aSAVEPOINT a
-- 执行dmlINSERTINTO shiwu_tab VALUES(100,'tom');-- 查询SELECT*FROM shiwu_tab;-- 设置保存点bSAVEPOINT b
INSERTINTO shiwu_tab VALUES(200,'jack');SELECT*FROM shiwu_tab;-- 回退到bROLLBACKTO b
SELECT*FROM shiwu_tab;-- 回退到aROLLBACKTO a
SELECT*FROM shiwu_tab;-- commit提交事务后,所有的操作生效,就不能回退了
2.2 事务隔离级别
-- 多个事务开启各自事务操作数据库的数据时,数据库要负责隔离操作-- 如果不考虑隔离型,会产生”脏读“、”不可重复读“、”幻读“-- 1、脏读:事务A读取了事务B尚未提交的改变(update、insert、delete),那么A读取到的数据是脏数据-- 2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。-- 3、幻读:系统管理员A将数据库中所有学生的成绩从具体分 数改为ABCDE等级,但是系统管理员B就在这个时候插入了一 条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
事务隔离级别
脏读
不可重复读
幻读
加锁读
读未提交
是
是
是
不加锁
不可重复读
否
是
是
不加锁
可重复读
否
否
是
不加锁
串行化
否
否
否
加锁
-- 1、开启两个控制台-- mysql -u root -p-- 2、查看当前mysql的隔离级别-- mysql> select @@tx_isolation;-- +-----------------+-- | @@tx_isolation |-- +-----------------+-- | REPEATABLE-READ |-- +-----------------+-- 1 row in set (0.00 sec)