创建数据表,观察其引擎:show create table provinces;
ENGINE=InnoDB 证明,引擎为InnoDB引擎。
创建三次才成功,如果是数字,数据类型必须一致:
create table provinces(
-> id smallint unsigned primary key auto_increment,
-> pname varchar(20) not null
-> );
create table users(
-> id smallint unsigned primary key auto_increment,
-> username varchar(10) not null,
-> pid smallint unsigned,
-> foreign key (pid) references provinces (id)
-> );
当前父表是provinces,子表是users(设置了外键 foreign key),引擎必须都是InnoDB。
外键列,即子表中的pid;参照列,即父表中的id,必须具有相同(或相似)的数据类型。
所以最后一句:foreign key(pid) references provinces (id)
可以理解为:外键(pid)参照 表provinces 的键(id)。
主键必须创建索引,输入观察:show indexes from provinces;show indexes from provinces\G;
显然,在id这里已经创建了索引。
那么在表users中,是否也有索引呢?show indexes from users\G;
可以看到:Column_name: id
Column_name: pid
pid是系统自动加了索引。
mac终端进入mysql:/usr/local/mysql/bin/mysql
http://www.imooc.com 来自iMooc的教学