MySQL——在已有的表上创建索引

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 |





猜你喜欢

转载自blog.csdn.net/qq_41573234/article/details/80327706
今日推荐