MySql数据库的基本操作-表数据中的 设置外键约束
2014-09-28 20:51
507 查看
创建数据表,观察其引擎:show create table provinces;
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/10/1aee0c9d6a88bb4d39ac46cc869bbfee)
ENGINE=InnoDB 证明,引擎为InnoDB引擎。
创建三次才成功,如果是数字,数据类型必须一致:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/10/74a166dbc530a71b362c9fafa134d830)
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这里已经创建了索引。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/10/dd8d1bb9143d7edfb2848cb45530c995)
那么在表users中,是否也有索引呢?show indexes from users\G;
可以看到:Column_name: id
Column_name: pid
pid是系统自动加了索引。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/10/948a757205307b2d457d021fd43acee2)
mac终端进入mysql:/usr/local/mysql/bin/mysql
http://www.imooc.com 来自iMooc的教学
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的教学
相关文章推荐
- MySql数据库的基本操作-表数据中的 唯一约束 & 默认约束
- MySql之DDL操作创建表(添加主键, 外键约束以及基本的数据类型)
- MySql数据库的基本操作-外键约束的参照操作-父表变化,子表的动作
- MySql入门之一:DDL操作创建表(添加主键, 外键约束以及基本的数据类型)
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- mysql数据库常用的基本SQL语句--数据库表操作
- MySQL数据库——创建约束基本操作
- MySql数据库的基本操作-修改表-添加/修改约束(默认值)
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- MySql数据库的基本操作-修改数据表
- MySQL数据库——修改约束基本操作
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- 对有主外键约束表数据的操作
- MySQL数据库操作3-数据表操作1-创建,约束
- MySQL数据表的基本操作一:创建表与表约束
- MySql数据库的基本操作-修改表-删除约束
- 导入数据的时候不确定,是否有外键约束,可以通过设置使系统在commit是在做检查。