北科大数据库上机实验报告
- 格式:docx
- 大小:1.18 MB
- 文档页数:28
学院:自动化
班级:
学号:
学生签名:
2015年4月
实验一
(1)练习启动、停止和暂停服务管理器。
(2)启动并使用 SQL Server 2000 企业管理器
categories表内容
查询categories
成绩分类程序及结果
实验二
(1)使用企业管理器,查看master数据库中sysdatebases表
与sysobjects表等数据表中的数据信息。
sysdatebases表中数据信息
sysobjects表中数据信息
选择sysobjects中name,xtype 列
(2)使用企业管理器,查看pubs数据库中authors表与employee
表的数据信息。
查看authors信息
查看employee信息
(3)使用企业管理器中的“创建数据库向导”创建一个数据库,
名称为Test。
Test数据库按照model模板来进行创建的,但多一个数据库关系图
(4)分别使用企业管理器和CREATE DATABASE 语句创建一个学
生选课数据库,名称为StuMIS
程序截图:
创建结果:
(5)在查询分析器中,使用系统存储过程sp_helpdb来查看系
统中的数据库信息,执行以下语句,并观察结果。
(5)在查询分析器中为StuMIS数据库增加一个辅助数据文件,
命名为Stu_Data2,初始大小、最大容量、增长速率等分别为1M、
5M、10%。
程序截图:
创建文件截图:
(6)分离数据库 StuMIS,将分离出来的数据文件和事务日志文
件复制到 C:\,然后将 C:\下的数据文件和事务日志文件附加到
SQL Server 服务器。
分离成功:
重新附加:
实验三
(1))在数据库StuMIS中,根据分析需要如下三个数据表:
(2)在企业管理器中创建和管理数据表
1)根据以上表结构在企业管理器中创建上述三个数据表,并保存。
创建“学生表”
创建“课程表”
创建“选修表”
2)用企业管理器修改课程表的课程名字段的长度,修改为
varchar(20)。
3)用企业管理器为学生表添加一个身份证号码列。
4)删除所建立的上述三个表
(3)在查询分析器中使用命令创建和管理数据表:
1)在查询分析器中利用CREATE TABLE命令创建上述三个表。
创建成功:
2)在查询分析器中利用ATER TABLE命令为选修表建立两个外键约束,
一个是与学生表的学号属性列之间的外键约束,另一个是与课程表的
课程号属性列之间的外键约束。
添加外键成功:
3)利用ATER TABLE命令为选修表的分数列建立一个检查约束,分数
在0到100之间。
添加约束成功:
4)在学生表中加入“入学时间”列,其数据类型为日期型。
添加成功:
5)将上面加入的列删除掉。
删除成功:
(4)向StuMIS数据库的各个表中插入数据
1)使用企业管理器为学生表和课程表输入表12-4和表12-5中的数
据。
2)在查询分析器中使用INSERT INTO TABLE命令为选修表输入表12-6
数据:
程序及结果截图:
(5)分别利用企业管理器和T-SQL语句创建一个性别默认值对
象,设定性别的默认值为“男”,并将默认值绑定到学生表的性
别列上。然后在表中插入一条新记录,观察其性别属性是否是默
认值。最后将默认值松绑后删除。
默认值变成‘男’
解除绑定:
再次验证:
(6)
分别利用企业管理器和T-SQL语句创建一个成绩规则对象,
将成绩范围设定为0-100之间,并将该规则绑定到选修表的成绩
列上。然后在选修表中插入一条新记录,将该记录的成绩设置为
105,观察系统是否提示出错;再设置成绩值为90,观察结果。
最后将规则松绑后删除。
规则约束:
报错:
输入90分时,正常录入
删除规则:
(9)索引的创建与管理
1)在创建三个数据表时我们已经指定了主键,所以系统会自动在主
键列上创建聚集唯一性索引。在企业管理器中查看这三个表中自动创
建的聚集索引。
2)在查询分析器中将学生表的主键约束删除,然后再查看学生表上
的聚集索引是否还存在?
索引仍然存在,但已经不可用
3)用T-SQL 语句为选修表的成绩字段建立非聚集索引,并按降序排
序。
降序排序:
实验4:
(1)根据学生、课程、选修三张表完成以下查询:
1) 查询所有学生的基本信息,并按年龄升序排列。
2) 查询女同学的信息和女同学的人数。
3) 查询“王”姓学生的信息。
4) 所有选课学生的姓名、选修课程名及成绩。
5) 不及格学生的姓名。
7) 查询与“孙东方”同一个系的学生情况。
8) 查询选修了“英语”课的学生的学号和姓名。
9) 使用统计函数计算选课成绩表中每门课的最高分、最低分和平均
分。
10)查询各门课程的选课人数。
(2)视图的创建与管理:
1) 创建视图v_c,显示“计算机”系学生基本情况。
2) 创建视图v1,查看“计算机”系的所有学生及成绩情况的视图,
要求显示学生的学号、姓名、所在系、课程名称、课程的成绩。
3) 创建视图v3,显示各位学生选修课程的门数、平均成绩、学号
和姓名。
4) 从视图v1中查询选修了“英语”课程的学生的学号,姓名,所
在系,课程成绩;
5) 在视图v_c中,添加一条新记录:95010,李大伟,20,男,计
算机。
6) 在视图v1中,删除学号为95001的学生的记录,可否实现?原
因是什么?
不能,因为视图并没有存储空间,只是表的逻辑表示,因此没有权限来修改基表
中的数据。
实验5:
(1)使用 T-SQL 语句创建和执行存储过程
1)在数据库StuMIS中创建存储过程 proc_score,用于查询所有选
修“04”号课程的学生成绩信息。
2)在数据库StuMIS中创建存储过程 proc_insert,用于向学生表中
插入新记录。
3)在数据库StuMIS中创建存储过程 proc_list,列出指定课程的成
绩排名表。
4)在数据库StuMIS中创建存储过程 proc_avg,查询指定课程的平
均分。
(2)为学生表创建一个 UPDATE 触发器,当某位学生的学号改
变时,级联更新选修表中匹配记录的学号信息。
USE StuMIS
GO
CREATE TRIGGER tri_update_grade ON 学生
FOR UPDATE
AS
DECLARE @oldsno char(5),@newsno char(5)
SELECT @oldsno=deleted.学号,@newsno=inserted.学号
FROM deleted,inserted
WHERE deleted.姓名=inserted. 姓名
UPDATE 选修 SET 学号=@newsno WHERE 学号=@oldsno
在查询分析其中输入如下语句来测试 UPDATE触发器:
UPDATE 学生 SET 学号='95012' WHERE 学号= '95001'
学生表发生了改变:
选修表也发生了改变
(3)为学生表创建一个DELETE触发器,当某学生信息被删除时,
将其在选修表中相匹配的记录删除掉。
USE StuMIS
GO
CREATE TRIGGER tri_delete ON 学生
FOR DELETE
AS
DECLARE @sno char(5)
SELECT @sno=deleted.学号 FROM deleted
DELETE FROM 选修 WHERE 学号=@sno
在查询分析其中输入如下语句来测试 UPDATE触发器:
DELETE FROM 学生WHERE 学号='95002'
学生表’95002’已经删除:
选修表中’95002’也已经全部删去:
(4)请编写一个内嵌表值函数:根据输入的课程号,输出选修
这门课的学生姓名及其取得的分数。