为什么我用add index(字段名) 出来显示key为MUL

为什么我用add index(字段名) 出来显示key为MUL

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吗


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕小尤 2019-09-23 15:05:27

同学你好,1. 普通索引(由关键字KEY或INDEX定义的索引)的用处是加快对数据的访问速度。

2. 如果有UNI的那一列就是第一个唯一索引的列

3. 如果键为MUL就不是唯一索引了,就可以出现重复的值。如:money字段。如果键是MUL,那么在数据库中就可以出现一样的值。如:

http://img1.sycdn.imooc.com//climg/5d886e8309dbf48106990151.jpg

祝学习愉快!

好帮手慕小尤 2019-09-23 14:41:02

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

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

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

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

祝学习愉快!

  • 提问者 weixin_慕田峪521140 #1
    你好 能否展开说说。1.普通索引有什么用处 2.则该列是唯一索引的第一列,这个第一列怎么理解 是很多个唯一索引 我打开desc 只能看到一个字段的key底下有uni标示吗?3.允许在列中多次出现给定值,这是什么意思 用法是怎么样的 能否写个案例?
    2019-09-23 14:46:24
提问者 weixin_慕田峪521140 2019-09-23 14:32:55

我只用的是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积分~

来为老师/同学的回答评分吧

0 星
PHP小白零基础入门
  • 参与学习           人
  • 提交作业       626    份
  • 解答问题       4930    个

想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师