
数据库表结构设计与操作
下载需积分: 0 | 19KB |
更新于2024-08-04
| 13 浏览量 | 举报
收藏
本次作业涉及的是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. 数据库操作的错误处理:理解并解决外键约束冲突。
相关推荐








ShenPlanck
- 粉丝: 1935
最新资源
- Oracle Data Integrator (ODI) 入门教程与实践指南
- 《运筹学》课件与实验教程概览
- cximage:图像处理领域的强大开源类库
- C#类库Metro:简化网络开发与分析工具
- Sybase ASE中文版参考手册全解
- 林信良著作:良葛格Java学习笔记及JDK 5.0详解
- HIT ACM 2008秋季周赛1概览与分析
- 实用JSP+JavaBean示例教程,初学者的福音
- XPTable源码解析:定制化ListView组件功能实现
- JavaScript经典特效及其源码电子书下载
- 分享jslint.js压缩包及其使用方法
- MTK学习资料入门指南
- 完整版三套ABAP开发电子书集锦
- AJAX个人站点整站源代码:最新动态更新与兼容设计
- ASP实现无限级分类功能的技术解析
- 探索SecureCRT-v5.05H:强大终端仿真器支持IPv6标准
- 宠物诊所管理系统的Java开发项目介绍
- 基于C#开发的简易个人记事本应用介绍
- VC++与Access构建高校学生成绩管理
- 分享PHP入门高效学习方法
- Perl 6深度解析:技术预览与语言重构
- 深入解析uCOSII操作系统源码包
- 掌握Perl语言网络编程技巧与实践
- 掌握Sturts2.0+Hibernate+Spring快速入门