MySql数据库常用指令(三)
MySQL 索引是一种数据结构,用于加快数据库查询的速度和性能。
MySQL 索引的建立对于 MySQL 的高效运行是很重要的,索引可以大大提高 MySQL 的检索速度。
注:文中TEST为测试所用数据库,根据实际应用修改
一、创建索引
CREATE INDEX 语句可以创建普通索引:
CREATE INDEX index_name
ON table_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);
~~
注: CREATE INDEX: 用于创建普通索引的关键字。 index_name: 指定要创建的索引的名称。索引名称在表中必须是唯一的。
table_name: 指定要在哪个表上创建索引。 (column1, column2, ...):
指定要索引的表列名。你可以指定一个或多个列作为索引的组合。这些列的数据类型通常是数值、文本或日期。 ASC和DESC(可选):
用于指定索引的排序顺序。默认情况下,索引以升序(ASC)排序。
~~
sql
mysql> CREATE INDEX idx_name ON test (name);
注:在test表的name列上创建一个普通索引idx_name
二、修改表结构(添加索引)
ALTER TABLE 命令可以在已有的表中创建索引:
ALTER TABLE table_name
ADD INDEX index_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);
注: ALTER TABLE: 用于修改表结构的关键字。 table_name: 指定要修改的表的名称。
ADD INDEX:添加索引的子句。ADD INDEX用于创建普通索引
index_name: 指定要创建的索引的名称。索引名称在表中必须是唯一的。
(column1, column2, ...):指定要索引的表列名。你可以指定一个或多个列作为索引的组合。这些列的数据类型通常是数值、文本或日期。
ASC和DESC(可选):用于指定索引的排序顺序。默认情况下,索引以升序(ASC)排序。
sql
mysql>ALTER TABLE test ADD INDEX idx_age (age);
注:在 test 表的 age 列上创建一个名为 idx_age 的普通索引。
三、创建表的时候直接指定
CREATE TABLE 语句中直接指定索引,以创建表和索引的组合:
CREATE TABLE table_name (
column1 data_type,
column2 data_type,
...,
INDEX index_name (column1 [ASC|DESC], column2 [ASC|DESC], ...)
);
CREATE TABLE: 用于创建新表的关键字。
table_name: 指定要创建的表的名称。
(column1, column2,...): 定义表的列名和数据类型。你可以指定一个或多个列作为索引的组合。这些列的数据类型通常是数值、文本或日期
INDEX:用于创建普通索引的关键字。
index_name: 指定要创建的索引的名称。索引名称在表中必须是唯一的。
(column1,column2, ...): 指定要索引的表列名。可以指定一个或多个列作为索引的组合。这些列的数据类型通常是数值、文本或日期。
ASC和DESC(可选): 用于指定索引的排序顺序。默认情况下,索引以升序(ASC)排序。
sql
mysql> CREATE TABLE test (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
INDEX idx_age (age)
);
注:在test 表的 age 列上创建了一个名为 idx_age 的普通索引。
四、删除索引的语法
-
使用 DROP INDEX 语句来删除索引;
DROP INDEX index_name ON table_name;
DROP INDEX: 用于删除索引的关键字。
index_name: 指定要删除的索引的名称。
ON table_name:指定要在哪个表上删除索引。
sqlmysql> DROP INDEX idx_age ON test;
注:在 test 表中删除一个名为idx_age 的普通索引。
-
使用ALTER TABLE 语句删除索引:
ALTER TABLE table_name DROP INDEX index_name;
ALTER TABLE: 用于修改表结构的关键字。 table_name: 指定要修改的表的名称。 DROP INDEX:
用于删除索引的子句。 index_name: 指定要删除的索引的名称。
sql mysql> ALTER TABLE test DROP INDEX idx_age ;
注:在 test 表中删除一个名为idx_age 的普通索引。
五、唯一索引
CREATE UNIQUE INDEX 语句创建唯一索引:
唯一索引确保索引中的值是唯一的,不允许有重复值。
CREATE UNIQUE INDEX index_name
ON table_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);
CREATE UNIQUE INDEX: 用于创建唯一索引的关键字组合
index_name:指定要创建的唯一索引的名称。索引名称在表中必须是唯一的。
table_name: 指定要在哪个表上创建唯一索引。
(column1, column2, ...): 指定要索引的表列名。可以指定一个或多个列作为索引的组合。这些列的数据类型通常是数值、文本或日期。
ASC和DESC(可选): 用于指定索引的排序顺序。默认情况下,索引以升序(ASC)排序。
sql
mysql> CREATE UNIQUE INDEX idx_name ON test (name);
注:在test 表的 name 列上创建一个名为 idx_name 的唯一索引