为什么我用add index(字段名) 出来显示key为MUL
来源:3-10 主键和唯一索引操作
weixin_慕田峪521140
2019-09-23 14:28:01
mysql> create table test_7(username varchar(20) not null,id int unsigned);
Query OK, 0 rows affected (0.12 sec)
mysql> alter table test_7 add index uni_username(username);
Query OK, 0 rows affected (0.12 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc test_7;
+----------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| username | varchar(20) | NO | MUL | NULL | |
| id | int(10) unsigned | YES | | NULL | |
+----------+------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> show create table test_7;
+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table
|
+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| test_7 | CREATE TABLE `test_7` (
`username` varchar(20) NOT NULL,
`id` int(10) unsigned DEFAULT NULL,
KEY `uni_username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
我重建了一个test_7 也这样 MUL是什么 为什么我show create table 内容只有
KEY `uni_username` (`username`)
正常不是应该unique key xxxx吗
3回答
好帮手慕小尤
2019-09-23
同学你好,1. 普通索引(由关键字KEY或INDEX定义的索引)的用处是加快对数据的访问速度。
2. 如果有UNI的那一列就是第一个唯一索引的列
3. 如果键为MUL就不是唯一索引了,就可以出现重复的值。如:money字段。如果键是MUL,那么在数据库中就可以出现一样的值。如:
祝学习愉快!
好帮手慕小尤
2019-09-23
同学你好,1. index是普通索引,而单独一个key就是普通索引的意思。unique key 建立了一个唯一索引。
2. 如果键是PRI,则列是主键或多列主键中的列之一。
如果键是UNI,则该列是唯一索引的第一列。(唯一索引允许多个空值,但可以通过检查Null字段来判断该列是否允许空。)
如果键为MUL,则该列是非唯一索引的第一列,其中允许在列中多次出现给定值。
祝学习愉快!
weixin_慕田峪521140
提问者
2019-09-23
我只用的是alter table test_7 add index(name) 运行后显示的是key不是unique key。
现在我用alter table test_7 add unique key(name) 这样写就行了,这是为什么 key和unique key,MUL和UNI的区别是什么?
mysql> alter table test_7 add unique key(dress);
Query OK, 0 rows affected (0.14 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc test_7;
+----------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| username | varchar(20) | NO | MUL | NULL | |
| id | int(10) unsigned | YES | | NULL | |
| dress | varchar(20) | YES | UNI | NULL | |
+----------+------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> show create table test_7;
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table
|
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| test_7 | CREATE TABLE `test_7` (
`username` varchar(20) NOT NULL,
`id` int(10) unsigned DEFAULT NULL,
`dress` varchar(20) DEFAULT NULL,
UNIQUE KEY `dress` (`dress`),
KEY `uni_username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
相似问题
回答 1
回答 1