为什么我用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,那么在数据库中就可以出现一样的值。如:

http://img.mukewang.com/climg/5d886e8309dbf48106990151.jpg

祝学习愉快!

0

好帮手慕小尤

2019-09-23

同学你好,1. index是普通索引,而单独一个key就是普通索引的意思。unique key 建立了一个唯一索引。

2. 如果键是PRI,则列是主键或多列主键中的列之一。

    如果键是UNI,则该列是唯一索引的第一列。(唯一索引允许多个空值,但可以通过检查Null字段来判断该列是否允许空。)

    如果键为MUL,则该列是非唯一索引的第一列,其中允许在列中多次出现给定值。

祝学习愉快!

0
heixin_慕田峪521140
h 你好 能否展开说说。1.普通索引有什么用处 2.则该列是唯一索引的第一列,这个第一列怎么理解 是很多个唯一索引 我打开desc 只能看到一个字段的key底下有uni标示吗?3.允许在列中多次出现给定值,这是什么意思 用法是怎么样的 能否写个案例?
h019-09-23
共1条回复

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>

0

0 学习 · 4928 问题

查看课程