布衣重九
布衣重九
3月前 · 1 人阅读

1. 使用 ALTER TABLE 语句创建索引

语法如下:

ALTER TABLE table_name ADD [UNIQUE | FULLTEXT | SPATIAL ] [ INDEX | KEY ]

[ index_name] ( col_name [length],…) [ASC | DESC]

index_name:索引名称,该参数作用是给用户创建的索引赋予新的名称。

table name:表名,即指定创建索引的表名称。

UNIQUE | FULLTEXT | SPATIAL 为可选参数,用于指定索引类型,分别表示唯一索引、全文索引、空间索引。

col_name:指定索引对应的字段名称。该字段必须已经预存在用户想要操作的数据表中,如果该数据表中不存在用户指定的字段,则系统会提示异常。

length:为可选参数,用于指定索引长度。

ASC 和 DESC 参数用于指定数据表的排序顺序。

【例】 在 score 表的 id 字段上建立,名为 id 的普通索引。SQL语句如下:


mysql> ALTER  TABLE  score  ADD INDEX id (id(4));
Query OK, 0 rows affected (0.41 sec)

使用 SHOW INDEX 语句查看表中的索引:


mysql> SHOW  INDEX  FROM  score  G
*************************** 1. row ***************************
        Table: score
   Non_unique: 0
     Key_name: PRIMARY
 Seq_in_index: 1
  Column_name: id
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
*************************** 2. row ***************************
        Table: score
   Non_unique: 1
     Key_name: id
 Seq_in_index: 1
  Column_name: id
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
2 rows in set (0.00 sec)

主要参数含义:

1. Table:表示创建索引的表。

2.Non_unique:表示索引非唯一,1代表非唯 一索引, 0代表唯一索引。

3.Key_name:表示索引的名称。

4.Seq_in_index:表示该字段在索引中的位置,单列索引该值为1,组合案引为每个字段在索引定义中的顺序。

5.Column_name:表示定义索引的列字段。

6.Sub_part:表示索引的长度。

7.Null:表示该字段是否能为空值。

8.Index_type:表示索引类型。

2. 使用 CREATE INDEX 创建索引

语法如下:

CERATE[UNIQUE | FULLTEXT | SPATIAL ] INDEX index_name

ON table_name( col_name [length] , … ) [ASC | DESC]

【例】在 address 表中 id 字段上建立名为 id 的唯一索引。


mysql> show create  table  address;
+---------+-------------------------------------------+
| Table   | Create Table                                                                                                |
+---------+-------------------------------------------+
| address | CREATE TABLE `address` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `address` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

建立索引的SQL语句:


mysql> CREATE  UNIQUE  INDEX  id
    -> ON   address  (id);
Query OK, 0 rows affected (0.33 sec)

查看创建结果:


mysql> show create  table  address ;
+---------+-----------------------------
| Table   | Create Table                        |
+---------+--------------------------------------+
| address | CREATE TABLE `address` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `address` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
收藏 0
索引 id name null address index
评论 ( 0 )