当前位置:Gxlcms > 数据库问题 > mysql 索引

mysql 索引

时间:2021-07-01 10:21:17 帮助过:13人阅读

mysql> desc student; 2 +---------------+---------------+------+-----+---------+----------------+ 3 | Field | Type | Null | Key | Default | Extra | 4 +---------------+---------------+------+-----+---------+----------------+ 5 | stu_id | int(11) | NO | PRI | NULL | auto_increment | 6 | name | varchar(50) | YES | | NULL | | 7 | register_date | date | NO | | NULL | | 8 | gender | enum(M,F) | NO | | NULL | | 9 +---------------+---------------+------+-----+---------+----------------+ 10 4 rows in set (0.00 sec) 11 12 mysql> create index student_name on student(name); 13 Query OK, 0 rows affected (0.06 sec) 14 Records: 0 Duplicates: 0 Warnings: 0 创建索引 技术分享图片
mysql> mysql> show index from student;
+---------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table   | Non_unique | Key_name     | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| student |          0 | PRIMARY      |            1 | stu_id      | A         |           6 |     NULL | NULL   |      | BTREE      |         |               |
| student |          1 | student_name |            1 | name        | A         |           6 |     NULL | NULL   | YES  | BTREE      |         |               |
+---------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)
查看索引 技术分享图片
# 语法
drop index index_name on table_name

mysql> drop index student_name on student;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0
删除索引 技术分享图片
# 语法
alter table table_name add index index_name (column_list);

mysql> alter table student add index student_name (name);
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0
修改表结构增加索引

  如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。

  

 三、唯一索引

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

# 创建唯一索引
 CREATE UNIQUE INDEX index_name on table_name(column_name(length))

# 修改表结构创建
ALTER TABLE table_name add INDEX index_name on (column_name(length))

# 创建表的时候指定
CREATE TABLE mytable( 
  
ID INT NOT NULL,  
  
username VARCHAR(16) NOT NULL, 
  
UNIQUE [indexName] (username(length)) 
  
); 

 

四、主键索引 

主键只能作用于一个列上,添加主键索引时,你需要确保该主键默认不为空(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,但在删除索引时,你必须知道索引名。

  删除主键索引

alter table 表名 drop primary key;
alter table 表名  modify  列名 int, drop primary key;

  

五、组合索引 

  组合索引是将n个列组合成一个索引

技术分享图片
create table in3(
    nid int not null auto_increment primary key,
    name varchar(32) not null,
    email varchar(64) not null,
    extra text
)

创建表
创建表 技术分享图片
create index ix_name_email on in3(name,email);
创建索引

 

mysql 索引

标签:seq   指定   text   允许   定时   内容   pos   column   字典   

人气教程排行