mysql数据库怎么给表添加外键_mysql 数据库添加外键的几种方式

创建主表: 班级

CREATE TABLE class(cid INT PRIMARY KEY AUTO_INCREMENT,

sname VARCHAR(15) NOT NULL)

INSERT INTO class VALUES(NULL,'六年级一班')

INSERT INTO class VALUES(NULL,'六年级二班')

第一种://1.在属性值后面直接添加(有点小问题)

CREATE TABLE student(sid INT AUTO_INCREMENT,

sname VARCHAR(10) NOT NULL,

s_cid INT REFERENCES class(cid),

PRIMARY KEY(sid)

);

//添加数据进行测试

INSERT INTO student VALUES(NULL,'王大锤',2)

INSERT INTO student VALUES(NULL,'胡汉三',3)    //约束不生效,原因待查

INSERT INTO student VALUES(NULL,'卧槽',4)     //不敢相信,在测试一次

这种方式,测试不知道为什么,居然添加进去了  WTF?  在网上百度无果,自学群无回复  暂时先搁置在这儿

第二种://2.在sql语句末端添加

CREATE TABLE student(

sid INT AUTO_INCREMENT,

sname VARCHAR(10),

s_cid INT,

PRIMARY KEY(sid),

FOREIGN KEY (s_cid) REFERENCES class(cid)

);

//插入数据测试一下

INSERT INTO student VALUES(NULL,'王大锤',2)

INSERT INTO student VALUES(NULL,'胡汉三',3)   //约束生效  插入失败

30a527ecf5c2a059cb1a8e4b89fd36be.png

外键约束生效

第三种://3.fk的使用

这种是值下课自己手动收集总结的,理解还不是很到位,一番测试还是弄懂了一点,表中的  fk_子表_父表

CREATE TABLE student(sid INT AUTO_INCREMENT,

sname VARCHAR(10) NOT NULL,

s_cid INT ,

PRIMARY KEY(sid),

CONSTRAINT fk_student_class FOREIGN KEY(s_cid) REFERENCES class(cid)

);

//测试一波 OK

INSERT INTO student VALUES(NULL,'王大锤',2)

INSERT INTO student VALUES(NULL,'胡汉三',3)  //约束生效  插入失败

第四种://4.在建表后添加外键  (教学类容)

CREATE TABLE student(sid INT AUTO_INCREMENT,

sname VARCHAR(10) NOT NULL,

s_cid INT ,

PRIMARY KEY(sid)

);

//添加外键约束:  ALTER TABLE student ADD FOREIGN KEY (s_cid) REFERENCES class(cid);

//测试

INSERT INTO student VALUES(NULL,'王大锤',2)

INSERT INTO student VALUES(NULL,'胡汉三',3)  //约束生效   插入失败

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值