用insert语句(或者update语句)对StuCourse表进行更新操作(具体数据自行举例)②外码取值不在被参照主码的取值范围内的情况,观察执行结果。
时间: 2024-02-12 12:06:03 浏览: 61
假设StuCourse表的结构如下:
```
StuCourse(
sid INT, -- 学生编号
cid INT, -- 课程编号
grade INT, -- 成绩
PRIMARY KEY(sid, cid),
FOREIGN KEY(sid) REFERENCES Student(id),
FOREIGN KEY(cid) REFERENCES Course(id)
);
```
假设我们尝试插入一条记录,将cid设置为一个不存在于Course表中的值:
```
INSERT INTO StuCourse(sid, cid, grade) VALUES (1001, 9999, 85);
```
则会抛出以下错误:
```
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`database`.`StuCourse`, CONSTRAINT `StuCourse_ibfk_2` FOREIGN KEY (`cid`) REFERENCES `Course` (`id`))
```
这是因为StuCourse表的cid列是一个外码,参照Course表的id列。而我们在插入记录时将cid列值设为了9999,这个值在Course表中不存在,违反了外码的完整性约束。因此,数据库系统拒绝了该插入操作。
相关问题
参照完整性: (2)FOREIGN KEY 用insert语句(或者update语句)对StuCourse表进行更新操作(具体数据自行举例),观察执行结果。 ①外码为null的情况
假设StuCourse表的结构如下:
```
StuCourse(
sid INT, -- 学生编号
cid INT, -- 课程编号
grade INT, -- 成绩
PRIMARY KEY(sid, cid),
FOREIGN KEY(sid) REFERENCES Student(id),
FOREIGN KEY(cid) REFERENCES Course(id)
);
```
如果我们尝试插入一条外码为null的记录,例如:
```
INSERT INTO StuCourse(sid, cid, grade) VALUES (1001, NULL, 85);
```
则会抛出以下错误:
```
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`database`.`StuCourse`, CONSTRAINT `StuCourse_ibfk_2` FOREIGN KEY (`cid`) REFERENCES `Course` (`id`))
```
这是因为StuCourse表的cid列是一个外码,参照Course表的id列。而我们在插入记录时将cid列值设为了NULL,这违反了外码的完整性约束。因此,数据库系统拒绝了该插入操作。
把stucourse表中所有课程的学分(credit)加5
好的,将stucourse表中所有课程的学分加5的SQL语句如下:
```
UPDATE stucourse SET credit = credit + 5;
```
执行该SQL语句后,stucourse表中所有课程的学分都会加5。请注意,这里假设stucourse表的字段名为course_id、course_name和credit,如果你的表结构不同,请相应修改SQL语句。
阅读全文