究竟是外键列可以自动创建索引,还是参照列可以自动创建索引?
老师讲的和PPT上的不一样啊
老师讲的和PPT上的不一样啊
2015-01-05
楼主把视频看完并自检动手操作一遍就知道了,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
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; #查看参照列是否有索引
SHOW INDEX FROM provinces\G; #换成按列打印显示,每个字段打印到单独的行
SHOW INDEX FROM users; #查看外键列是否有索引
SHOW INDEX FROM users\G; #查看外键列是否有索引
SHOW CREATE TABLE users; #查看数据表users的创建历史命令
举报