数据库系统概论.docx

上传人:b****3 文档编号:5495242 上传时间:2022-12-17 格式:DOCX 页数:29 大小:927.92KB
下载 相关 举报
数据库系统概论.docx_第1页
第1页 / 共29页
数据库系统概论.docx_第2页
第2页 / 共29页
数据库系统概论.docx_第3页
第3页 / 共29页
数据库系统概论.docx_第4页
第4页 / 共29页
数据库系统概论.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

数据库系统概论.docx

《数据库系统概论.docx》由会员分享,可在线阅读,更多相关《数据库系统概论.docx(29页珍藏版)》请在冰豆网上搜索。

数据库系统概论.docx

数据库系统概论

 

《数据库系统概论》实验指导书

 

实验一数据库服务器的连接及数据库的建立

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1