数据库系统概论实验指导书Word格式.docx
《数据库系统概论实验指导书Word格式.docx》由会员分享,可在线阅读,更多相关《数据库系统概论实验指导书Word格式.docx(41页珍藏版)》请在冰豆网上搜索。
数据操纵包括对数据库数据的检索、插入、修改和删除等基本操作。
3、数据库运行管理
对数据库的运行进行管理是DBMS运行时的核心部分,包括对数据库进行并发控制、安全性检查、完整性约束条件的检查和执行、数据库的内部维护(如索引、数据字典的自动维护)等。
所有访问数据库的操作都要在这些控制程序的统一管理下进行,以保证数据的安全性、完整性、一致性以及多用户对数据库的并发使用。
4、数据组织、存储和管理
数据库中需要存放多种数据,如数据字典、用户数据、存取路径等,DBMS负责分门别类地组织、存储和管理这些数据,确定以何种文件结构和存取方式物理地组织这些数据,如何实现数据之间的联系,以便提高存储空间利用率以及提高随机查找、顺序查找、增、删、改等操作的时间效率。
5、数据库的建立和维护
建立数据库包括数据库初始数据的输入与数据转换等。
维护数据库包括数据库的转储与恢复、数据库的重组织与重构造、性能的监视与分析等。
6、数据通信接口
DBMS需要提供与其他软件系统进行通信的功能。
例如,提供与其他DBMS或文件系统的接口,从而能够将数据转换为另一个DBMS或文件系统能够接受的格式,或者接收其他DBMS或文件系统的数据。
三、实验内容
1、熟悉网络环境和数据库环境
数据库服务器:
操作系统:
Windows2000AdvancedServer
IP地址:
192.168.0.99
数据库管理系统:
MicrosoftSQLServer2000
服务器名称:
servernet
客户机:
Windows2000Professional
192.168.0.X
MicrosoftSQLServer2000客户端
启动MicrosoftSQLServer2000查询分析器:
1、开始->
程序->
MicrosoftSQLServer2000->
查询分析器出现如下画面
2、连接到MicrosoftSQLServer2000
SQLServer:
servernet(或192.168.0.99)
选择SQLServer身份验证;
登录名:
sa密码:
无
2、创建数据库sql语句:
执行结果:
3、身份验证模式:
在安装SqlServer2000过程中,出现[身份验证对话框],提示选择身份验证模式。
Windows身份验证模式或混合模式(Windows身份验证和SqlServer身份验证)并提示添加sa用户登录密码(一般选中空密码)。
安装完SQL后,打开企业管理器,逐级展开节点到[安全性]|[登录],在右边视图中可以看到登录的用户名称,右击sa用户,打开属性,弹出属性对话框,可以看到当前用户的身份验证模式。
4、体会DBMS的三层模式结构:
(以理解为主)从数据库管理系统角度看,数据库描述由三级抽象模式组成:
概念模式(逻辑模式)、物理模式(内模式)和外模式;
从数据库最终用户角度看,数据库系统的结构分为单用户结构、主从式结构、分布式结构和客户/服务器结构。
概念模式体会:
打开任意所建立[数据库],选择一个[表],右击[设计表],打开[设计表]框。
这里描述了存储的数据的属性和实体及实体关系。
物理模式:
描述存储细节。
外模式:
视图和来自概念模式的关系组成。
5、安装SqlServer2000后,安装程序将在所创建的数据库实例中创建数据库和日志文件。
Master、Model、Msdb和Tempdb都是系统数据库。
Pubs和Northwind示例数据库作为学习工具提供。
我们提供基于样例数据库Northwind的一些操作。
打开[企业管理器]|[数据库][Northwind]。
Northwind示例数据库包含了一个名为NorthwindTraders的虚构公司的销售数据,打开[表],可以看到该数据库包括了Categories、Customers等13张用户表和Alphabeticallistproduct、CategoryScalefor1997等16张视图。
可以任意打开用户表查看信息。
2:
数据库、表的建立
实验内容:
3、数据字典设计
(一)、表名(具体建表时,在你的班级数据库中创建表,表名称由学生学号+示例表名构成。
比如student_idDepartment)
表名
含义
Department
院系
Class
班级
Student
学生
Course
课程
Grade
成绩
(二)、表结构
1、Department
字段名
数据类型
字段含义
约束
Dept_ID
Decimal(5)
院系编号
PrimaryKey
Department
varChar(50)
院系名称
NotNull
Abbreviation
varChar(10)
院系简称
Phone
联系电话
Director
院系主任
No_Class
班级数
NotNullDefault0
2、Class
Class_ID
Char(7)
班级编号
ForeignKey
Class
varChar(30)
班级名称
varChar(20)
班级简称
Monitor
varChar(24)
班长
Level
varChar(4)
层次
NotNull大专、本科、硕士、博士
Enroll_Date
入学年度
No_Student
人数
3、Student
Student_ID
varChar(9)
学号
varChar(7)
Name
姓名
Gender
varChar
(2)
性别
NotNull男,女
Birthday
Datetime
出生日期
Address
家庭地址
Zip_Code
Decimal(6)
邮编
Householder
Varchar(50
家长
4、Course
Course_ID
varChar(8)
课程编号
Credit
学分
Period
学期
Practice_period
Decimal(5)
实习
5、Grade
创建数据库
开始->
企业管理器出现如下画面
打开企业管理器:
添加新表:
定义表结构:
输入表中的记录:
添加记录:
四、思考题:
1、分别给出一个层次、网状和关系模型的实例。
2、从用户角度看,数据库系统都有哪些体系结构?
3、数据库管理系统通常由哪几部分组成?
实验二简单SQL查询及数据库多表查询
通过本章的学习,用户将能够:
1.掌握向表中添加数据的方法
2.掌握如何快速的把一个表中的多行数据插入到另一个表中
3.掌握更新表中多行数据的方法。
4.学会如何删除表中的一行数据
5.学会如何删除表中的所有行
6.掌握SELECT语句的基本用法
7.使用WHERE子句进行有条件的查询
8.掌握使用IN,NOTIN,BETWEEN来缩小查询范围的方法
9.利用LIKE子句实现模糊查询,利用ORDER子句为结果排序
10.学会用SQLSERVER的统计函数进行统计计算
11.掌握用GROUPBY子句实现分组查询的方法。
12.掌握多表查询的技术和嵌套查询的方法。
1、常用的统计函数:
sum()返回一个数字或计算列的总和
avg()对一个数字列或计算求列平均值
min()返回一个数字或一个数字表达式的最小值
max()返回一个数字或一个数字表达式的最大值
count()返回满足SELECT语句中指定条件的记录的值
count(*)返回找到的行数
注意:
对于以下类型的数据values值不用使用引号
1、整型数据类型:
bit,int,smallint,tinyint
2、货币数据类型:
money,smallmoney
3、数字数据类型:
decimal,numeric
4、浮点类型数据:
real,float
5、简单的日期/时间类型数据:
datetime,smalldatetime
对于以下数据类型就要对values值加单引号
1、字符数据类型:
char,varchar,text
2、复杂的日期/时间类型数据:
datetime,smalldatetime
2、添加语句:
INSERT[INTO]table_or_view[(column_list)]data_values
删除语句:
DELETE
[FROM]table_name
WHEREsearch_condition
更新语句:
UPDATEtable_name
SET
column_name={expression|DEFAULT|NULL}[,...n]
[FROMtable_name[,...n]]
WHEREsearchcondition
查询语句:
SELECTselect_list
FROMtable_source
[WHEREsearch_condition]
[GROUPBYgroup_by_expression]
[HAVINGsearch_condition]
[ORDERBYorder_expression[ASC|DESC]]
三、实验内容:
操作一:
INSERT(插入)
1、首先检查表结构:
2、单条语句插入样例:
。
操作二:
UPDATE(更新)
1、在student表中,GENDER(性别),BIRTHDAY(生日),ADDRESS(家庭地址),ZIP_CODE(家庭邮编),HOUSEHOLDER(家长姓名)均不正确或为空值,请将自己以上的准确信息更新到自己的数据库中,同时更新到同班同学的其它数据库中。
2、查询你的数据库中同班其他同学的信息是否已更新。
3、执行以下更新
在department表中,no_class(班级数)均不正确或为空值,请根据class表中每个学院实有班级数目更新department表中的no_class,例如:
4、执行以下更新
在class表中,no_student(学生数)均不正确或为空值,请根据student表中每个班级实有学生人数更新class表中的no_student。
操作三:
DELETE(删除)
请从student表中删除一个student_id='
994631225'
的记录:
为什么会出现以下的结果?
假若删除的是你自己的学号可以吗?
为什么?
操作四:
SELECT(查询)
1、掌握SELECT语句的基本用法
2、查询你的各个表中所有的记录数目。
3、查询你自己的平均成绩(用avg()函数)
4、查询你班级所有同学的平均成绩,查询输出以别名:
学号,姓名,平均成绩;
并按平均成绩由高到低排序(用到orderby)
5、查询没有成绩记录的学生,查询输出:
学号,姓名、的在班级简称。
6、查询你自己的各课成绩,结果格式如下:
7、查询你班两门及两门以上课程不及格的学生,查询输出:
学号,姓名、不及格课程数量。
8、查询你班男生人数。
9、查询你班女生人数。
10、查询班级Class_IDlike'
02%'
的班级。
11、请查询输出:
班级编号,班级名称,男生,女生。
12、请查询输出:
班级编号,班级名称,男生,女生,合计。
13、执行以下查询,解释该查询的含义
四、思考题
1.如何使用UNION子句,它必须符合那两条基本准则?
2.怎样把STUDENT表中前10个数据ADDRESS列的数据更改为'
新疆'
实验三视图、索引、存储过程和触发器的使用
一、实验目的:
1.掌握视图的概念和使用方法;
2.掌握索引的概念和使用方法;
2.掌握存储过程的概念和使用方法;
3.掌握触发器的概念和使用方法;
二、实验准备:
1.了解视图的概念和作用;
2.掌握视图相关的命令;
3.了解索引的作用与分类;
4.掌握索引的创建方法;
5.理解数据完整性的概念及分类;
6.了解各种数据完整性的实现方法;
7.了解存储过程的使用方法;
8.掌握存储过程的调用方法;
9.了解触发器的使用方法;
三、实验内容:
一、视图
1.创建视图
(1)在STUDENT表中,为信息管理及信息系统022班建立视图V1_STU,在查询分析器中输入下列语句:
思考与练习:
1)在STUDENT表中,为计算机科学与技术021建立视图SV1_STU。
2)在TUITION表中,为第五学年缴全额学费(3500)的学生建立视图SV2_TUI。
(2)创建V3_STU_COU视图,包括学号,课程号,课程名,成绩,要保证对该视图的修改都要符合班为信息管理及信息系统022班这个条件:
在STUDENT和CLASS两表中,建立视图SV3_STU_CLA,包含学号,班号,学院号,姓名,性别。
2.查询视图
(1)查找信息管理及信息系统021班女生的学号和出生日期:
1)查找SV3_STU_CLA视图中学号为024631416所在的班号和学院号。
2)查找信管992班平均成绩在80分以上的学生的学号和平均分数:
统计信管992班平均成绩在80分以上的学生的个数。
3.更新视图
可更新视图满足以下条件:
A)创建视图的SELECT语句中没有聚合函数,且没有TOP、GROUPBY、UNION子句及DISTINCT关键字。
B)创建视图的SELECT语句中不包含从基本表列通过计算所得的列。
C)创建视图的SELECT语句的FROM子句中至少要包含一个基本表。
(1)向V1_STU插入一条记录(‘024631267’,’0246312’,’刘明仪’,’男’,’1982-3-2’,’NANCHANGROAD42#’,’830052’,’刘林’):
向SV1_STU视图插入一条记录。
注:
1)当视图所依赖的基本表有多个时,不能向该视图插入数据.
2)向可更新的分区视图中插入数据时,系统会按照插入记录的键值所属的范围,将数据插入到其键值所属的基本表中。
(2)将信管992班中学号为994631209的学生的14110003课程成绩改为90分:
将V2_STU班中性别为男的值改为女。
(3)删除V2_STU中女同学的记录:
删除SV3_STU_CLA中,班号为’0246312’的记录。
4.修改视图定义
(1)将V1_STU修改成只包含信息管理及信息系统022班的学号和姓名:
将SV3_STU_CLA修改成只包含学号,班号,学院号。
(2)删除V4_AVG视图
删除SV3_STU_CLA视图。
二.索引
1.对STUDENT表的STUDENT_ID列建立索引,在查询分析器编辑窗口中输入下列程序并执行:
为COURSE表中的COURSE_ID建立索引COU_IND。
三.创建触发器
对于STUDENT数据库,表STUDENT的CLASS_ID列与表CLASS的CLASS_ID满足下列参照完整性规则:
A.向STUENT表插入或修改一记录时,通过触发器检查记录的CLASS_ID值在CLASS表中是否存在,若不存在,则取消插入或修改操作;
B.修改CLASS表的CLASS_ID字段值时,该字段在STUDENT表中的对应值也做相应修改;
C.删除CLASS表中一记录的同时删除该记录CLASS_ID字段值在STUDENT表中对应的记录;
在查询分析器编辑窗口输入下列触发器的代码并执行。
(1)向STUENT表插入或修改一记录时,通过触发器检查记录的CLASS_ID值在CLASS表中是否存在,若不存在,则取消插入或修改操作:
(2)修改CLASS表的CLASS_ID字段值时,该字段在STUDENT表中的对应值也做相应修改:
(3)删除CLASS表中一记录的同时删除该记录CLASS_ID字段值在CLASS表中对应的记录:
COURSE表与GRADE表中的COURSE_ID列满足参照完整性规则,用触发器实现两表间的参照完整性。
四.创建存储过程
1.添加学生记录的存储过程STUDENTAdd:
2.修改学生记录的存储过程STUDENTUpdate:
3.删除学生记录的存储过程STUDENTDelete:
4.调用三个存储过程:
编写对TUITION表的插入、修改、删除操作的存储过程,然后调用这些存储过程。
实验四E-R模型与关系模型的转换
本章实验通过给学生一个设计实例,要求设计E-R模型,并分析。
然后选择熟悉的DBMS将给出的E-R模型转换为关系模型,并按要求实现创建数据库、数据表、表间关系等(修改表结构)。
数据库设计
数据库设计的一个最基本的问题是如何建立一个好的数据库模式。
即给出一组数据,如何构造一个适合于它们的数据模式,使数据库系统无论是在数据存储方面,还是在数据操纵方面都有较好的性能。
E-R模型方法讨论了实体与实体之间的数据联系,现在来讨论实体内部属性与属性之间的数据关联,目标是要设计一个“好”的数据库模型。
概念结构设计
在需求基础上,用数据模型表示数据及其联系。
设计E—R图步骤:
1、设计局部E-R图。
概念结构设计依据是需求分析阶段的DFD/DD。
在DFD中选择适当层次的DFD,作为设计局部E-R图的出发点。
中层允许有一定的重叠。
(1)确定实体集合
第一步(关键一步)
数据流/数据源/目的/数据存储根据具体情况决定,常作为实体集合。
(2)联系
标明:
1:
1,1:
N,N:
M。
原则上:
与处理框相关的输入流(数据流),输出流(数据目的地),输入或输出的工作之间的可能存在的联系。
(3)属性
属性名尽量和数据流中数据项名相同。
为简化E-R图,属性可仅在DFD中描述。
(4)主关键字
属性中标明作为PK(primarykey)的属性集合.
(5)其它
建E-R图,要完善DD(DD:
包括实体集,联系,属性的描述)某些情况:
描述产生频率(每年/月/季),是否长期保存,变化快慢,保密级别,存在的约束。
2、集成局部E-R图
在设计局部E-R图的基础上,将局部E-R图集成为全局E-R图。
集成时要解决的问题:
消除冲突、消除冗余
3、合并局部E-R图
合并局部E-R图中相同部分,尽可能的保留特殊部分,删除冗余部分,用累加的方式一次集成两个局部E-R图。
4、优化全局E-R图
必要时应对全局E-R图进行修改,重构和优化得到最佳的全局E-R图方案。
1、数据模型分析
设计一个图书借阅管理数据库要求提供下述服务:
可以随时查询书库中现有书籍的品种、数量与存放位置。
所有各类书籍均可由书号唯一标识;
可以随时查询书籍借还情况。
包括借阅人单位、姓名、借书证号、借书日期和还