(2) Course1 表数据的输入 Cno Cname Cpno Ccredit 1081 c程序设计 NULL 4 1082 高等数学 NULL 6 NULL 大学英语 NULL 5 1091 离散数学 1082 2 1092 Java程序设计 1085 4 (3) SC1 表数据的输入 Sno Cno Grade 3001 1081 90 3001 NULL 79 3001 1081 88 3002 1091 120 3003 1092 60 3002 1082 NULL ① 分别输入上述数据,记录出现的问题。 ② 用select * from XXX 查看输入的数据,说明出现问题的原因,给出解决方案。 3. 查看、修改表中的约束条件 (1)查看course1表中用户自定义完整性约束条件 SHOW CREATE TABLE course1; (2)删除course1表的ccredit取值范围的约束,删除约束后重新查看course1中的约束情况。 Alter Table *** Drop Constrain ***; (3)在course表中添加约束条件,课程表的每一行的 Cno 与 cpno 不可相同。添加约束后,验证课程当课程名cno与先修课程cpno相同时,能否正常插入课程数据。 4. 验证在数据更新时参照完整性约束是否有效 (1) 用UPDATE语句将student1 表的Sno 3001 改为 4001。 注意系统如何处理的,记录实验结果,写出出现此结果的原因。 (2)删除student1 表中学号为的 3001 ,3002的学生 注意系统如何处理的,记录实验结果,写出出现此结果的原因。
时间: 2024-02-23 09:02:05 浏览: 130
(1)数据输入出现的问题:
在Course1表中,第一行的Cpno属性被设置为NULL,但是它应该是一个引用Course1表的Cno属性。应该将第一行的数据更改为:
```
('1081', 'c程序设计', NULL, 4)
```
在SC1表中,第二行的Cno属性被设置为NULL,但是它应该引用Course1表的Cno属性。应该将第二行的数据更改为:
```
('3001', NULL, 79)
```
此外,第三行的Grade属性的值为120,但是根据约束条件,Grade属性的值只能在0-100之间,因此应该将它的值更改为100。
(2)查看输入的数据出现问题的原因及解决方案:
在输入数据时,出现重复的主键Sno '3001'。这是因为在输入第五行数据时,Sno属性的值被重复输入了。解决方案是修改输入数据,确保不会出现重复的主键。
3.查看、修改表中的约束条件:
(1)查看Course1表中用户自定义完整性约束条件:
```
SHOW CREATE TABLE Course1;
```
(2)删除Course1表的Ccredit取值范围的约束,删除约束后重新查看Course1中的约束情况:
```
ALTER TABLE Course1 DROP CHECK Ccredit BETWEEN 1 AND 6;
SHOW CREATE TABLE Course1;
```
(3)在Course1表中添加约束条件,课程表的每一行的Cno与Cpno不可相同。添加约束后,验证课程当课程名Cno与先修课程Cpno相同时,能否正常插入课程数据:
```
ALTER TABLE Course1 ADD CONSTRAINT chk_cno_cpno UNIQUE (Cno, Cpno);
```
当插入一个Cno和Cpno都相同的记录时,会出现违反完整性约束的错误。
4.验证在数据更新时参照完整性约束是否有效:
(1)用UPDATE语句将Student1表的Sno '3001' 改为 '4001'。实验结果是更新成功,系统不会检查Sno是否存在于SC1表中的外键约束中。这是因为更新操作不会涉及到外键约束。
(2)删除Student1表中学号为'3001'和'3002'的学生。实验结果是删除失败,系统会检查Sno是否存在于SC1表中的外键约束中。这是因为删除操作涉及到了外键约束。如果要删除这些记录,必须先删除SC1表中引用这些记录的外键。
阅读全文