索引

索引可以提升查询速度,会影响where查询,以及order by排序。MySQL索引类型如下:

从索引存储结构划分:B Tree索引、Hash索引、FULLTEXT全文索引、R Tree索引 从应用层次划分:普通索引、唯一索引、主键索引、复合索引 从索引键值类型划分:主键索引、辅助索引(二级索引) 从数据存储和索引键值逻辑关系划分:聚集索引(聚簇索引)、非聚集索引(非聚簇索引)

总结:创建表时无主键,查询顺序根据输入顺序;再创建索引,查询顺序也是根据输入顺序。 创建表时有主键,索引自动创建关于主键的,查询顺序是升序的。

读锁会阻塞写,但是不会阻塞读,而写锁则会把读写都阻塞

在这里插入图片描述

例子

1、新建数据库RUNOOB。

在这里插入图片描述 在这里插入图片描述

2、选择SQL语句操作。

在这里插入图片描述 在这里插入图片描述

3、在RUNOOB的数据库中创建emp_pay表,无主键。 命令:

CREATE TABLE emp_pay
(
 employeeID int NOT NULL,
 base_pay int NOT NULL,
 commission decimal(2, 2) NOT NULL
)

在这里插入图片描述

4、插入数据 命令:

INSERT INTO emp_pay VALUES (1, 500, .10);
INSERT INTO emp_pay VALUES (6, 800, .07);
INSERT INTO emp_pay VALUES (5, 1500, .03);
INSERT INTO emp_pay VALUES (9, 750, .06);

在这里插入图片描述

5、查询表。 命令:SELECT * FROM emp_pay

在这里插入图片描述

6、将employeeID为1的更改为7。 命令:update emp_pay set employeeID=7 where employeeID=1;

在这里插入图片描述

7、查询表。 命令:SELECT * FROM emp_pay

在这里插入图片描述

8、创建索引。 命令:CREATE INDEX employeeID_ind ON emp_pay (employeeID)

在这里插入图片描述

9、查询表。 命令:SELECT * FROM emp_pay

在这里插入图片描述

10、将employeeID等于6的更改为8。 命令:update emp_pay set employeeID=8 where employeeID=5;

在这里插入图片描述

11、查询表。 命令:SELECT * FROM emp_pay

在这里插入图片描述

12、在RUNOOB数据库中创建emp表,employeeID为主键。 命令:

CREATE TABLE emp
(
 employeeID int NOT NULL PRIMARY KEY,
 base_pay int NOT NULL,
 commission decimal(2, 2) NOT NULL
)

在这里插入图片描述

13、插入数据。 命令:

INSERT INTO emp VALUES (1, 500, .10);
INSERT INTO emp VALUES (6, 800, .07);
INSERT INTO emp VALUES (5, 1500, .03);
INSERT INTO emp VALUES (9, 750, .06);

在这里插入图片描述

14、查询表。 命令:SELECT * FROM emp;

在这里插入图片描述

15、将employeeID为1的值改为7。 命令:update emp set employeeID=7 where employeeID=1;

在这里插入图片描述

16、查询表。 命令:SELECT * FROM emp;

在这里插入图片描述

总结:创建表时无主键,查询顺序根据输入顺序;再创建索引,查询顺序也是根据输入顺序。 创建表时有主键,索引自动创建关于主键的,查询顺序是升序的。