数据库表结构设计与操作
需积分: 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-02-06 上传
2022-08-03 上传
2023-11-19 上传
2022-08-08 上传
2022-08-08 上传
2022-08-08 上传
2022-08-04 上传
ShenPlanck
- 粉丝: 951
- 资源: 343
最新资源
- katarina
- conflict-practice-debbiev123:让我们解决一些冲突
- warrio:warr.io 的投资组合网站
- Amplifyapp
- Kaue-G:关于我
- conflict-practice-arnitha-b:让我们解决一些冲突
- 行业文档-设计装置-一种切纸机高精度定位装置.zip
- CordovaIonicMobileFirst:我的演示文稿的回购-等待-Cordova和Ionic和MobileFirst
- 基于Mixare,使用OpenGL重写了Mixare的算法。.zip
- STM32编程实现直流有刷电机位置速度电流三闭环PID控制.zip
- decimal-to-roman-converter
- trailer-marvel:Aqui se passa a ordem dos filmes da marvel e junto os预告片
- 前端基础在线2021年1月
- 移远4G网络模块开发设计资料
- ngtrumbitta-services-lodash:将Lodash注入任何Angular应用程序中,并通过旧的_处理程序使用它
- 基于react+parcel和vue+webpack的通用领卷系统.zip