本资源为《数据库原理与应用》课程配套实验合集,包含六项核心实验内容,旨在通过实践加深学生对数据库系统设计、实现和管理的理解。
实验1 数据库及数据定义
1. 创建一个名为XSCJ的数据库,其初始大小为5MB,最大大小限制在10MB内,并允许自动增长;每次按当前文件大小增加10%进行扩展。日志文件起始容量设为2MB,最大可增至5MB,增量设置为每增长一次加1MB。
2. 修改XSCJ数据库的主数据文件的最大尺寸设定为无限制状态。
3. 根据教材第82页例题3.5、3.6和3.7建立Student表(学生信息)、Course表(课程信息)以及SC表(选课记录),并录入相应元组至这些表格中。
4. 使用SQL编程模式及设计界面两种方法为Course表增加一列“开课学期”,具体数据类型自行确定。
5. 在Course表的Cname字段上创建一个唯一索引,命名为Cname_idx。
6. 将数据库XSCJ分离并复制其文件到U盘中保存以备下次实验使用;之后再将其附加回去。
7. 删除之前建立在Course表上的唯一性索引Cname_idx。
8. 从数据库删除Student基本表结构和数据信息。
实验2 数据查询
将上次课程创建的学生成绩管理库XSCJ重新连接到SQL SERVER中,然后进行以下几项查询操作:
1) 查询所有选修了至少一门课的学生名单(即列出这些学生的学号)。
2) 显示全部学生的名字和出生年份,并为这两列指定别名为XM及CSNF分别代表姓名与出生年份。
3) 找出年龄介于18至20岁之间的学生们的相关信息,包括他们的学号、名字以及所在系别名称。
4) 搜索IS(信息科学)、MA(数学)和CS(计算机科学)三个专业内所有学生的个人资料及性别详情。
5) 使用LIKE语句查询课程名中含有DB_的全部课程编号及其对应的学分值。
6) 列出拥有成绩记录的所有学生,显示其各自的学号与所修读过的课目代码。
7) 按照系别代号升序排列所有学生的个人信息,并且在同个院系内依照年龄大小排序输出结果集。
8) 计算参与课程学习的学生人数总数。
9) 给定1门特定的科目,求出该科目的平均成绩(以学分加权)。
10) 找到至少有两名或更多学生选修过的所有课目代码列表。
11) 确认某门指定课程的所有先修要求;这里假设每门课程都可能直接依赖于另一些特定的前置条件,即它们是其他某些具体科目必须完成之后才能学习的新内容。
12) 获取每个学生的学号、姓名以及他们所选课目的名称和成绩。
13) 对每一位学生找出其高于平均分的所有科目的代码(包括这门课程的编号)。
实验3 数据更新与视图
将XSCJ数据库重新附加至SQL SERVER环境中,执行以下数据修改及视图创建任务:
1) 向Student表中插入一个新的记录项:学号95007、姓名张娜丽、性别女、所在系IS以及年龄为18岁。
2) 在选课关系SC内添加一条新条目表示学生ID 95007选择了课程编号1的科目。
3) 创建一个视图,该视图为每个学生的学号与他们的总成绩之和提供了一个便捷查询入口。
4) 设计并实现一个新的触发器功能:每当有新的学生被加入系统时,自动生成唯一的标识码作为其新注册用户的学号。
实验5 数据库的完整性
将XSCJ数据库附加到SQL SERVER中,并执行以下任务以测试和验证各种数据完整性的规则:
1) 输入或修改某些记录来检查实体完整性约束的有效性及相应的违约处理机制。
2) 对于参照完整性,通过添加新条目或者改变现有信息来进行同样的实验与观察其作用效果。
3) 定义一些特定字段不允许为空值的设定条件,并测试这些限制是否能正常工作并阻止非法操作的发生。
4) 确保某些属性项在整个数据库范围内具有唯一性并且不会出现重复情况,同时验证该规则的实际执行效率和准确性。
5) 指定默认值给选定列以简化数据输入过程或保证一致性。
6) 使用CHECK短语来限制考试成绩的取值范围在0到100分之间。
7) 设计一个触发器用于Student表,当新增一条学生记录时自动为其分配一个新的学号。
实验6 数据库编程
这一部分要求进行数据库程序的设计与实现。具体内容会根据