《数据库开发与应用》实验指导书
沈阳理工大学应用技术学院
2009年12月
目 录
实验一 数据库和表的操作.......................................................................................... 1 实验二 数据的操作...................................................................................................... 6 实验三 存储过程的操作.............................................................................................. 9 实验四 触发器的使用................................................................................................ 11 实验五 数据库综合设计............................................................................................ 13
实验一 数据库和表的操作
实验目的:
1、 了解SQL SERVER数据库的逻辑结构和物理结构; 2、 掌握SQL SERVER数据库的文件组成; 3、 掌握SQL SERVER数据库中文件组的概念; 4、 了解表的结构和特点;
5、 了解SQL SERVER的基本数据类型;
6、 学会使用结构化查询语句创建和管理数据库和表;
实验内容:
1、 使用sql语句创建最简单的数据库;
2、 使用sql语句创建带条件的数据库,要指定数据文件和日志文件的名称、大小、最大限制和文件增长速度; 3、 为数据库改名;
4、 向数据库中填加、删除一个数据文件; 5、 向数据库中填加一个日志文件;
6、 修改数据库文件的属性:包括文件大小,最大限制,增长方式等; 7、 删除数据库;
8、 在数据库bookborrow中建立3个基本表,实现对表的管理。
具体实验内容:
1、 使用sql语句建立最简单的数据库sqlcourse; 2、 使用sql语句建立数据库school。
包含两个数据库文件和一个日志文件,其中主数据文件的逻辑名为“school_data”,初始大小为10MB, 最大大小为500MB,设置文件自动增长,增长方式为10%;辅助数据文件的逻辑名为“school_data2”,初
1
始大小为2MB, 最大大小为30MB,设置文件自动增长,增长方式为5MB。日志文件的所有限制默认。
3、 为数据库sqlcourse更名为yangguang。
4、 使用sql语句在数据库school中添加和删除一个数据文件。
(1)逻辑名、物理名、初始大小、最大大小自己设计,增长按照MB方式自动增长。
(2)删除数据文件“school_data2”。
5、 使用sql语句在数据库school中添加一个日志文件。
(1)逻辑名、物理名、初始大小、最大大小自己设计,增长按照百分计数方式自动增长。
6、 使用sql语句在数据库school中建立教师表t,学生表s,课程表c,选课表sc和授课表tc。
表1-1 t(教师)表结构
字段名 tno tname tsex tage tprof tsal tcomm tdept 字段类型 varchar varchar varchar smallint varchar smallint smallint varchar 字段宽度 8 10 4 2 10 2 2 20 说明 教师号(非空) 教师姓名(非空) 性别 年龄 职称 工资 岗位津贴 系名
表1-2 s(学生)表结构
字段名 sno sname ssex sage sdept 字段类型 varchar varchar varchar smallint varchar 字段宽度 8 10 4 2 20 说明 学号(非空) 学生姓名(非空) 性别 年龄 系名
2
表1-3 c(课程)表结构 字段名 cno cname ct 字段类型 varchar varchar smallint 表1-4 sc (选课)表结构
字段名 sno cno score 字段类型 varchar varchar smallint 表1-5 tc (授课)表结构 字段名 tno cno 字段类型 varchar varchar 字段宽度 8 8 说明 教师号(非空) 课程号(非空) 字段宽度 8 8 2 说明 学号(非空) 课程号(非空) 成绩 字段宽度 8 20 2 说明 课程号(非空) 课程名(非空) 课时数
7、 使用INSERT INTO语句插入数据
t表 tno t1 t2 t3 t4 t5 tname 李力 王平 刘伟 张雪 张兰 tsex 男 女 男 女 女 tage 47 28 30 51 39 tprof 教授 讲师 讲师 教授 副教授 tsal 1800 850 1000 1900 1500 tcomm 3000 1200 1200 3000 3000 tdept 计算机 信息 计算机 自动化 信息 s表 sno s1 s2 s3 s4 s5 s6
sname 赵亦 钱尔 孙姗 李思 周武 吴丽 ssex 女 男 女 男 男 女 3
sage 17 18 20 21 19 20 sdept 计算机 信息 信息 自动化 计算机 自动化 sc表 sno s1 s1 s2 s2 s2 s3 s3 s4 s4 s5 cno c2 c5 c5 c6 c7 c2 c4 c2 c3 c2 score 85 100 60 80 70 85 85 83 89 c表 cno c1 c2 c3 c4 c5 c6 c7 cname 程序设计 微机原理 数字逻辑 数据结构 数据库 编译原理 操作系统 ct 60 80 60 80 60 60 60
tc表: tno t1 t2 t4 t5 t3 cno c1 c5 c2 c5 c1 4
t3 t2 t4 t5 c5 c7 c3 c7
8、 分别建立5个基本表的主码,建立学生表与选课表,课程表与选课表之间的关系;
9、 限制选课表的成绩列输入的值在0到100之间。 10、 11、
实验报告书写要求: 1、字迹工整,过程清晰。
2、方法与原理分析写本次实验所涉及的理论知识点。 3、实现过程写出创建和修改数据库和基本表的SQL语句。
4、结果分析写出修改后执行的结果,同时对实验过程中遇到的问题作适当分析。 5、实验后一周完成实验报告书写。
5
设置性别的取值或者是‘男’或者是‘女’。 设置课程表中课程时数的初始值为0。
实验二 数据的操作 (查询,修改和删除)
实验目的:
1、 掌握指定列或全部列查询; 2、 掌握按条件查询; 3、 掌握对查询结果排序; 4、 掌握使用聚集函数的查询; 5、 掌握对查询结果分组;
6、 掌握涉及一个以上数据表的查询;
7、 掌握嵌套查询的方法,从而增强SQL的查询能力;
8、 掌握使用UNION操作符将来自不同查询但结构相同的数据集合组合起 来。 实验内容:
1、 完成数据表的创建过程。
2、 对于单个数据表实现多种不同条件的查询。
3、 对于多个表之间实现连接查询,主要包括2种外连接和 带有连接谓词的内连接。
4、 实现嵌套查询操作,同时练习嵌套查询和连接查询之间的互相转换。同时掌握自身连接的查询。
5、 实现集合查询的操作,掌握不同集合操作符的优先级。 具体实验内容:
1、 创建数据库表:(使用实验一的数据表及其数据)
教师表:T; 学生表:S;
6
课程表:C; 选课表:SC; 授课表:TC 2、 查询操作:
(结合实验一的实验一的数据完成各种不同的查询) 2.1 单表查询
⑴查询S表中全体学生的详细记录; ⑵查询所有学生的姓名及其出生年份;
⑶查询考试成绩不及格的学生学号、姓名;(连接) ⑷查询年龄在20-23岁之间的学生姓名、系名、年龄; ⑸查询姓李的学生的姓名、学号和性别;
⑹查询名字中第2个字为“明”字的男学生的姓名和系名;
⑺查询信息系、计算机系学生的姓名、系名,结果按系名升序,姓名降序排序;
⑻查询所有有课程号C2成绩的学生的学号、课程号和成绩,并按成绩降序排序;
⑼查询计算机系学生总人数;
⑽查询选修了微机原理课程的学生人数、平均成绩、最高成绩;(连接) ⑾ 查询各个课程号及相应的选课人数;
⑿ 查询选修了2门以上课程的学生学号、姓名和平均成绩;(连接)。
2.2连接查询
⑴查询所有选课学生的学号、姓名、选课名称及成绩; ⑵查询每门课程的课程号、任课教师姓名及其选课人数; ⑶查询所有比“刘伟”工资高的教师姓名、工资和刘伟的工资; ⑷查询同时选修了“程序设计”和“微机原理”的学生姓名、课程名; ⑸查询所有学生的学号、姓名、选课名称及成绩(没有选课的同学的选课信息显示为空)。
7
2.3嵌套查询
⑴查询与“刘伟”教师职称相同的教师号、姓名和职称; ⑵使用ANY谓词查询讲授课程号为C5 的教师姓名; ⑶使用IN谓词查询讲授课程号为C5的教师姓名;
⑷使用ALL谓词查询其他系中比计算机系所有教师工资都高的教师的姓名、工资和所在系别。
2.4集合查询
⑴查询计算机系的学生姓名及年龄不大于19岁的学生姓名。
实验报告书写要求: 1、字迹工整,过程清晰。
2、方法与原理分析写本次实验所涉及的理论知识点。 3、实现过程写出查询数据表的SQL语句。
4、结果分析写出查询后执行的结果,同时对实验过程中遇到的问题作适当分析。 5、实验后一周完成实验报告书写。
8
实验三 存储过程的操作
实验目的:
1 通过实验掌握存储过程的概念、功能。
2 掌握用户自定义存储过程的创建方法,包括不带参数的,带输入值参数的,带返回值参数的。
3 掌握存储过程和过程语句的结合使用。 4 掌握存储过程的删除的方法。
5 掌握存储过程的执行的方法,包括没有参数的直接使用,带输入参数的使用方法,带输出参数的声明参数并赋值的方法。 实验内容:
1、 创建并执行存储过程
(1) 用SQL语句创建并执行一存储过程Prc_Qsinf:
通过学生学号来查询学生的姓名、年龄、系名。 其中默认学号是“S2”。 (2) 执行存储过程Prc_Qsinf。
查询并显示出默认学号(即S2)和学号为S4学生的姓名和年龄。 (3) 用SQL语句创建一存储过程Pro_Qscore :
通过学生姓名和课程名查询该学生该课程的成绩。 (4) 执行存储过程Pro_Qscore。
查询并显示学生“李思”的“程序设计”课程的成绩。 2、 修改存储过程
(1) 用SQL修改存储过程Prc_Qsinf。
修改要求:把定义中的变量sno_in长度修改为2字节;
sage_out变量类型改为tinyint。
(2) 用SQL修改存储过程Prc_Qsinf。
9
存储过程的定义改为:根据学号查询姓名、性别、系名。
设默认学号为“S1”。
3、 删除存储过程
(1)用SQL删除存储过程Pro_Qscore。 实验报告书写要求: 1、字迹工整,过程清晰。
2、方法与原理分析写本次实验所涉及的理论知识点。 3、实现过程写出创建和修改数据库和基本表的SQL语句。
4、结果分析写出修改后执行的结果,同时对实验过程中遇到的问题作适当分析。 5、实验后一周完成实验报告书写。
10
实验四 触发器的使用
实验目的:
1、 掌握高级查询的使用方法; 2、 学习触发器定义的方法;
3、 分别练习使用插入、修改、删除触发器; 4、 重点掌握使用触发器实现数据表之间的关联。 5、 掌握使用触发器实现级联更新和级联删除操作。 6、 掌握判断不同触发器类型的方法。 实验内容:
1、 创建数据表。 2、 插入数据到数据表。
3、 创建判断是否执行了对数据表有影响的触发器。 4、 创建插入类型的触发器。 5、 创建更新类型的触发器。 6、 创建删除类型的触发器。 具体实验内容:
1、 创建数据表products如下:
表5-1 products 字段名 Productid Ordered quantity 字段类型 int int int 字段宽度 4 4 4 说明 产品编号 订单编号 数量 2、 自行选择5条数据插入到表中。 3、实验题目:
(1) 新建一个触发器tr1:
11
只要向该表中插入数据,就输出“成功录入”信息;
(2) 创建一个插入、更新类型的触发器tr2:
实现只要表中的数据有改变,就用select语句显示查询结果;
(3) 创建一个删除类型的触发器tr3:
建立一个与products表结构一样的表p1,当删除表products中的记录时,自动将删除掉的记录存放到p1表中。
(4) 应用实验一的数据实现级联删除操作,创建触发器tr4:
删除学生表的一个学生的信息,同时删除该学生的选课信息。
(5) 应用实验一的数据实现级联更新操作,创建触发器t5:
更新一门课程的课程号,同时更新选课表和授课表内的该课程的课程号。
实验报告书写要求: 1、字迹工整,过程清晰。
2、方法与原理分析写本次实验所涉及的理论知识点。 3、实现过程写出创建触发器的SQL语句。
4、结果分析写出触发器引发后执行的结果,同时对实验过程中遇到的问题作适当分析。
5、实验后一周完成实验报告书写。
12
实验五 数据库综合设计
实验目的:
1、 掌握SQL 语言在开发工具中的使用;
2、 通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步掌握查询修改等SQL 基本语法的相关内容。
3、 本次实验为综合设计性实验,按照功能自行设计数据库内表,存储过程和触发器。
实验内容:
1、 2、 3、
完成一个系统的设计,同时实现不同功能要求。 要求实现至少2个约束。
要求包括触发器,存储过程和视图的操作。
具体实验内容:
1、 企业人事管理系统
功能要求:人事管理系统应能实现用户的多级管理,并包含数据录入、数据校验、数据修改、数据浏览和各种模糊查询。
2、 学校教材管理系统
功能要求:本系统能对学校所有班级的教材进行征订,对教材的入库、出库进行管理,能进行各种条件的查询,还应具有教材库预警机制(教材库存不够用或教材征订过剩,都能给予提示)。
3、 高校学生成绩管理系统
功能要求:学生成绩管理使教学管理的一个重要环节,本系统能够进行学生成绩登记、成绩的更正、成绩的查询、成绩的汇总及排序,对已毕业学生成绩能存入历史库中,具有良好实用性。
13
4、 图书管理系统
功能要求:本系统能实现对图书入库、出库的管理。用户可以通过终端查询到在库的图书,并且如果图书已借出,可以查询到是谁借出的,在什么时候借的。
5、客房管理系统
功能要求:本系统能对一个宾馆的客房进行管理,用户可以预约、登记、注销客房。对于已预约的客房,不可以再预约或登记,一旦客户入住某客房,可以在此系统中查询到该客户的信息。
6、酒店餐饮管理
功能要求:用户可以通过本系统点餐,可以通过任何一个终端,查询出该菜是哪一桌客户的。最后,客户可以通过终端查询出自己用餐的详单并结帐。
7、工资管理系统
功能要求:财务可以通过该系统分项录入员工的工资,并且可以把工资与出勤情况一致起来,只要给出出勤表,系统可以自动生成员工的工资。员工可以在客户端根据自己的用户名和密码查询到自己的工资。 实验报告书写要求: 1、字迹工整,过程清晰。
2、方法与原理分析写本次实验所涉及的理论知识点。 3、实现过程写出相应关键的SQL语句。
4、结果分析写出部分执行的结果,同时对实验过程中遇到的问题作适当分析。 5、实验后一周完成实验报告书写。
6、本实验内容请各位同学按照自己选择的题目,写出类似的需求内容到实验内
容栏目。具体实验过程请挑选重要的内容写出来,建议写出创建的存储过程和触发器。
14
因篇幅问题不能全部显示,请点此查看更多更全内容