MySql如何创建外键

MySql如何创建外键,第1张

mysql添加外键:

为已经添加好的数据表添加外键:

语法: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

*/

1.主键语法

①创建时:create table sc (

studentnoint,

courseidint,

scoreint,

primary key (studentno) )

②修改时:ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名)

前提是原先没有设置主键。

2.外键语法

①创建时:create table sc (

studentnoint,

courseidint,

scoreint,

foreign key (courseid) )

②修改时:

ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列]

3.使用组合主键

如果一列不能唯一区分一个表里的记录时,可以考虑多个列组合起来达到区分表记录的唯一性,形式

①创建时:create table sc (

studentnoint,

courseidint,

scoreint,

primary key (studentno,courseid) )

②修改时:alter table tb_name add primary key (字段1,字段2,字段3)

前提是原来表中没有设置主键,若原先已有主键则会报错。

一张表中的主键只能有一个,外键可以有多个,如果一张表中多个列都需要被别的表的外键参考,需要使用候选码(非空并且唯一),具体到你的这个问题的需求可以考虑用如下方法解决:

把a表中的bookid和authorid都设置为非空并且唯一,即

create table a(bookid int not null unique, authorid int not null unique)

然后在book表和author表中就可以分别设置外键来参照a表中两个不同的字段了。

打开我的navicat,然后找到我的teacher表,选中它,然后点击菜单栏上的‘design table'

2. 在d出的对话框中找到“Foreign Keys”,然后单机。

3. 然后会出现一个设置外键的界面,一共有七列。简单介绍一下这几列的意思。‘name’:可以不填,你一会保存成功系统会自动生成。FieldName’:就是你要把哪个键设置为外键。这里选择‘dept’,‘Reference DadaBase’:外键关联的数据库。‘Reference Table‘ :关联的表 这里是dept表‘Forgin filed Names’:关联的的字段,这里是code‘ondelete’:就是删除的时候选择的动作。这里我的选择是setNull,意思就是当关联的表删除以后,teacher》dept字段会设置为null.

4. 设置完成后点击‘save’保存退出,也可以点击‘add Foreign Key’再添加一个外键。

打开我的navicat,然后找到我的teacher表,选中它,然后点击菜单栏上的‘design table’。如下图:

2. 在d出的对话框中找到“Foreign Keys”,然后单机。如下图:

3. 然后会出现一个设置外键的界面,一共有七列。简单介绍一下这几列的意思。‘name’:可以不填,你一会保存成功系统会自动生成。FieldName’:就是你要把哪个键设置为外键。这里选择‘dept’,‘Reference DadaBase’:外键关联的数据库。‘Reference Table‘ :关联的表 这里是dept表‘Forgin filed Names’:关联的的字段,这里是code‘ondelete’:就是删除的时候选择的动作。这里我的选择是setNull,意思就是当关联的表删除以后,teacher》dept字段会设置为null。如图

4. 设置完成后点击‘save’保存退出,也可以点击‘add Foreign Key’再添加一个外键。k如图:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8533135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存