十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
mysql添加外键:
创新互联建站主营天门网站建设的网络公司,主营网站建设方案,app软件开发,天门h5成都小程序开发搭建,天门网站营销推广欢迎天门等地区企业咨询
为已经添加好的数据表添加外键:
语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id)
//FK_ID是外键的名称
/*
CREATE TABLE `tb_active` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `user_id_2` (`user_id`),
CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
*/
主键:唯一标识表中的所有行的一个列或一组列。主键不允许空值。不能存在具有相同的主键值的两个行,因此主键值总是唯一标识单个行。表中可以有不止一个键唯一标识行,每个键都称作候选键。只有一个候选键可以选作表的主键,所有其它候选键称作备用键。尽管表不要求具有主键,但定义主键是很好的做法。 在规范化的表中,每行中的所有数据值都完全依赖于主键。例如,在以 EmployeeID 作为主键的规范化的 employee 表中,所有列都应包含与某个特定职员相关的数据。该表不具有 DepartmentName 列,因为部门的名称依赖于部门 ID,而不是职员 ID。 外键:外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。 Create database cat go use cat go CREATE TABLE s(s# int not null primary key,s_name varchar(8) not null) go CREATE TABLE c (c# int not null primary key,c_name varchar(8) not null) go CREATE TABLE cs(c# int not null,s# int not null,cj tinyint not null default(0), primary key (c#,s#),foreign key(s#) references s(s#),foreign key(c#) references c(c#)) go insert s values(1,'saa') insert c values(1,'caa') --这句是对的 insert cs values(1,1,86) --这句是错的,sql会报错,应为s表的s#列里没有2 insert cs vlaues(2,1,45) 定义主键来强制不允许空值的指定列中输入值的唯一性。如果在数据库中为表定义了主键,则可将该表与其它表相关,从而减少冗余数据。表只能有一个主键。 外键。 当创建或更改表时可通过定义 FOREIGN KEY 约束来创建外键。 例如,数据库 pubs 中的 titles 表与 publishers 表有链接,因为在书名和出版商之间存在逻辑联系。titles 表中的 pub_id 列与 publishers 表中的主键列相对应。titles 表中的 pub_id 列是到 publishers 表的外键。 FOREIGN KEY 约束并不仅仅只可以与另一表的 PRIMARY KEY 约束相链接,它还可以定义为引用另一表的 UNIQUE 约束。FOREIGN KEY 约束不允许空值,但是,如果任何组合 FOREIGN KEY 约束的列包含空值,则将跳过 FOREIGN KEY 约束的校验。 主键是本表的唯一标识,而外键是与另一个表相关联
SQL中PK是指主键,FK是指外键. \r\n\r\n一、主键与外键\r\n1.主键是用来唯一地标识一行数据。主键列必须包含唯一的值,且不能包含空值(null)。\r\n2.主键可以建立在每张二维表中单列或者多列上。\r\n3.一张二维表上的外键可以引用另一张二维表上对应的主键。\r\n主键会有钥匙标识,如下图中红色圆圈内所示,外键没有该标识:\r\n\r\n拓展资料:\r\n下面的 SQL 在 "Persons" 表创建时在 "Id_P" 列创建 PK(主键) 约束:\r\nMySQL:\r\nCREATE TABLE Persons\r\n(\r\nId_P int NOT NULL,\r\nLastName varchar(255) NOT NULL,\r\nFirstName varchar(255),\r\nAddress varchar(255),\r\nCity varchar(255),PRIMARY KEY (Id_P))
create
table
volunteer(
志愿者编号
varchar(6)
not
null,
志愿者姓名
varchar(8),
班级编号
varchar(4),
constraint
PK_V
primary
key
(志愿者编号));
create
table
class(
班级编号
varchar(4),
班级名称
varchar(20),
学院
varchar(20),
constraint
PK_C
primary
key(班级编号),
班级编号
varchar
foreign
key
references
volunteer(班级编号));
你这个试下,我试了可以的
希望可以帮到你
SQL
创建外键语句的方法:constraint
外键名字
foreign
key
references
外键表(外键字段)
primary key是主键, not null 是值不能为空, foreign key是外键,numeric是枚举类型。
constraint dept_fk foreign key(coll_id) references college(coll_id)指的是表dept_fk的外键coll_id参照college表中的coll_id。用来建立两个表之间的关联关系。
其实不止是mysql里,所有的数据库都有主键外键的概念。举个简单的例子。
因为在中国有不少人姓名相同,所以虽然在你家里能用名字做统一标识,但是在中国这个范围却不行,所以就有了身份证号,这是主键,保证每一个人有一个。
然后你会上学,上学的话就有学籍这么个东西,虽然有学籍号还有学籍信息,但是我现在想要通过身份证号知道你的学历的话,在学籍这个表中,就要加入你的身份信息,这个身份信息与学籍信息当然不是在一个表里的,最简单的方法,是把身份信息都复制到学籍信息这个表里,不过很显然,这样数据库就有两份记录,一份在身份信息表里,一份在学籍信息表里,而且都是身份信息。这叫做冗余,不但占多了空间,还不能保证修改时候的同步,而且你也许还有社会保险啦,驾驶证之类更多的信息存在,我也不可能每个表都复制身份信息过去。这时就出现在外键,我只需要在这些表中插入身份证号这个列做为外键,那我到时候通过这个唯一的编号去身份信息这个表里找就好了,而且修改身份信息的话也只要在身份信息这个表做就好了,很方便很简单不是吗