《数据库原理与应用》实验报告书 227.docx
- 文档编号:29604552
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:53
- 大小:76.46KB
《数据库原理与应用》实验报告书 227.docx
《《数据库原理与应用》实验报告书 227.docx》由会员分享,可在线阅读,更多相关《《数据库原理与应用》实验报告书 227.docx(53页珍藏版)》请在冰豆网上搜索。
《数据库原理与应用》实验报告书227
《数据库原理与应用》
实验报告
(2013—2014学年第二学期)
班级:
学号:
姓名:
教师:
彭柳芬
医药信息工程学院·数据决策
2014年1月
实验一熟悉DBMS的基本操作及数据库的创建
一、实验目的
1.熟知机房用机安全规则。
2.通过上机操作,加深对数据库系统理论知识的理解;通过使用具体的DBMS,了解一种实际的数据库管理系统,并掌握其操作技术;通过对实际题目的上机实验,提高手动能力,提高分析问题和解决问题的能力。
3.先用ACCESS创建数据库,体会数据库的功能。
[选作]
4.熟悉SQLServer2008企业版的安装过程。
掌握SQLServer2008相关服务的启动、退出。
5.熟悉SQLServerManagementStudio环境,掌握数据库服务器的注册、配置、连接等操作。
6.掌握SQL图形用户界面创建、修改、删除数据库、表;根据要求用SQLSERVER2008创建数据库。
7.了解表的结构特点;掌握在SSMS(SQLServerManagementStudio)中修改表的定义。
注意:
实验过程中创建的各种数据库及其他一切档案,建议同学们都保存好,以备接下来的实验课中继续使用。
每次上课前,请也请带上之前实验课的数据备份。
二、实验内容及要求
(一)、SQLSERVER2008基本操作
1.上网搜索能够正常安装的SQLServer2008的软件。
有条件的同学,课后可在个人电脑上安装SQLServer2008,建议XP操作系统安装个人版,Server操作系统安装企业版。
2.了解数据库的相关概念。
通过实践初步了解使用SQLServerManagement的使用。
3.掌握SQLServer2008的启动、退出、暂停,组成配置,基本工具及常用操作。
4.请根据联机丛书查询如何“创建数据库”,内容包括:
创建数据库前的准备工作,创建数据库的命令,以及数据库文件的组成。
请把你的结果写在下面。
5.查看本机上有哪些数据库(系统数据库和用户数据库)及数据库对象,请记录下来。
(二)、用ManagementStudio创建数据库
1、
(1)使用ManagementStudio创建数据库bookdb,各项参数采用默认设置。
(2)删除bookdb数据库,观察数据库服务器中是否还存在bookdb数据库。
(“删除数据库”操作慎用,此处设置删除操作是为了练习)。
2、使用ManagementStudio创建数据库EDUC,EDUC参数设置如下表:
数据文件
日志文件
逻辑名
EDUC_dat
EDUC_log
物理文件名
D:
\EDUC_DAT.MDF
D:
\EDUC_LOG.LDF
初始大小
4MB
1MB
最大文件大小
10MB
无限制
文件增长量
1MB
10%
在EDUC中创建三个表,根据下面要求创建Student,Course,StudentGrade表。
Student:
字段名
类型
长度
主键
允许空
含义(字段说明)
Stu_id
Varchar
10
Y
N
学号
Stu_name
Varchar
10
N
姓名
Stu_sex
Varchar
2
性别,默认值“男”
Birthdate
Datetime
出生年月
Phone
Varchar
8
电话,共8位,以‘3935’开头
Address
Varchar
100
地址
Class_id
Varchar
4
N
班级编号
Course:
字段名
类型
长度
主键
允许空
含义(字段说明)
Course_id
Varchar
4
Y
N
课程号
Course_name
Varchar
20
课程名
Course_hour
Int
学时,默认值60
Introduce
Varchar
200
课程介绍
StudentGrade:
字段名
类型
长度
主键
外键
允许空
含义(字段说明)
Stu_id
Varchar
10
Y(组合主键)
Y(Student(Stu_id))
N
学号
Course_id
Varchar
4
Y(组合主键)
Y(Course(Course_id))
N
课程号
Grade
Decimal
9,2
成绩
3.请在各表中添加数据。
对于Student表,请输入如下数据,Course、StudentGrade自行输入合理数据。
4.请把student表中的“11075050005”同学的住址改为“广药宿舍9栋304”。
5.请删除学号为“11075050003”的学生信息。
6.修改列属性
(1)用SSMS将Student表中的Ssex字段设为不能为空(notnull)。
(2)用SSMS将Student表中的Sname字段varchar(10)改成char(12)类型。
7.添加列
(1)用SSMS在Course表中添加一列year,类型为int,字段设置为允许空。
(2)用SSMS在year字段添加约束,year的字段值在2006-2013之间。
8.删除列
(1)用SSMS将Course表中的year字段删除。
三、实验要求
(一)、数据库、表的创建及删除
1.将数据库bookdb的相关属性,填入下表:
项目
内容
数据库所有者
数据库名称
数据
文件
逻辑文件名
文件组
物理文件名(即数据文件存放的物理路径)
文件初始大小
数据文件最大值(最大文件大小)
数据文件增长量
日志
文件
逻辑文件名
物理文件名(即日志文件存放的物理路径)
文件初始大小
数据文件最大值(最大文件大小)
数据文件增长量
四、实验小结
1.比较分析ACCESS、SQLSERVER、ORACLE数据库,各有何特点?
各自适用于什么情况?
2.常用数据库有哪些?
当下比较流行的有哪些?
实验二数据库的附加/分离、导入/导出与备份/还原
一、实验目的
1、理解备份的基本概念,掌握各种备份数据库的方法。
2、掌握如何从备份中还原数据库。
3、掌握数据库中各种数据的导入/导出。
4、掌握数据库的附加与分离,理解数据库的附加与分离的作用。
二、实验内容
1、将“实验一”所创建的数据库EDUC,进行数据完整备份。
备份路径:
D:
/EDUC.bak。
2、更改EDUC数据库里的内容,比如,删除一个表,或者在数据库中增加一个新表,或者修改某个表的数据,等等。
3、还原EDUC数据库,使它回复到原来的内容。
(比较、体会操作1-3之间,数据库中数据的变化。
)
4、将EDUC数据库从数据库服务器上分离,并找到EDUC数据库的数据文件和日志文件(创建该数据库时数据文件及日志文件的存放路径),把它们拷到别的路径,比如C盘。
(也可以放到自己带的U盘里)
5、将“操作4”中放到C盘的EDUC数据库附加到数据库服务器中。
6、分别把EDUC数据库中的“student”表导出到ACCESS数据库和EXCEL表格中(需先新建ACCESS空数据库和EXCEL空表格)。
7、将ACCESS类型的EDUC数据库中的Class表的数据库导入(追加数据)到SQLServer2008里的EDUC数据库的Class表中;将student.xls中的数据库导入(追加数据)到SQLServer2008里的EDUC数据库的student表中。
8、在“实验一”已创建EDUC数据库的基础上,将school数据库中Student,Course,StudentGrade中的数据分别导入EDUC的Student,Course,StudentGrade三个表中,并将school数据库中的Class,Deparment,Teacher,CourseTeacher表及数据也导入到EDUC数据库中。
导入数据时,注意两个数据库中对应的字段名称、类型、长度等的差异,并在导入时作出相应处理。
至此,完成的EDUC数据库,将作为后续实验的基础数据库。
后面实验的数据的增删改查、视图、索引、存储过程、触发器等等,均在EDUC数据库中完成,故请保存好EDUC数据库。
三、实验要求
1、完成对数据库的附加分离、备份还原与导入\导出。
2、完成“实验内容”中的步骤6后,从“student”表中导出到ACCESS和EXCEL表中的数据与原来在SQLSERVER里“student”中的数据有何不同?
从数据类型、数据长度、数据内容、约束等方面进行阐述。
3、完成“实验内容”中的步骤8过程中,数据能否成功导入?
碰到哪些问题?
如何解决?
成功后,EDUC数据库有何变化?
四、实验小结
1.什么情况下使用数据库的备份和还原?
什么情况下使用数据库的数据导入和导出?
为什么?
2.什么时候需要使用数据库的附加和分离?
“附加”操作和“分离”操作的关系是什么?
五、作业
1、试述数据模型的概念、数据模型的作用和数据模型的三个要素。
2、试述数据库系统三级模式结构,这种结构的优点是什么?
3、解释下列术语:
DDL:
DML:
4、什么叫数据与程序的物理独立性?
什么叫数据与程序的逻辑独立性?
5、DBA的职责是什么?
6、简述数据库系统的组成。
实验三数据表的创建、修改及删除和索引的使用
一、实验目的
1.进一步掌握ManagementStudio的使用;了解SQLServer数据库的逻辑结构和物理结构。
2.掌握SQL中使用CreateDatabase、DropDatabase命令创建、删除数据库。
3.掌握如何在表中添加、修改、删除数据;掌握SQL中CreateTable、AlterTable、DropTable命令的使用。
4.理解SQL中的标识列、计算列和各种约束。
5.掌握使用SQL命令修改表的定义、删除表。
6.掌握索引的使用。
二、实验内容
1.用SQL命令创建数据库
参照“实验一”中数据库EDUC及表Student、Course、StudentGrade的要求,使用SQL命令创建一个新的数据库“SCHOOL”,并在数据库SCHOOL中创建数据表Student、Course、StudentGrade,并修改基本表定义。
2.使用SQL语句对数据库SCHOOL中的数据表的结构进行修改。
注意:
实验过程中创建的各种数据库及其他一切档案,建议同学们都保存好,以备接下来的实验课中继续使用。
每次上课前,请也请带上之前实验课的数据备份。
三、实验要求
(一)数据表的创建
使用SQL命令创建数据库“SCHOOL”及表Student、Course、StudentGrade,并将代码记录下来。
1.创建数据库SCHOOL。
2.创建数据表Student。
3.创建数据表Course。
4.创建数据表StudentGrade。
5.删除SCHOOL数据库(注意,此操作进行前请先对数据库进行备份,以免影响后面实验)。
(二)修改基本表的定义
1.修改列属性
(1)用SQL命令将Student表中的Stu_sex字段设为非空(notnull)。
2.添加列
(1)在Course表中添加一列year,类型为int,字段允许空。
(2)用SQL命令将year的数据类型改为smallint类型。
(3)在year字段添加约束,year的属性值在2006-2013之间。
3.删除列
(1)将Course表中的year字段删除。
(三)、索引的创建与删除(如果不能成功完成,请分析原因)
1.分别建立以下索引
(1)在Student表的Stu_name列上建立普通降序索引。
(2)在Course表的Course_name列上建立唯一索引。
(3)在StudentGrade表的Stu_id列上建立聚集索引。
(4)在StudentGrade表的Stu_id(升序),Course_id(升序)和Grade(降序)三列上建立一个普通索引。
2.删除索引
(1)删除Course表中的Course_name列上的唯一索引。
(2)将StudentGrade表的Stu_id列上的聚集索引删掉。
四、作业
1、设有一个SPJ数据库,包含S、P、J、SPJ4个关系模式:
S(SNO,SNAME,STATUS,CITY)、P(PNO,PNAME,COLOR,WEIGHT)
J(JNO,JNAME,CITY)、SPJ(SNO,PNO,JNO,QTY)
供应商S由供应商代码SNO、供应商姓名SNAME、供应商状态STATUS、供应商所在城市CITY组成;
零件表P由零件代码PNO、零件名PNAME、零件颜色COLOR零件重量WEIGHT组成;
工程项目表J由工程项目代码JNO、工程项目名JNAME、工程项目坐在城市CITY组成;
SPJ表由供应商代码SNO、零件号代码PNO、工程号代码JNO、供应数量QTY组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
请用关系代数完成下列查询:
求供应工程J1零件P1的供应商号码SNO;
求供应工程J1零件为红色的供应商号码SNO;
求没有使用天津供应商生产的红色零件的工程号JNO;
求至少使用了供应商S1所供应的全部零件的工程号JNO;
求使用了红色零件但没有使用蓝色零件的工程号;
求供应了蓝色零件工程项目在北京的供应商的姓名和所在城市。
2、试述等值连接与自然连接的区别和联系。
3、关系代数的基本运算有哪些?
4、简述索引类型,比较各类型索引的不同之处。
实验四数据库完整性实验
一、实验目的
1.进一步掌握ManagementStudio的使用;了解SQLServer数据库的逻辑结构和物理结构。
2.理解SQL中的标识列、计算列和各种约束。
3.熟悉通过SQL对数据进行完整性控制。
熟练掌握数据库三类完整性约束(实体完整性、用户自定义完整性、参照完整性)
4.了解SQLSERVER的违反完整性处理措施;了解主键(PRIMARYKEY)约束、外键(FOREIGNKEY)约束、唯一性(UNIQUE)约束、检查(CHECK)约束、DEFAULT约束、允许空值约束。
注意:
实验过程中创建的各种数据库及其他一切档案,建议同学们都保存好,以备接下来的实验课中继续使用。
每次上课前,请也请带上之前实验课的数据备份。
二、实验内容及要求
使用SQL对数据进行完整性控制(三类完整性、CHECK短语、CONSTRAIN字句、触发器)。
用实验证实,当操作违反了完整性约束条件时,系统是如何处理的。
(一)、认真学习三类完整性、CHECK短语、CONSTRAIN字句的使用,完成下列内容。
Table1:
列名
中文解释
数据类型
空值
说明
Class_id
班级编号
Varchar(6)
否
主键
Class_name
班级名称
Varchar(20)
否
Director
班主任
Varchar(4)
Monitor
班长
Int
外键,Table2(Stu_id)
Table2:
列名
中文解释
数据类型
空值
说明
Stu_id
学号
Int
否
主键,标识种子(201101,1)
Stu_name
姓名
Varchar(10)
否
唯一性约束
Stu_sex
性别
Varchar
(2)
默认值为“女”
Birthdate
出生日期
Smalldatetime
Age
年龄
计算列,计算公式:
year(getdate())-year(birthdate)
Phone
联系电话
Varchar(8)
‘3935’开头,共8位数字
Class_id
班级编号
Varchar(6)
外键,Table1(Class_id)
(1)根据上述要求,先在SCHOOL数据库中建立数据表Table1。
(2)在SCHOOL数据库中创建Table2,只含各个基本列(即:
包括列名和数据类型,标识种子和计算列)
(3)Table1中的外键能否在创建Table1表时建立?
如不能,该何时、如何创建?
请写出相应的SQL代码。
(4)通过ALTERTABLE语句对Table2进行表定义修改,为其增加各个约束。
(注意:
空值约束应单独添加)
(二)、验证数据库约束
本实验主要是通过对这两张表的操作来验证数据库约束的相关概念。
1、准备好
(一)中要求的两个数据表Table1,Tabel2。
2、验证主键(PRIMARYKEY)约束
试运行下面代码:
insertintoTable1(class_id,class_name,director)
values('0101','医学智能级班','J001')
请再一次insertintoTable1(class_id,class_name,director)values('0101','医学智能级班','J001'),请问能否顺利执行?
如不能,出现什么问题?
原因是什么?
该如何解决?
3、验证外键(FOREIGN)约束
试运行下面两段代码:
--允许将显式值插入表的标识列中ON-允许OFF-不允许
--语法:
SETIDENTITY_INSERT[database.[owner.]]{table}{ON|OFF}
setidentity_inserttable2on
insertintoTable2(stu_id,stu_name,stu_sex,birthdate,phone,class_id)
values('2011001','张三','男','1990-9-23','39357887','0101')
setidentity_inserttable2off
setidentity_inserttable2on
insertintoTable2(stu_id,stu_name,stu_sex,birthdate,phone,class_id)
values('2011002','李四','男','1991-4-23','39357887','0102')
setidentity_inserttable2off
请问:
上述两段代码能否顺利执行?
如不能,出现什么问题?
原因是什么?
该如何解决?
试运行下面代码:
deletefromtable1whereclass_id='0101'
请问:
上述代码能否顺利执行?
如不能,出现什么问题?
原因是什么?
备注:
创建基本表时可指定ondeletecascade,则为级联删除。
那么,系统认为删除table1记录时,table2中相关的记录也会同时删除
如果不指定ondeletecascade时默认为受限删除。
4、验证唯一性(UNIQUE)约束
试运行下面代码:
setidentity_inserttable2on
insertintoTable2(stu_id,stu_name,stu_sex,birthdate,phone,class_id)
values('2011003','张三','男','1990-9-23','39357887','0101')
setidentity_inserttable2off
请问:
上述代码能否顺利执行?
如不能,出现什么问题?
原因是什么?
5、验证检查(CHECK)约束
试运行下面代码:
insertintoTable2(stu_name,stu_sex,birthdate,phone,class_id)
values('张历','男','1990-9-23','79357887','0101')
请问:
上述代码能否顺利执行?
如不能,出现什么问题?
原因是什么?
四、实验小结
1.体会利用ManagementStudio和SQL命令操作数据库、表的两种方式,有什么不同?
各有什么优缺点?
各适用于什么情况?
2.试述SQL语言的特点及SQL的数据定义功能。
。
4.什么是数据库的完整性?
什么是数据库的完整性约束条件?
5.思考各类完整性约束对于数据库的数据检查有何作用?
五、作业
1.关系数据模型中,二维表的列称为________,二维表的行称为________。
2.用户选作元组标识的一个候选码为________,其属性不能取________。
3.关系数据库中基于数学上的两类运算是________和________。
4.已知系(系编号,系名称,系主任,电话,地点)和学生(学号,姓名,性别,入学日期,专业,系编号)两个关系,系关系的主码是________,学生关系的主码是________,学生关系的外码是________。
实验五简单查询
一、实验目的
1.掌握ManagementStudio的使用。
2.掌握SQL中Select命令的使用。
二、实验内容及要求
用SQL语句完成下列查询。
此次实验开始使用的SCHOOL数据库如附录A所示。
1.查询学生的姓名、性别、班级编号,并把结果存储在一张新表中。
(提示:
用Select……Into……)
2.查询男生的资料。
3.查询所有被选修的课程号。
4.查询所有计算机系的班级信息。
5.查询年龄小于30岁的女同学的学号和姓名。
(获取系统当前时间函数:
getdate(),获取时间的年份函数:
year,获取月份函数:
month,获取“日”函数:
day)
6.查询艾老师所教的课程号。
7.在学生基本信息表Student中检索学生的姓名和出生年份,输出的列名为STUDENT_NAME和BIRTH_YEAR。
8.在StudnetGrade中,求选修课程“0511”且分数排名为前10%学生的学号和得分。
(Top10percent)
9.查询选修课程号为“0109”或“0111”的学生学号。
10.查询课程“0101”的成绩在80与90之间的同学的学号。
11.查询平均成绩都在80分以上的学生学号及平均成绩。
(groupby)
三、实验小结
1.此次实验中得到的哪些经验教训、疑难问题?
有什么心得或总结?
实验六连接查询和嵌套查询
一、实验目的
1.掌握ManagementStudio的使用。
2.掌握SQL中连接查询和嵌套查询的使用。
二、实验内容及要求
1.找出所有任教“数据库”的教师的姓名。
2.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库原理与应用 数据库原理与应用实验报告书 227 数据库 原理 应用 实验 报告书