数据库实验题.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
### 数据库实验题知识点解析 #### 实验一:交互式SQL的使用实验要求与解析 **1. 创建数据库与表结构** - **创建Student数据库**:主要包括`Students`(学生)、`Courses`(课程)、`SC`(选课)三个表。 - `Students(SNO, SNAME, SEX, BDATE, HEIGHT, DEPARTMENT)`:其中`SNO`为主键,`SEX`和`DEPARTMENT`分别为性别和所在部门。 - `Courses(CNO, CNAME, LHOUR, CREDIT, SEMESTER)`:其中`CNO`为主键,`LHOUR`为上课时长,`CREDIT`为学分,`SEMESTER`为学期。 - `SC(SNO, CNO, GRADE)`:其中`SNO`和`CNO`共同作为主键,`GRADE`为成绩。`SNO`和`CNO`分别为外键关联`Students`表中的`SNO`和`Courses`表中的`CNO`。 - **插入数据**:根据实际情况填充每个表的数据。 **2. 查询与更新要求** - **查询示例**: - **查询身高大于1.80m的男生的学号和姓名**:可以使用`SELECT SNO, SNAME FROM Students WHERE SEX = '男' AND HEIGHT > 1.80;` - **查询计算机系秋季所开课程的课程号和学分数**:使用`SELECT CNO, CREDIT FROM Courses WHERE DEPARTMENT = '计算机系' AND SEMESTER = '秋季';` - **查询选修计算机系秋季所开课程的男生的姓名、课程号、学分数、成绩**:通过连接`Students`, `Courses`, `SC`三个表来实现:`SELECT S.SNAME, SC.CNO, C.CREDIT, SC.GRADE FROM Students S INNER JOIN SC ON S.SNO = SC.SNO INNER JOIN Courses C ON SC.CNO = C.CNO WHERE S.SEX = '男' AND C.DEPARTMENT = '计算机系' AND C.SEMESTER = '秋季';` - **更新示例**: - **在`STUDENT`和`SC`关系中,删去SNO以‘01’开头的所有记录**:使用`DELETE FROM Student WHERE SNO LIKE '01%'; DELETE FROM SC WHERE SNO LIKE '01%';` - **在`STUDENT`关系中增加以下记录**:例如`INSERT INTO Student (SNO, SNAME, SEX, BDATE, HEIGHT, DEPARTMENT) VALUES ('010001', '张三', '男', '1995-01-01', 1.75, '计算机系');` - **将课程CS-221的学分数增为3,讲课时数增为60**:`UPDATE Courses SET CREDIT = 3, LHOUR = 60 WHERE CNO = 'CS-221';` **3. 补充题解析** - **统计各系的男生和女生的人数**:使用`GROUP BY`和`COUNT()`函数:`SELECT DEPARTMENT, SEX, COUNT(*) AS COUNT FROM Students GROUP BY DEPARTMENT, SEX;` - **列出学习过‘编译原理’,‘数据库’或‘体系结构’课程,且这些课程的成绩之一在90分以上的学生的名字**:使用`IN`和`GROUP BY`结合`HAVING`子句:`SELECT S.SNAME FROM Students S INNER JOIN SC ON S.SNO = SC.SNO INNER JOIN Courses C ON SC.CNO = C.CNO WHERE C.CNAME IN ('编译原理', '数据库', '体系结构') GROUP BY S.SNAME HAVING MAX(SC.GRADE) >= 90;` **4. 选做题** - **对每门课增加“先修课程”的属性**:可以在`Courses`表中添加一个新列`PRE_REQ`,用于存储先修课程的课程号。 - **查询示例**:例如查询有资格选修数据库课程的所有学生:`SELECT DISTINCT S.SNAME FROM Students S INNER JOIN SC ON S.SNO = SC.SNO INNER JOIN Courses C ON SC.CNO = C.CNO WHERE C.PRE_REQ IN (SELECT CNO FROM Courses WHERE CNAME = '数据库') AND SC.GRADE >= 60;` #### 实验二:数据库的安全和完整性约束 **1. 新增表和视图** - **新增表`Credits`**:用于存储每名学生通过选修课程的合计学分数和不及格的课程数。 - **创建视图`Student_Grade`**:包含学生选修课程及成绩的详细信息。 **2. 触发器** - **触发器`Upd_Credit`**:当在`SC`表中插入一条选课成绩时,自动触发更新`Credits`表中的合计学分数和不及格课程数。 - **触发器`Upd_StuView`**:当对视图`Student_Grade`进行插入数据项操作时,自动触发对`SC`表的插入操作,并检查学生和课程是否已存在于`Students`和`Courses`表中。 **3. 安全机制设计** - **创建用户**:分别为学生、老师、教务员创建三个不同的用户,并设置相应的登录密码。 - **权限分配**: - 学生:只允许查询课程信息和个人成绩。 - 老师:查询学生信息、成绩信息和课程信息。 - 教务员:查询和修改学生信息和课程信息。 #### 实验三:SQL编程 **1. 创建存储过程** - **创建存储过程`Add_Student`**:用于向`Students`表中添加新的学生信息。 - 输入参数:`SNO`(学号)、`SNAME`(姓名)、`SEX`(性别)等。 - 功能:根据输入参数将新学生信息插入到`Students`表中。
- 粉丝: 4
- 资源: 7万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ingress.yaml
- LabVIEW练习44,计算学生三门课(语文,数学,英语)的平均分,并根据平均分划分成绩等级
- densenet模型-基于深度学习对时尚配饰识别-不含数据集图片-含逐行注释和说明文档.zip
- 【C语音期末/课程设计】银行客户管理系统(DevC项目)
- densenet模型-基于深度学习识别电子产品-不含数据集图片-含逐行注释和说明文档.zip
- shufflenet模型-基于卷积神经网络识别地理特征-不含数据集图片-含逐行注释和说明文档.zip
- 西北工业大学编译原理试点班大作业-实现一个能够正常工作的Sysy语法编译器+源代码+文档说明+实验报告
- shufflenet模型-图像分类算法对农作物种类识别-不含数据集图片-含逐行注释和说明文档.zip
- alexnet模型-基于深度学习对交通工具识别-不含数据集图片-含逐行注释和说明文档.zip
- shufflenet模型-基于卷积神经网络识别书籍-不含数据集图片-含逐行注释和说明文档.zip