外键创建方式

外键

创建方式一:创建表时加入外键

-- 创建grade表
CREATE TABLE `grade`(
	`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id',
	`grandename` VARCHAR(50) NOT NULL COMMENT '年级名称',
	PRIMARY KEY (`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

-- 创建student表
CREATE TABLE `student` (
  `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
  `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
  `gradeid` INT(10) NOT NULL COMMENT '学生年级',   -- student表的gradeid,引用grade表的gradeid
  PRIMARY KEY  (`id`),
  KEY `FK_gradeid` (`gradeid`),
  CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES grade (`gradeid`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

注意:在删除有外键的表时应先删除引用表(从表),然后删除被引用的表(主表)。(上面应先删除student表,之后在删除grade表)若先删除主表会报错:Cannot delete or update a parent row: a foreign key constraint fails

创建方式二:创建表后,再添加外键约束

-- 创建grade表
CREATE TABLE `grade` (
   `gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级',
   `gradename` VARCHAR(50) NOT NULL COMMENT '年级名称',
   PRIMARY KEY (`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

-- 创建student表
CREATE TABLE `student` (
  `id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '学生id',
  `name` VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '学生姓名',
  `gradeid` INT(10) NOT NULL COMMENT '学生年级',
  PRIMARY KEY  (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

-- 建立外键:ALTER TABLE 从表 ADD CONSTRAINT 约束名 FOREIGN KEY(外键的列名) REFERENCES 主表 (哪个字段);
ALTER TABLE student	
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES grade (`gradeid`);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值