暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL INDEX 索引用法详解与示例

跟谁学编程 2021-10-22
1778

索引是一种数据结构,MYSQL允许我们在现有表中添加索引。使用索引可以更快地检索数据库表上的记录。索引为索引列的每个值创建一个条目。我们可以通过使用表的一列或多列来创建索引,以便有效地访问记录。

当使用主键或唯一键创建表时,它会自动创建一个名为PRIMARY的特殊索引。我们称这个索引为聚集索引。PRIMARY 索引以外的所有索引都称为非聚集索引或二级索引。


普通索引

创建索引

这是最基本的索引,它没有任何限制。它有以下几种创建方式:
CREATE INDEX indexName ON table_name (column_name)
如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。

修改表结构(添加索引)

ALTER table tableName ADD INDEX indexName(columnName)

创建表的时候直接指定

CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
INDEX indexName
);

删除索引的语法

DROP INDEX [indexName] ON mytable;

唯一索引

它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

创建索引

CREATE UNIQUE INDEX indexName ON mytable(username(length))

修改表结构

ALTER table mytable ADD UNIQUE [indexName] (username(length))

创建表的时候直接指定

CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
UNIQUE indexName
);

使用ALTER 命令添加和删除索引

有四种方式来添加数据表的索引:
  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
  • ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。
  • ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。
以下实例为在表中添加索引。
mysql> ALTER TABLE testalter_tbl
ADD INDEX (c);
复制
你还可以在 ALTER 命令中使用 DROP 子句来删除索引。尝试以下实例删除索引:
mysql> ALTER TABLE testalter_tbl
DROP INDEX c;
复制

使用 ALTER 命令添加和删除主键

主键作用于列上(可以一个列或多个列联合主键),添加主键索引时,你需要确保该主键默认不为空(NOT NULL)。实例如下:
mysql> ALTER TABLE testalter_tbl
MODIFY i INT NOT NULL;

mysql> ALTER TABLE testalter_tbl
ADD PRIMARY KEY (i);
复制
你也可以使用 ALTER 命令删除主键:
mysql> ALTER TABLE testalter_tbl
DROP PRIMARY KEY;
复制
删除主键时只需指定PRIMARY KEY,但在删除索引时,你必须知道索引名。

显示索引信息

你可以使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。
尝试以下实例:
mysql> SHOW INDEX FROM table_name\G
........


复制

长按二维码关注公众号,查阅更多教程

文章转载自跟谁学编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论