索引操作

2021-07-29

数据库

一个人的礼貌是一面照出他的肖像的镜子。——歌德

自己整理的mysql对于索引操作的sql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
CREATE TABLE `user` (
-- 创建表时指定主键索引
`id` BIGINT ( 20 ) PRIMARY KEY NOT NULL COMMENT '主键',
`gmt_create` datetime ( 0 ) NOT NULL COMMENT '创建时间',
`gmt_modified` datetime ( 0 ) NOT NULL COMMENT '修改时间',
`is_delete` TINYINT ( 1 ) NOT NULL DEFAULT 0 COMMENT '逻辑删除字段',
`username` VARCHAR ( 32 ) CHARACTER
SET utf8mb4 COLLATE utf8mb4_general_ci UNIQUE DEFAULT NULL COMMENT '用户名',
`password` VARCHAR ( 32 ) CHARACTER
SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码',
`mobile` INT ( 11 ) DEFAULT NULL COMMENT '手机号',
-- 创建表时顺带创建索引
INDEX `idx_gmt_create` ( `gmt_create` DESC ) USING BTREE COMMENT '创建日期检索索引'
);
-- 删除索引
DROP INDEX `username` ON `user`;
-- 创建唯一索引并指定长度
CREATE UNIQUE INDEX `idx_username` USING BTREE ON `user` (`username` ( 16 ));

-- 创建普通索引并指定降序
ALTER TABLE `user` ADD INDEX `idx_gmt_modified` ( `gmt_modified` DESC ) USING BTREE COMMENT '修改日期索引';
-- 创建唯一索引
ALTER TABLE `user` ADD UNIQUE `uk_mobile` ( `mobile` ) USING BTREE;
-- 创建主键索引
ALTER TABLE `user` ADD PRIMARY KEY `pk_username` ( `username` ) USING BTREE;
-- 创建全文索引
ALTER TABLE `user` ADD FULLTEXT `fx_username`(`username`);
-- 创建联合索引
ALTER TABLE `user` ADD UNIQUE `idx_id_username`(`id`,`username`) USING BTREE;
-- 创建联合唯一索引
ALTER TABLE `user` ADD UNIQUE `uk_username_mobile`(`username`,`mobile`) USING BTREE;

-- 删除索引
ALTER TABLE `user` DROP INDEX `fx_username`;
-- 删除主键索引
ALTER TABLE `user` DROP PRIMARY KEY;

-- 查看索引
SHOW INDEX FROM `user`;
SHOW KEYS FROM `user`;

注意阿里Java手册中对于索引命名的规约

五(一)5.【强制】主键索引名为 pk_字段名;唯一索引名为 uk_字段名;普通索引名则为 idx_字段名。

说明:pk_ 即 primary key;uk_ 即 unique key;idx_ 即 index 的简称。