3. 查看、修改表中的约束条件 (1)查看course1表中用户自定义完整性约束条件 SHOW CREATE TABLE course1; (2)删除course1表的ccredit取值范围的约束,删除约束后重新查看course1中的约束情况。 Alter Table *** Drop Constrain ***; (3)在course表中添加约束条件,课程表的每一行的 Cno 与 cpno 不可相同。添加约束后,验证课程当课程名cno与先修课程cpno相同时,能否正常插入课程数据。
时间: 2024-03-18 14:39:04 浏览: 102
1. 查看course1表中用户自定义完整性约束条件:
```sql
SHOW CREATE TABLE course1;
```
2. 删除course1表的ccredit取值范围的约束,删除约束后重新查看course1中的约束情况:
```sql
ALTER TABLE course1 DROP CONSTRAINT ccredit_range_constraint;
SHOW CREATE TABLE course1;
```
3. 在course表中添加约束条件,课程表的每一行的 Cno 与 cpno 不可相同。添加约束后,验证课程当课程名cno与先修课程cpno相同时,能否正常插入课程数据:
```sql
ALTER TABLE course ADD CONSTRAINT cno_cpno_unique_constraint UNIQUE(cno, cpno);
```
然后尝试插入一条cno与cpno相同的数据:
```sql
INSERT INTO course(cno, cname, cpno, ccredit) VALUES('C001', 'Database', 'C001', 3);
```
这会触发约束条件,插入失败并报错。
相关问题
查看、修改表中的约束条件 (1)查看course1表中用户自定义完整性约束条件 SHOW CREATE TABLE course1; (2)删除course1表的ccredit取值范围的约束,删除约束后重新查看course1中的约束情况。 Alter Table *** Drop Constrain ***; (3)在course表中添加约束条件,课程表的每一行的 Cno 与 cpno 不可相同。添加约束后,验证课程当课程名cno与先修课程cpno相同时,能否正常插入课程数据。
1. 查看course1表中用户自定义完整性约束条件可以使用以下 SQL 语句:
SHOW CREATE TABLE course1;
这条语句将会输出 course1 表的创建语句,其中包括用户自定义完整性约束条件。
2. 删除course1表的ccredit取值范围的约束,可以使用以下 SQL 语句:
ALTER TABLE course1 DROP CONSTRAINT 约束名称;
其中,约束名称是指需要删除的约束的名称。删除约束后,可以再次使用 SHOW CREATE TABLE course1; 命令来查看 course1 表中的约束情况。
3. 在course表中添加约束条件,课程表的每一行的 Cno 与 cpno 不可相同,可以使用以下 SQL 语句:
ALTER TABLE course ADD CONSTRAINT cno_cpno_unique UNIQUE (Cno, Cpno);
这条语句将会向 course 表中添加一个名为 cno_cpno_unique 的约束,该约束要求 Cno 和 Cpno 两列的组合值必须唯一。
添加约束后,可以尝试插入一条 Cno 和 Cpno 值相同的数据,例如:
INSERT INTO course (Cno, Cpno, Cname) VALUES ('C001', 'C001', '课程1');
如果插入失败,则说明约束条件生效,否则说明约束条件没有起作用。
(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的学生 注意系统如何处理的,记录实验结果,写出出现此结果的原因。
(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表中引用这些记录的外键。
阅读全文