《数据库原理与应用》实验报告书I.docx
《《数据库原理与应用》实验报告书I.docx》由会员分享,可在线阅读,更多相关《《数据库原理与应用》实验报告书I.docx(18页珍藏版)》请在冰豆网上搜索。
《数据库原理与应用》实验报告书I
《数据库原理与应用》
实验报告I
(2011—2012学年第二学期)
班级:
学号:
姓名:
教师:
陈培正
医药信息工程学院·数据决策
2012年2月
目录
实验一熟悉ACCESS及SQLServer2005的基本操作1
实验三数据库、表的创建、修改及删除3
实验五连接查询和嵌套查询7
实验七数据的插入、修改、删除9
实验九SQLServer数据库的安全性控制11
实验十一触发器的使用13
实验十三PowerDesigner中概念模型与物理模型的设计15
实验十五存储过程的使用16
附录:
SchooI数据库说明18
实验一熟悉ACCESS及SQLServer2005的基本操作
一、实验目的
1.熟知机房用机安全规则。
2.通过上机操作,加深对数据库系统理论知识的理解;通过使用具体的DBMS,了解一种实际的数据库管理系统,并掌握其操作技术;通过对实际题目的上机实验,提高手动能力,提高分析问题和解决问题的能力。
3.用ACCESS创建数据库,体会数据库的功能。
4.熟悉SQLServer2005企业版的安装过程。
掌握SQLServer2005相关服务的启动、退出。
5.初步了解数据库的概念,用ACCESS创建数据库,体会数据库的功能。
6.熟悉SQLServerManagementStudio环境,掌握数据库服务器的注册、配置、连接等操作。
注意:
每次实验过程中创建的各种数据库及其他一切档案,建议同学们都保存好,以备接下来的实验课中使用。
每次上课前,请也请带上之前实验课的数据备份。
二、实验内容及要求
1.上网搜索能够正常安装的SQLServer2005的软件。
有条件的同学,课后可在个人电脑上安装SQLServer2005,建议XP操作系统安装个人版,Server操作系统安装企业版。
SQLServer2005的安装说明见《SQLServer2005精简版的安装》或上网搜索相应电子教程。
安装过程请参看实验指导或者相关视频。
2.了解数据库的相关概念。
通过实践初步了解使用SQLServerManagement的使用。
3.请根据联机丛书查询如何“创建数据库”,查询内容包括创建数据库前的准备工作,创建数据库的命令,以及数据库文件的组成。
请把你的结果写在下面。
4.创建服务器组,在此组上查看有哪些数据库及数据库对象,请记录下来。
5.利用ACCESS创建数据库。
(1)。
在ACCESS中创建一个“学生-课程数据库”,含以下三个表:
学生(学号,姓名,性别,年龄,所在系)课程(课程号,课程名)选课(学号,课程号,成绩)
每个表输入10条数据。
(2)。
数据库保存在以“自己学号+名字”命名的文件夹中。
请掌握ACCESS创建数据库的方法,体会数据库的二维结构,请写下建立数据库的主要步骤。
6。
掌握SQLServer2005的启动、退出、暂停,组成配置,基本工具及常用操作。
请简要叙述SQLServer2005的基本组件和基本工具。
三、实验小结
结合本次实验,思考以下问题:
1.通讯录为什么要采用这种由行和列二维结构组成的格式?
其中每一列表示什么意思,每一行又表示什么意思?
2.比较分析ACCESS和SQLSERVER两种数据库,各适用于什么情况?
3.常用数据库有哪些?
当下比较流行的又有哪些?
实验三数据库、表的创建、修改及删除
一、实验目的
1.进一步掌握ManagementStudio的使用;了解SQLServer数据库的逻辑结构和物理结构。
2.掌握SQL图形用户界面创建、修改、删除数据库、表;掌握SQL中CreateDatabase、DropDatabase命令的使用。
3.掌握如何在表中添加、修改、删除数据;掌握SQL中CreateTable、AlterTable、DropTable命令的使用。
4.理解SQL中的标识列、计算列和各种约束。
5.了解表的结构特点;掌握在SSMS(SQLServerManagementStudio)中修改表的定义。
6.掌握使用T-SQL命令修改表的定义、删除表。
二、实验内容
1.用ManagementStudio创建数据库
(1)创建数据库bookdb,bookdb数据库采用系统提供的默认设置;查看数据库相关参数设置。
(2)删除bookdb数据库。
(3)使用T-SQL命令创建数据库EDUC,EDUC如下表:
数据文件
日志文件
逻辑名
EDUC_dat
EDUC_log
物理文件名
C:
\EDUC_DAT.MDF
C:
\EDUC_LOG.LDF
初始长度
4MB
1MB
最大长度
10MB
无限制
增量
1MB
10%
在EDUC中创建三个表,分别为Student,Course,SC。
三个表的的字段名、类型以及长度请参看下表:
Student:
字段名
类型
长度
主键
允许空
含义
Sno
Varchar
20
Y
N
学号
Sname
Varchar
10
N
姓名
Sage
Int
年龄
Ssex
Varchar
2
性别
Sdept
Varchar
30
所在系
Course:
字段名
类型
长度
主键
允许空
含义
Cno
Varchar
15
Y
N
课程号
Cname
Varchar
30
课程名
Cpno
Varchar
15
先行课
Ccredit
Int
学分
SC:
字段名
类型
长度
主键
允许空
含义
Sno
Varchar
20
Y
N
学号
Cno
Varchar
15
Y
N
课程号
Grade
Decimal
9,2
成绩
2.请在各表中添加数据
对于Student表,请自行输入如下数据
3.请把student表中的0110号同学的年龄改为25。
4.请删除学号为0106号的同学。
5.请把上述操作在使用SQL语句完成一遍。
包括创建数据库EDUC和删除数据库,创建数据表student、course、sc。
6.使用SQL语句对数据库EDUC中的数据表的定义进行修改。
注意:
每次实验过程中创建的各种数据库及其他一切档案,建议同学们都保存好,以备接下来的实验课中使用。
每次上课前,请也请带上之前实验课的数据备份。
三、实验要求
(一)、数据库、表的创建及删除
1.将数据库bookdb的相关属性,填入下表:
项目
内容
数据库所有者
数据库名称
数据库逻辑文件名
数据文件物理存放位置
数据库初始大小
可用空间(数据文件最大值)
数据文件增长量
日志逻辑文件名
日志文件物理存放位置
日志文件初始大小
日志文件可用空间
日志文件增长量
根据“二、实验内容”的要求,使用T-SQL命令创建/删除数据库EDUC,创建数据表student、course、sc。
2.删除bookdb数据库。
3.创建数据库EDUC。
4.创建数据表Student。
5.创建数据表Course。
6.创建数据表SC。
(二)、修改基本表的定义
1.修改列属性
(1)用SSMS将Student表中的Birthday字段设为不能为空(notnull)。
(2)用SQL语句将Student表中的属性Snovarchar(20)改成char(8)类型。
2.添加列
(1)用SSMS在Course表中添加一列year,类型为varchar(4),默认置为空。
(2)用SQL语句在year字段添加约束,year的属性值在2006-2012之间。
3.删除列
(1)用SQL语句将Course表中的year字段删除。
四、实验小结
1.体会创建数据库、表的两种方式,有什么不同?
各有什么优缺点?
各适用于什么情况?
2.试述T-SQL的特点。
3.试述T-SQL的定义功能。
实验五连接查询和嵌套查询
一、实验目的
1.掌握ManagementStudio的使用。
2.掌握SQL中连接查询和嵌套查询的使用。
二、实验内容及要求
用SQL语句完成下列查询。
使用数据库为老师提供的SCHOOL数据库。
1.找出所有任教“数据库”的教师的姓名。
2.取出学号为“980101011”的学生选修的课程号和课程名。
3.“涂杰杰”所选修的全部课程号及成绩。
(注意:
school中有同名,即有两名学生叫“涂杰杰”。
)
4.C语言成绩比数据结构成绩好的学生(自身连接)。
5.显示所有课程的选修情况(外连接)。
6.检索选修课程号为“0109”或“0111”的学生学号、姓名和所在班级。
7.查询“0203”课程的最高分的学生的学号。
8.没有选修以“01”开头的课程的学生信息。
(用子查询完成。
提示notin或notexists)
9.找出“苏贤兴”同学所学课程的名称和成绩。
(请使用连接查询和嵌套查询分别来完成)
三、实验小结
1.思考简单查询、连接查询与嵌套查询有什么不同?
连接查询与嵌套查询有何区别与联系?
2.此次实验中得到的哪些经验教训、疑难问题?
有什么心得或总结?
实验七数据的插入、修改、删除
一、实验目的
1.掌握ManagementStudio的使用。
2.掌握SQL中INSERT、UPDATE、DELETE命令的使用。
二、实验内容及要求
用SQL语句完成下列功能。
使用数据库为老师提供的SCHOOL数据库。
l、新开设一门课程,名叫网络安全与防火墙,学时40,编号为“0118”,主要介绍网络的安全与主要的防火墙软件。
2、先建立monitor表,其结构与student表大致一样.包含student表的学号、姓名、性别和班级编号,然后把班级编号为“0101”的学生的相应资料插入到monitor表中。
3、更新所有职称为“助教”的教师职称为“助理教师”。
4、在所有经济系班级的名称前加上“经济系”三个字。
5、学号为“980101005”的学生的“数据结构”课程成绩改为80分。
6、删除studentgrade表中所有成续不及格的记录。
7、删除studentgrade表中学号以“99”开头的学生选修课程的记录。
8、删除课程名为“计算机导论”的课程信息和所有这门课的选课信息
三、实验小结
1.思考Alter与Update,Drop与Delete的区别
2.对数据进行插入、修改、删除时需要注意哪些问题?
3.此次实验中得到的哪些经验教训、疑难问题?
有什么心得或总结?
实验九SQLServer数据库的安全性控制
一、实验目的
1.熟悉通过SQL对数据进行安全控制。
2.掌握GRANT与REVOKE语句的使用,熟悉数据库用户的创建和授权。
二、实验内容
(一)、以上先采用图形用户界面进行设置权限,然后试着采用T-SQL命令方式完成上述设计。
1.设置SQLServer的安全认证模式。
2.设置登录帐户U1,U2,U3,并测试登录。
3.设置数据库用户U1,U2,U3,他们分别能通过登录帐户U1,U2,U3登陆school数据库。
4.为U1账户设置对Student表的权限,让它查询Student,修改除了Stu-id之外的其他字段,并验证。
5.设置数据库角色。
设置数据库角色A1,A1能查询、更新Course表,并把此角色赋予U2并验证U2是否具有此权限。
6.修改U1的权限,让它具有传递性,并传递给U3,并验证。
(二)、远程连接SQLSERVER
1.查看所创建的用户,以及该用户的权限。
2.两人一组,通过SQLSERVER用户创建、权限设置,通过所创建的用户登录目的服务器。
步骤如下:
(1).在服务器端创建SQL登录用户并授权(GRANT、REVOKE);
(2).设置服务器的登录方式:
右键单击树形目录中的SQL服务器->属性->安全性->身份验证:
设置为SQL+Windows;
(3).客户端,新建SQL注册,选择要登录的SQL服务器->连接使用:
SQL登录->输入登录用户名、密码。
(4).测试用户权限(测试服务器授予的各种权限,测试越权行为并分析体会系统的反应)。
三、实验内容及要求
写下4-6题的T-SQL命令。
4.为U1账户设置对Student表的权限,让它查询Student,修改除了Stu-id之外的其他字段,并验证。
5.设置数据库角色。
设置数据库角色A1,A1能查询、更新Course表,并把此角色赋予U2并验证U2是否具有此权限。
6.修改U1的权限,让它具有传递性,并传递给U3,并验证。
四、实验小结
1.思考如何真正实现数据库的安全?
2.此次实验中得到的哪些经验教训、疑难问题?
有什么心得或总结?
实验十一触发器的使用
一、实验目的
1.了解触发器的概念、特点和作用。
2.掌握SQLSERVER2005创建和管理触发器的方法。
二、实验内容及要求
l.为deparment表增加一列teac_num用于统计各个系教师的人数。
2.更新teac_num列,让其正确统计当前数据库中各个系教师的人数。
3.创建一个insert触发器trigger_in_deparment,使得某系增加新教师时,该系对应的teac_num列自动变化。
4.创建一个update触发器trigger_update_course,修改课程表中Course中的某门课的课程号时,对StudentGrade中课程号也做相应修改。
5.创建一个触发器trigger_course,当修改课程数据表course中的数据时(包括插入、更新和删除操作),显示提示信息“课程表被修改了”。
6.删除trigger_course触发器。
三、实验小结
1.触发器的主要作用是实现数据的完整性和一致性。
如何正确使用触发器?
2.触发器可以划分为几种类别?
分别是什么?
3.此次实验中得到的哪些经验教训、疑难问题?
有什么心得或总结?
实验十三PowerDesigner中概念模型与物理模型的设计
一、实验目的
1、熟悉PowerDesigner开发环境。
2、掌握数据库设计方法。
3、掌握利用PowerDesigner进行数据库的概念模型和物理模型设计。
二、实验内容及要求
本实验采用PowerDesigner12.5为例。
其他版本也可以,操作流程类似。
(1)某学生选题数据库,需要如下信息:
学生:
学号、姓名、性别、年龄、系名、年级;
课程:
课程号、课程名、学分;
选修:
学号、课程号、成绩。
其中一个学生可以选多门课程,一门课程可以有多个学生来选。
使用PowerDesigner建立概念模型,并将建好的概念模型转换为SQLServer2005物理模型。
*
(2)某医院病房计算机管理中需要如下信息:
科室:
科名,科地址,科电话,医生姓名
病房:
病房号,床位号,所属科室名
医生:
姓名,职称,所属科室名,年龄,工作证号
病人:
病历号,姓名,性别,诊断,主管医生,病房号
其中,一个科室有多个病房,多个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人的主管医生只有一个。
使用PowerDesigner建立概念模型,并将建好的概念模型转换为SQLServer2005物理模型。
三、实验小结
1.思考:
数据库设计的根本目标是要解决()
A)数据共享问题B)数据安全问题
C)大量数据存储问题D)简化数据维护
解释:
一般书上很少这么提,大家在答这个题的时候,可以从数据库的概念上入手,数据库设计的根本目标是要解决应该是共享问题。
四个答案可以做一些比较,最好的答案应该是A答案。
你可以看一下数据库的概念,一般数据库是长期存储在计算机内有组织的可共享的数据集合。
还有一个线索,数据库设计的六个阶段,每一个阶段主要做什么,或者是大家看数据库的一些范式,这个范式主要解决什么问题。
从这一题大家一定要注意二级考试的公共基础知识,很多地方都考最根本,最主要的地方。
数据库设计的目的即设计目标从根本上来说就是要实现数据的共享和安全存取,从细化及技术上来说,一个优秀的数据库设计必须要最终实现用户对于数据共享的具体要求,必须要在满足于用户的数据存取要求的基础上实现对于数据的关联性及优化,必须实现数据的安全性及可移植性,以保证用户数据能够简单的进行移植,必须要实现数据库的可扩容性结构以保证数据库对于用户未来数据要求的兼容性等等
2.此次实验中得到的哪些经验教训、疑难问题?
有什么心得或总结?
实验十五存储过程的使用
一、实验目的
1.了解嵌入式SQL和ODBC编程。
2.掌握存储过程的概念,熟悉使用存储过程来进行数据库应用程序的设计。
3.掌握存储过程的创建、使用和删除。
二、实验内容及要求
1.创建一个存储过程Proc_Course,查看“0108”号课程的选修情况,包括学生学号、姓名和成绩,然后执行该过程;
2.创建一个存储过程Proc_SC1,通过学生学号来查询学生选修情况,默认查询学号为“00001”的选修情况,包括学生学号、姓名和成绩。
3.调用上面的存储过程,求出学号为“000503002”的不及格的学生选修情况。
4.编写存储过程Proc_jiecheng,求n!
。
并调用上面的存储过程,求5!
。
5.删除存储过程Proc_jiecheng。
三、实验小结
1.简述使用存储过程有哪些优点?
2.简述存储过程与触发器的区别。
3.此次实验中得到的哪些经验教训、疑难问题?
有什么心得或总结?
附录:
SchooI数据库说明
School有关学校成绩、课程管理的数据库,该学校基本的情况如下:
某学校有多个系,每个系包含一定数量的老师和班级,每个班级包含一定数量的学生。
一个老师可担任一个或多个本系班级的管理,一个班级有且只有一个班长。
学生学习多门课程,一位老师可以担任一门或多门课程,某一门课程也可有多位老师任教,但某一班级某一门课程只能由一位老师任教。
Deparment表(系别资料表)
列名
中文解释
数据类型
空
检查
键/索引
Depar_id
系编号
Varchar
(2)
否
主键,聚集
Depar_name
系名称
Varchar(50)
否
Phone
联系电话
Varchar(8)
否
是1
PhoneCHECK约束定义为(PhoneLIKE‘3935[0-9][0-9][0-9][0-9]’)
Teacher表(教师基本资料表)
列名
中文解释
数据类型
空
默认值
键/索引
Teac_id
教师编号
Varchar(4)
否
主键,聚集
Teac_name
姓名
Varchar(8)
否
Teac_sex
性别
Varchar
(2)
Birthday
出生日期
Smalldatetime
TechPost
级别(职称)
Varchar(10)
‘讲师’
Depar_id
所属系别编号
Varchar
(2)
外键
Deparment(Depar_id)
Class表(班级基本资料表)
列名
中文解释
数据类型
空
键/索引
Class_id
班级编号
Varchar(6)
否
主键,聚集
Class_name
班级名称
Varchar(20)
否
Director
班主任
Varchar(4)
外键
Teacher(Teac_id)
Monitor
班长
Varchar(9)
外键
Student(Stu_id)
Depar_id
所属系别编号
Varchar
(2)
外键
Deparment(Depar_id)
Student表(学生基本资料表)
列名
中文解释
数据类型
空
默认值
键/索引
Stu_id
学号
Varchar(9)
否
主键,聚集
Stu_name
姓名
Varchar(8)
否
Stu_sex
性别
Varchar
(2)
否
‘男’
Birthday
出生年月
Smalldatetime
否
Phone
联系电话
Varchar(15)
Address
家庭地址
Varchar(100)
Class_id
所在班级编号
Varchar(4)
否
外键
Class(Class_id)
Course表(课程资科表)
列名
中文解释
数据类型
空
默认值
键/索引
Course_id
课程编号
Varchar(4)
否
主键,聚集
Course_name
课程名称
Varchar(20)
否
Course_hour
课时数
Smallint
否
60
Introduce
课程介绍
Varchar(200)
StudentGrade表(学生成绩资料表)
列名
中文解释
数据类型
空
默认值
键/索引
Stu_id
学生编号
Varchar(9)
否
组合主键,外键
Student(Stu_id)
Course_id
课程编号
Varchar(4)
否
组合主键,外键
Course(Course_id)
Grade
成绩
Smallint
是1
GradeCHECK约束定义为(Grade>=0andGrade<=100)
CourseTeacher表(课程教师资料表)
列名
中文解释
数据类型
空
键/索引
Course_id
课程编号
Varchar(4)
否
组合主键,外键
Course(Course_id)
Class_id
班级编号
Varchar(4)
否
组合主键,外键
Class(Class_id)
Teac_id
任课老师编号
Varchar(4)
否
组合主键,外键
Teacher(Teac_id)
Student_info表(学生奖惩情况表)
列名
中文解释
数据类型
空
键/索引
Stu_id
学号
Varchar(9)
否
主键,外键
Student(Stu_id)
Award
奖励情况
Varchar(500)
Punish
惩罚情况
Varchar(500)
注意: