为了账号安全,请及时绑定邮箱和手机立即绑定

究竟是外键列可以自动创建索引,还是参照列可以自动创建索引?

老师讲的和PPT上的不一样啊

正在回答

6 回答

好把~

0 回复 有任何疑惑可以回复我~

楼主把视频看完并自检动手操作一遍就知道了,PPT里第4句话应该分两层意思说:
①参照列没有索引的话,MySQL会自动创建索引,因为参照列含有主键,创建主键时MySQL会默认创建所用;
②外键列的索引也是MySQL根据参照列自动创建的;
以下案例及相关操作效果:

CREATE TABLE provinces(

id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY key,

pname VARCHAR(20) NOT NULL

);

SHOW CREATE TABLE provinces;    #查看数据表的存储引擎是否为InnoDB

http://img1.sycdn.imooc.com//568e75810001a75f04820181.jpg

CREATE TABLE users(

id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY key,

username VARCHAR(10) NOT NULL,

pid SMALLINT UNSIGNED,

FOREIGN KEY (pid) REFERENCES provinces (id)

);

SHOW INDEX FROM provinces;    #查看参照列是否有索引

http://img1.sycdn.imooc.com//568e75940001749b06240100.jpg

SHOW INDEX FROM provinces\G;    #换成按列打印显示,每个字段打印到单独的行

SHOW INDEX FROM users;    #查看外键列是否有索引

http://img1.sycdn.imooc.com//568e759f0001579a05790130.jpg

SHOW INDEX FROM users\G;    #查看外键列是否有索引

SHOW CREATE TABLE users;    #查看数据表users的创建历史命令

http://img1.sycdn.imooc.com//568e75ac0001f1ce06210293.jpg

2 回复 有任何疑惑可以回复我~
#1

DHWI

那如果参照列没有加主键约束呢?
2016-12-20 回复 有任何疑惑可以回复我~
#2

琥珀琥珀琥 回复 DHWI

外键列无法参照没有主键约束的参照列
2017-10-06 回复 有任何疑惑可以回复我~

那是老师口误咯

0 回复 有任何疑惑可以回复我~

根据视频实验结果不难看出是 外键列自动创建索引

2 回复 有任何疑惑可以回复我~

课件说MySQL自动创建索引,课件上并没说创建给谁

0 回复 有任何疑惑可以回复我~

这个确实讲的和课件上写的不一致

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
与MySQL的零距离接触
  • 参与学习       397026    人
  • 解答问题       3350    个

本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识

进入课程

究竟是外键列可以自动创建索引,还是参照列可以自动创建索引?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信