-
2021-05-26 16:19:57
第一种方式:通过创建表的过程中进行添加外键,和其他表的字段进行联系。
create table teacher( id int unsigned auto_increment, name varchar(20), primary key (id) ); create table student( id int unsigned auto_increment, name varchar(20), gender enum('男','女','保密'), tid int unsigned, primary key (id), constraint stfk foreign key(tid)references teacher(id) );
第二种方式:创建表后,再添加外键。
create table student( id int unsigned auto_increment, name varchar(20), gender enum('男','女','保密'), primary key (id), ); create table teacher( id int unsigned auto_increment, name varchar(20), primary key (id) ); alter table student add tid int; alter table student add constraint stfk foreign key (tid) references teacher(id);
更多相关内容 -
Mysql添加外键
2021-12-02 15:36:33当mysql表已经创建好时,忘了给表添加外键约束. 问题描述: 添加外键的方式: 方式一:还未创建表时:FOREIGN KEY (此表id) REFERENCES class(外表id) CREATE TABLE student( sid INT AUTO_INCREMENT, sname VARCHAR...项目场景:
当mysql表已经创建好时,忘了给表添加外键约束.
问题描述:
添加外键的方式:
方式一:还未创建表时:FOREIGN KEY (此表id) REFERENCES class(外表id)
CREATE TABLE student(
sid INT AUTO_INCREMENT,
sname VARCHAR(10),
s_cid INT,
PRIMARY KEY(sid),
FOREIGN KEY (s_cid) REFERENCES class(cid)
);
方式二:已经创建表:ALTER TABLE 表1 ADD FOREIGN KEY (表1的键) REFERENCES tbl_dept(表2的键);
例如: ALTER TABLE tbl_emp ADD FOREIGN KEY (dep_id) REFERENCES tbl_dept(dept_id);
其它问题:
添加外键需要注意:外键和引用键中的相应列必须具有类似的数据类型。整数类型的大小和符号必须相同。字符串类型的长度不需要相同。对于非二进制(字符)字符串列,字符集和排序规则必须相同。InnoDB允许外键引用任何索引列或列组。但是,在引用的表中,必须有一个索引,其中引用的列以相同的顺序作为第一列列出。
添加索引:
alter table orders add constraint 主键的新名字 primary key (要改成主键的列的名字); alter table tbl_dept add constraint dept_id primary key (dept_id);
-
MySQL添加外键时报错:1215 Cannot add the foreign key constraint的解决方法
2020-09-09 23:00:35大家都知道MySQL中经常会需要创建父子表之间的约束,这个约束是需要建立在主外键基础之上的,最近在MySQL添加外键时发现了一个报错:1215 Cannot add the foreign key constraint,所以这篇文章就给大家介绍了如何... -
Mysql 添加外键
2021-01-27 20:58:22语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user...语法: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
*/
删除外键
语法: ALTER TABLE table-name DROP FOREIGN KEY key-id;
例: ALTER TABLE tb_active DROP FOREIGN KEY FK_ID
自动键更新和删除:
外键可以保证新插入的记录的完整性,但是,如果在REFERENCES从句中已命名的表删除记录会怎么样?在使用同样的值作为外键的辅助表中会发生什么?
很明显,那些记录也应该被删除,否则在数据库中就会有很多无意义的孤立记录,MYSQL可以通过向FOREIGN KEY...REFERENCES修饰符添加一个ON DELETE 或ON UPDATE子句简化任务,它告诉了数据库在这种情况如何处理孤立任务
关键字 含义
CASCADE 删除包含与已删除键值有参照关系的所有记录
SET NULL 修改包含与已删除键值有参照关系的所有记录,使用NULL值替换(只能用于已标记为NOT NULL的字段)
RESTRICT 拒绝删除要求,直到使用删除键值的辅助表被手工删除,并且没有参照时(这是默认设置,也是最安全的设置)
NO ACTION 啥也不做
请注意,通过ON UPDATE 和 ON DELETE规则,设置MYSQL能够实现自动操作时,如果键的关系没有设置好,可能会导致严重的数据破坏,
例如:如果一系列的表通过外键关系和ON DELETE CASCADE 规则连接时,任意一个主表的变化都会导致甚至只和原始删除有一些将要联系的记录在没有警告的情况被删除,所以,我们在操作之前还要检查这些规则的,操作之后还要再次检查.
添加外键
alter table locstock add foreign key locstock_ibfk2(stockid) references product(stockid)
locstock 为表名, locstock_ibfk2 为外键名 第一个括号里填写外键列名, product为表名,第二个括号里是写外键关联的列名
删除外键
alter table locstock drop foreign key locstock_ibfk2
查看表有哪些外键
show create table locstock
[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
所有tables必须是InnoDB型 ,它们不能是临时表。
在引用表中,必须有一个索引,外键列以同样的顺序被列在其中作为第一列。这样一个索引如果不存在,它必须在引用表里被自动创建。
在引用表中,必须有一个索引,被引用的列以同样的顺序被列在其中作为第一列。
不支持对外键列的索引前缀。这样的后果之一是BLOB和TEXT列不被包括在一个外键中, 这是因为对这些列的索引必须总是包含一个前缀长度。
如果CONSTRAINTsymbol 被给出,它在数据库里必须是唯一的。如果它没有被给出,InnoDB自动创建这个名字。
-
关于mysql添加外键的时候报错_MySQL添加外键时报错:1215 Cannot add the foreign key constraint的一个...
2022-05-25 18:09:14 -
Navicat mysql添加外键
2022-03-09 19:59:39外键条件 在我们使用外键的时候,应该遵循如下条件: 1外键要存在,首先必须保证表的引擎是 InnoDB(默认的存储引擎),如果不是 InnoDB 存储引擎,那么外键可以创建成功,但没有约束作用; 2外键字段的字段类型... -
mysql添加外键约束
2021-02-02 14:14:01sd_settle(settle_id) ALTER TABLE scm_material_settle_yd ADD CONSTRAINT material_settle_yd_foreignid FOREIGN KEY(form_id) REFERENCES scm_yd_settle(settle_id) 删除外键: alter table product drop foreign... -
mysql添加外键语句
2020-03-04 09:46:091.添加外键约束:altertable从表addconstraint外键(形如:FK_从表_主表)foreignkey(从表外键字段)references主表(主键字段); 如:alter table t_book add constraint `fk` foreign key (`bookTypeId`) references... -
详解mysql添加外键的方法
2021-01-19 07:27:31本文主要向大家介绍了mysql添加外键的方法,通过具体的实例让大家了解,希望对大家学习mysql有所帮助。为已经添加好的数据表添加外键:语法:altertable 表名 add constraint FK_ID foreign key(你的外键字段名) ... -
MySQL添加外键时报错:ERROR 1452
2021-07-26 21:10:45这个外键不是另一个表的主键,即外键不存在 二.外键存在还是报错,可能是外键勾选了属性NOT NULL,但是这张表里本来已经有数据了,现在新增了一列,这一列肯定是空的,所以又不符合NOT NULL的属性。所以可以先新增... -
MYSQL添加外键
2021-01-25 11:32:28给商品表(从表)添加一个外键ALTER TABLE product ADD CONSTRAINT FK_cno FOREIGN KEY(cno) REFERENCES category(cid 从表);sql语句的执行顺序是:from-->WHERE-->GROUP BY -->HAVING --- >ORDER BY --&... -
MySQL 添加外键
2021-01-31 01:10:32MySQL 添加外键MySQL 添加外键DROP TABLE IF EXISTS `nation`;CREATE TABLE `nation`(`pii_Nation` smallint(2) unsigned NOT NULL default '0',`pii_NatinoName` varchar(40) NOT NULL default '',PRIMARY KEY (`... -
mysql添加外键的4种方式
2019-03-18 16:19:48//添加外键约束: ALTER TABLE student ADD FOREIGN KEY (s_cid) REFERENCES class(cid); //测试 INSERT INTO student VALUES(NULL,'王大锤',2) INSERT INTO student VALUES(NULL,'胡汉三',3) //约束生效 ... -
mysql添加外键失败解决方案
2021-01-19 01:18:38mysql重启命令:[root@wshCentOS centOS7Share]# service mysqld stopRedirecting to /bin/systemctl stop mysqld.service[root@wshCentOS centOS7Share]# systemctl start mysqld.service[root@wshCentOS centOS7... -
解决Mysql添加外键出现1452 - Cannot add ......错误的方法
2021-11-06 16:43:48作为外键的transporter_no有user_no中不存在的数据 一般可能是由于自己之前做测试时随意输入了一些数据,忘记删掉造成的(尴尬) ** 解决: ** 那么知道原因后,开始解决 错误操作:把transporter_no中的数据删掉... -
mysql建立外键
2021-01-20 00:11:20建立外键的前提:本表的列必须与外键类型相同(外键必须是外表主键)。 外键作用: 使两张表形成关联,外键只能引用外表中的列的值! 指定主键关键字: foreign key(列名) 引用外键关键字: references <外键... -
使用Navicat for MySQL添加外键约束
2021-02-02 18:44:51转载:http://blog.csdn.net/u013215018/article/details/54981216现在有两个表一张是Roles表(角色表),一张是RoleUser表(用户角色)现在我想把RoleUser表中的RoleID属性设置为外键,关联Roles表中的RoleID属性。... -
Mysql添加外键约束.
2021-01-18 21:38:54最近学习遇到一条添加外键约束的语句,记录下来.alter table selection add constraint FK_Reference_1 foreign key(course) references course (id) on delete restrict on update restrict;alter table selection ... -
MySQL添加外键报错:列不匹配
2021-08-25 15:10:28MySQL添加外键报错:列不匹配 报错信息 referencing column ‘xx’ and referenced column ‘xx’ in foreign key constraint ‘xx’ are incompatible 原本想将下面两个表的两个字段做外键关联,在使用Navicat... -
mysql添加外键约束的两种方式(重要)
2018-08-22 11:07:10-- 添加外键约束 CREATE TABLE stu( sid INT PRIMARY KEY, NAME VARCHAR(50) NOT NULL ); -- 添加外键约束方式一 CREATE TABLE score1( score DOUBLE, sid INT, CONSTRAINT fk_stu_score1_sid FOREIGN KEY... -
MySQL 添加外键时 的注意事项
2021-03-10 20:16:40MySQL 添加外键时 的注意事项 1.数据库引擎 : InnoDB 2.一表A字段做为二表的外键时。A字段的长度需要和二表的B字段长度一致。 3.A字段需要是一表的主键 MySQL语句 添加外键的SQL语句: CONSTRAINT picture_number ... -
解决MySQL添加外键出现3780-Referencing ...... are incompatible错误的方法
2021-11-06 16:19:11问题: 原因: 两个字段的数据类型不一致 解决步骤: 1.将两个字段的类型、长度都设为一致 没结束!一开始我还自以为万事大吉了,结果还是不行,后来发现… 2.将两个字段的字符集、排序规则也设为一致 ... -
mysql添加外键约束-phpmyadmin
2017-04-24 21:45:29两种方法添加外键,1 终端sql语句添加 2.phpMyAdmin 可视化界面添加(也可以用workbench)下面介绍phpMyAdmin可视化界面添加:三个条件: 使用InnoDB引擎。 必须建立索引(INDEX)。 父键必须是主键(或唯一值),子键表中... -
mysql添加外键语句解释 ALTER TABLE ADD CONSTRAINT FOREIGN KEY() REFERENCES
2022-02-24 18:20:08给sudent表添加约束外键 语句: ALTER TABLE student ADD CONSTRAINT fk_student_userid FOREIGN KEY(userid) REFERENCES USER(id); 意思: 修改表 student 添加约束 fk_student_userid 外键(userid)参照(userid...