数据库系统概论.docx
《数据库系统概论.docx》由会员分享,可在线阅读,更多相关《数据库系统概论.docx(29页珍藏版)》请在冰豆网上搜索。
![数据库系统概论.docx](https://file1.bdocx.com/fileroot1/2022-12/17/c68a6e40-b803-4ba1-9d14-4d4d91cbbb37/c68a6e40-b803-4ba1-9d14-4d4d91cbbb371.gif)
数据库系统概论
《数据库系统概论》实验指导书
实验一数据库服务器的连接及数据库的建立
1.1实验名称:
数据库服务器的连接及数据库的建立
1.2实验类型:
验证型
1.3实验学时:
3h
1.4实验目的:
了解连接数据库服务器的身份验证模式,熟悉样例数据库。
掌握DBMS中利用界面进行建库建表操作。
1.5实验准备:
1.5.1数据模型
数据模型由三个要素组成:
数据结构、数据操作和完整性约束。
1、数据结构
数据结构用于描述系统的静态特性,是所研究的对象类型的集合。
数据模型按其数据结构分为层次模型、网状模型和关系模型。
2、数据操作
数据操作用于描述系统的动态特性,是指对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作集合。
3、数据的约束条件
数据的约束条件是一组完整性规则的集合。
完整性规则是给定的数据及其联系所具有的制约和存储规则,用以限定符合数据库状态以及状态的变化,以保证数据的正确、有效和相容。
1.5.2数据库系统的三级模式结构
数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级组成。
1、外模式。
外模式也称子模式或用户模式,它是数据库用户(包括应用程序员和最终用户)看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
一个数据库可以有多个外模式。
2、模式。
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公用数据视图。
一个数据库只有一个模式。
3、内模式。
内模式也称存储模式,它是数据物理和存储结构的描述,是数据在数据库内部的表示方式。
一个数据库只有一个内模式。
1.5.3DBMS的功能
1、数据定义
数据定义包括定义构成数据库结构的外模式、模式和内模式,定义各个外模式与模式之间的映射,定义模式与内模式之间的映射,定义有关的约束条件(例如,为保证数据库中数据具有正确语义而定义的完整性规则,为保证数据库安全而定义的用户口令和存取权限等)。
2、数据操纵
数据操纵包括对数据库数据的检索、插入、修改和删除等基本操作。
3、数据库运行管理
对数据库的运行进行管理是DBMS运行时的核心部分,包括对数据库进行并发控制、安全性检查、完整性约束条件的检查和执行、数据库的内部维护(如索引、数据字典的自动维护)等。
所有访问数据库的操作都要在这些控制程序的统一管理下进行,以保证数据的安全性、完整性、一致性以及多用户对数据库的并发使用。
4、数据组织、存储和管理
数据库中需要存放多种数据,如数据字典、用户数据、存取路径等,DBMS负责分门别类地组织、存储和管理这些数据,确定以何种文件结构和存取方式物理地组织这些数据,如何实现数据之间的联系,以便提高存储空间利用率以及提高随机查找、顺序查找、增、删、改等操作的时间效率。
5、数据库的建立和维护
建立数据库包括数据库初始数据的输入与数据转换等。
维护数据库包括数据库的转储与恢复、数据库的重组织与重构造、性能的监视与分析等。
6、数据通信接口
DBMS需要提供与其他软件系统进行通信的功能。
例如,提供与其他DBMS或文件系统的接口,从而能够将数据转换为另一个DBMS或文件系统能够接受的格式,或者接收其他DBMS或文件系统的数据。
1.6实验内容
1.6.1熟悉网络环境和数据库环境
数据库服务器:
操作系统:
Windows2000AdvancedServer
IP地址:
192.168.0.99
数据库管理系统:
MicrosoftSQLServer2000
服务器名称:
servernet
客户机:
操作系统:
Windows2000Professional
IP地址:
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都是系统数据库。
其中Master主要用于通过跟踪诸如用户帐户、可配置环境变量和系统错误信息,控制用户数据库和SQLServer的整体运行情况;Model主要用于为新的用户数据库提供模板或原型;Msdb主要用于为调度信息和作业历史提供存储区域;Tempdb主要用于为临时表或其他临时工作区提供存储区域。
Pubs和Northwind示例数据库作为学习工具提供。
我们提供基于样例数据库Northwind的一些操作。
打开[企业管理器]|[数据库][Northwind]。
Northwind示例数据库包含了一个名为NorthwindTraders的虚构公司的销售数据,打开[表],可以看到该数据库包括了Categories、Customers等13张用户表和Alphabeticallistproduct、CategoryScalefor1997等16张视图。
可以任意打开用户表查看信息。
1.6.2数据库、表的建立
1.6.2.1数据字典
(一)表名(具体建表时,首先创建自己的数据库(数据库已经建立按班级分别kt773-1和kt773-2),表名用班级号_学号_姓名_表名的方式命名,如kt1
_01_张三_department,学生学号一律使用2位数)
表名
含义
Department
院系
Class
班级
Student
学生
Course
课程
Grade
成绩
(二)表结构
1、Department
表1-1Department表结构
字段名
数据类型
字段含义
约束
Dept_ID
Decimal
院系编号
PrimaryKey
Department
varChar(50)
院系名称
NotNull
Abbreviation
varChar(10)
院系简称
Phone
varChar(50)
联系电话
Director
varChar(50)
院系主任
No_Class
Decimal
班级数
NotNullDefault0
2、Class
表1-2Class表结构
字段名
数据类型
字段含义
约束
Class_ID
Char(7)
班级编号
PrimaryKey
Dept_ID
Decimal
院系编号
ForeignKey
Class
varChar(30)
班级名称
NotNull
Abbreviation
varChar(20)
班级简称
Monitor
varChar(24)
班长
Degree
varChar(4)
学历层次
NotNull大专、本科、硕士、博士
Enroll_Date
Decimal
入学年度
NotNull
No_Student
Decimal
学生数
NotNullDefault0
3、Student
表1-3Student表结构
字段名
数据类型
字段含义
约束
Student_ID
varChar(9)
学号
PrimaryKey
Class_ID
Char(7)
班级编号
ForeignKey
Name
varChar(24)
姓名
NotNull
Gender
varChar
(2)
性别
男,女
Birthday
Datetime
出生日期
Address
varChar(50)
家庭地址
Zip_Code
Decimal
家庭邮编
Householder
Varchar(50
家长姓名
4、Course
表1-4Course表结构
字段名
数据类型
字段含义
约束
Course_ID
varChar(8)
课程编号
PrimaryKey
Course
varChar(50)
课程
NotNull
Credit
Decimal
学分
Period
Decimal
学期
Practice_period
Decimal
实习
5、Grade
表1-5Grade表结构
字段名
数据类型
字段含义
约束
Student_ID
varChar(9)
学号
ForeignKey
PrimaryKey
Course_ID
varChar(8)
课程编号
ForeignKey
Grade
Decimal
成绩
NotNull
1.6.2.2创建数据库
1.打开企业管理器:
开始->程序->MicrosoftSQLServer2000->企业管理器出现如下画面:
图1-1启动MicrosoftSQLServer2000企业管理器
图1-2打开MicrosoftSQLServer2000企业管理器
2.添加新表:
(1)方法一
图1-3-1添加新表
(2)方法二
图1-3-2添加新表
3.定义表结构:
图1-4定义表结构
4.定义表之间的关系和关系图
图1-5定义关系图
5.输入表中的记录:
(每个表最少5条记录,其中一条是与自己相关的真实记录)
图1-6打开表
5.添加记录:
图1-7添加记录
1.7思考题:
1、从用户角度看,数据库系统都有哪些体系结构?
2、数据库管理系统通常由哪几部分组成?
3、如何用SQL语句完成上述的工作?
实验二简单SQL查询及数据库多表查询
2.1实验名称:
简单SQL查询及数据库多表查询
2.2实验类型:
验证型
2.3实验学时:
3h
2.4实验目的:
通过本章的学习,用户将能够:
1.掌握向表中添加数据的方法
2.掌握如何快速的把一个表中的多行数据插入到另一个表中
3.掌握更新表中多行数据的方法。
4.学会如何删除表中的一行数据
5.学会如何删除表中的所有行
6.掌握SELECT语句的基本用法
7.使用WHERE子句进行有条件的查询
8.掌握使用IN,NOTIN,BETWEEN来缩小查询范围的方法
9.利用LIKE子句实现模糊查询,利用ORDER子句为结果排序
10.学会用SQLSERVER的统计函数进行统计计算
11.掌握用GROUPBY子句实现分组查询的方法。
12.掌握多表查询的技术和嵌套查询的方法。
2.5实验准备:
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、常用SQL语句语法
添加语句:
INSERT[INTO]table_or_view[(column_list)]data_values
删除语句:
DELETE[FROM]table_nameWHEREsearch_condition
更新语句:
UPDATEtable_name
SETcolumn_name={expression|DEFAULT|NULL}[,...n]
[FROMtable_name[,...n]]
WHEREsearchcondition
查询语句:
SELECTselect_list
FROMtable_source
[WHEREsearch_condition]
[GROUPBYgroup_by_expression]
[HAVINGsearch_condition]
[ORDERBYorder_expression[ASC|DESC]]
2.6实验内容:
2.6.1操作一:
INSERT(插入)
1、首先检查表结构:
图2-1输入检查表结构的语句
注意:
(1)表名称不能以数字开头
(2)sp_help语句只能一次执行一句,不能批量执行
2、单条语句插入样例:
请同学们自行练习使用单条SQL语句给自己的各个表进行插入
图2-2各表插入语句样例
2.6.2操作二:
UPDATE(更新)
1、在student表中,GENDER(性别),BIRTHDAY(出生日期),ADDRESS(家庭地址),ZIP_CODE(家庭邮编),HOUSEHOLDER(家长姓名)均不正确或为空值,请将自己以上的准确信息更新到自己的数据库中,同时更新到同班同学的其它数据库中。
注意更新前要看相关表中该条数据是否正确添加。
图2-3用update更新student表中自己的信息
2、查询你的数据库中同班其他同学的信息是否已更新。
3、执行以下更新
在department表中,no_class(班级数)均不正确或为空值,请根据class表中每个学院实有班级数目更新department表中的no_class,例如:
4、执行以下更新
在class表中,no_student(学生数)均不正确或为空值,请根据student表中每个班级实有学生人数更新class表中的no_student。
注意:
请将class表中的abbreviation属性各记录内容补充完整。
2.6.3操作三:
DELETE(删除)
请从student表中删除一个student_id='994631225'的记录(注意:
确保student表和grade表中有与学生994631225有关的数据):
为什么会出现以下的结果?
图2-4删除student表中的一条记录
假若删除的是你自己的学号可以吗?
为什么?
2.6.4操作四:
SELECT(查询)
1.掌握SELECT语句的基本用法
图2-5SELECT语句的基本用法
2、查询你的各个表中所有的记录数目
图2-6SELECT语句中count()函数的用法
3、查询平均成绩(用avg()函数)
图2-7SELECT语句中avg()函数的用法
4、查询某班级所有同学的平均成绩,查询输出以别名:
学号,姓名,平均成绩;并按平均成绩由高到低排序(用到orderby)
图2-8SELECT语句中函数以及复杂子句的用法
5、查询没有成绩记录的学生,查询输出:
学号,姓名、的在班级简称。
图2-9SELECT语句中notin的用法
6、查询某学生的各课成绩(注意确保该学生有课程成绩),结果格式如下:
图2-10用SELECT语句查询自己的成绩
7、查询某班两门及两门以上课程不及格的学生,查询输出:
学号,姓名、不及格课程数量(注意保证有满足条件的记录)。
图2-11用SELECT语句查询多门课程不及格的学生
8、查询某班男生人数。
图2-12用SELECT语句查询男生人数
9、查询某班女生人数。
图2-13用SELECT语句查询女生人数
10、查询班级Class_IDlike'04%'的班级。
图2-14用SELECT语句查询班级编号
11、请查询输出:
班级编号,班级名称,男生,女生。
图2-15SELECT语句中CASE语句的用法1
12、请查询输出:
班级编号,班级名称,男生,女生,合计。
图2-16SELECT语句中CASE语句的用法2
13、执行以下查询,解释该查询的含义
图2-17解释SELECT语句
2.7思考题
1.如何使用UNION子句,它必须符合哪两条基本准则?
2.怎样把STUDENT表中前10个数据ADDRESS列的数据更改为'新疆'。
实验三视图、索引、存储过程和触发器的使用
3.1实验名称:
视图、索引、存储过程和触发器的使用
3.2实验类型:
验证型
3.3实验学时:
3h
3.4实验目的:
1.掌握视图的概念和使用方法;
2.掌握索引的概念和使用方法;
2.掌握存储过程的概念和使用方法;
3.掌握触发器的概念和使用方法;
3.5实验准备:
1.了解视图的概念和作用;
2.掌握视图相关的命令;
3.了解索引的作用与分类;
4.掌握索引的创建方法;
5.理解数据完整性的概念及分类;
6.了解各种数据完整性的实现方法;
7.了解存储过程的使用方法;
8.掌握存储过程的调用方法;
9.了解触发器的使用方法;
3.6实验内容:
3.6.1视图
1.创建视图
(1)在STUDENT表中,为信息管理及信息系统022班建立视图V1_STU,在查询分析器中输入下列语句:
图3-1创建视图V1_STU
思考与练习:
1)在STUDENT表中,为计算机科学与技术021建立视图SV1_STU。
2)在TUITION表中,为第五学年缴全额学费(3500)的学生建立视图SV2_TUI。
(2)创建V3_STU_COU视图,包括学号,课程号,课程名,成绩,要保证对该视图的修改都要符合班为信息管理及信息系统022班这个条件:
图3-2创建视图V3_STU_COU
思考与练习:
在STUDENT和CLASS两表中,建立视图SV3_STU_CLA,包含学号,班号,学院号,姓名,性别。
2.查询视图
(1)查找信息管理及信息系统021班女生的学号和出生日期:
图3-3创建并查询视图V2_STU
思考与练习:
1)查找SV3_STU_CLA视图中学号为024631416所在的班号和学院号。
2)查找信管992班平均成绩在80分以上的学生的学号和平均分数:
图3-4创建并查询视图V4_AVG
思考与练习:
统计信管992班平均成绩在80分以上的学生的个数。
3.更新视图
可更新视图满足以下条件:
A)创建视图的SELECT语句中没有聚合函数,且没有TOP、GROUPBY、UNION子句及DISTINCT关键字。
B)创建视图的SELECT语句中不包含从基本表列通过计算所得的列。
C)创建视图的SELECT语句的FROM子句中至少要包含一个基本表。
(1)向V1_STU插入一条记录(‘024631267’,’0246312’,’刘明仪’,’男’,’1982-3-2’,’NANCHANGROAD42#’,’830052’,’刘林’):
图3-5通过视图V1_STU插入表数据
思考与练习:
向SV1_STU视图插入一条记录。
注:
1)当视图所依赖的基本表有多个时,不能向该视图插入数据.
2)向可更新的分区视图中插入数据时,系统会按照插入记录的键值所属的范围,将数据插入到其键值所属的基本表中。
(2)将信管992班中学号为994631209的学生的14110003课程成绩改为90分:
图3-6通过视图V5_STU更新表
思考与练习:
将V2_STU班中性别为男的值改为女。
(3)删除V2_STU中女同学的记录:
图3-7通过视图V2_STU删除记录
思考与练习:
删除SV3_STU_CLA中,班号为’0246312’的记录。
4.修改视图定义
(1)将V1_STU修改成只包含信息管理及信息系统022班的学号和姓名:
思考与练习:
将SV3_STU_CLA修改成只包含学号,班号,学院号。
(2)删除V4_AVG视图
图3-8删除视图V4_AVG
思考与练习:
删除SV3_STU_CLA视图。
3.6.2索引
1.对STUDENT表的STUDENT_ID列建立索引,在查询分析器编辑窗口中输入下列程序并执行:
图3-9对STUDENT表建立索引
思考与练习:
为COURSE表中的COURSE_ID建立索引COU_IND。
3.6.3触发器
对于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表中是否存在,若不存在,则取消插入或修改操作:
图3-10对STUDENT表建立插入、更新触发器
(2)修改CLASS表的CLASS_ID字段值时,该字段在STUDENT表中的对应值也做相应修改:
图3-11对CLASS表建立更新触发器
IF(COLUMNS_UPDATED()):
测试是否插入或更新了提及的列,仅用于INSERT或UPDA