数据库表结构设计与操作

需积分: 0 0 下载量 120 浏览量 更新于2024-08-04 收藏 19KB DOCX 举报
本次作业涉及的是SQL数据库设计和操作,主要包含了创建表、删除约束、添加新约束以及数据插入和删除等操作。 在SQL中,`CREATE TABLE`语句用于创建新的数据库表。题目中创建了三个表:Stu_Union(学生),Course(课程)和SC(学生选课)。在Stu_Union表中,sno(学生编号)是主键且唯一,其他字段如sname(学生姓名)、ssex(性别)、SAGE(年龄)和sdept(系别)也定义了。Course表中,cno(课程编号)为主键且唯一,cname(课程名称)和cpoints(学分)是课程的基本信息。SC表用来表示学生选课关系,sno和cno分别引用Stu_Union和Course的主键,并定义了一个复合主键(sno, cno),表示一个学生可以选择多门课程,一门课程可以被多个学生选择。 接下来,对SC表的操作涉及到外键约束的管理。`ALTER TABLE SC DROP [FK__SC__sno__05D8E0BE]` 和 `ALTER TABLE SC DROP [FK__SC__cno__06CD04F7]` 是删除两个外键约束,这两个约束分别对应了sno和cno到Stu_Union和Course的引用。然后,使用`ALTER TABLE`和`FOREIGN KEY`重新添加了外键约束,但这次在删除关联记录时设置为`NO ACTION`,这意味着如果尝试删除一个在SC表中有引用的Stu_Union或Course记录,系统将不会执行删除操作,而是抛出错误。 接着,通过`INSERT INTO`语句向Stu_Union和Course表中插入了数据,创建了一个学生李敏和一门名为“Computer Networks”的课程。最后,尝试使用`DELETE FROM`语句删除学生李敏的记录,但遇到了错误。这是因为删除Stu_Union中的记录会违反SC表中的外键约束,因为李敏已选修了'0001'号课程。 错误消息547表明,尝试执行的删除操作与存在的外键约束冲突。在SQL中,当一个记录被删除而这个记录在其他表中被引用时,如果不允许级联删除(在新建外键约束时使用了`ON DELETE CASCADE`),那么这个操作就会失败。在这个例子中,由于设置了`ON DELETE NO ACTION`,因此删除Stu_Union中的记录会导致错误,因为SC表中仍然有引用该记录的数据。 总结来说,这个作业主要涵盖了以下几个知识点: 1. SQL基本语法:创建表、插入数据、删除数据。 2. 数据库表的设计:主键、唯一性约束、外键约束。 3. 外键约束的管理:创建、删除及外键的行为配置(如级联删除和禁止删除)。 4. 数据库操作的错误处理:理解并解决外键约束冲突。
2021-12-31 上传