时间:2021-07-01 10:21:17 帮助过:13人阅读
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 字典