数据库原理实验指导书2016cslg -

更新时间:2023-09-15 00:15:02 阅读量: 资格考试认证 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《数据库原理与应用》实验指导与报告

/ 学年 第 学期

姓 名:______________ 学 号:______________ 班 级:______________ 指导教师:______________

计算机科学与工程学院

2016

实验一 SQL Server使用初步

一、实验目的

1、熟悉SQL Server的组成及基本功能。 2、掌握SQL Server的安装、登录及注册。 3、掌握SQL Server企业管理器的使用方法。 4、熟悉查询分析器的基本使用。

二、实验预习

1、什么是数据库管理系统DBMS?你所知道的DBMS有哪些?

2、SQL Server 2000(2005)的安装步骤?

三、实验内容和要求

1、安装SQL Server2000 (1)安装SQL Server2000;

(2)启动Sql Server服务,练习用不同的方法启动SQL Server服务; (3)练习创建数据库: 创建一个数据库,要求如下: 1)数据库名\。

2)数据库中包含一个数据文件,逻辑文件名为 testDB_data,磁盘文件名为testDB_data.mdf,文件初始容量为5MB,最大容量为15MB,文件容量递增值为1MB。

2

3)事务日志文件,逻辑文件名为TestDB_log, 磁盘文件名为TestDB_log.ldf,文件 初始容量为5MB, 最大容量为10MB,文件容量递增值为1MB。

4) 添加一个数据文件,逻辑文件名为TestDB2_data,实际文件为TestDB2_data.ndf,文件初始容量为1MB,最大容量为6MB,文件容量递增值为1MB。

3

5)将日志文件的最大容量增加为15MB,递增值改为2MB。

4

2、注册服务器 基本步骤:

(1)打开企业管理器

(2)右击SQL Server组→新建SQL Server注册

(3)添加可用的服务器(实际数据库服务器的名称或IP地址) (4)选择身份验证模式(选“系统管理员分配给我的登录信息”) (5)输入正确的登录名和密码

(6)选择SQL Server组(选“在现有的SQL Server组中添加SQL Server”) (7)完成注册

5

若注册成功,则显示注册成功的信息。 3、连接SQL Server服务器

(1)右键单击上面注册的数据库服务器,选择连接,建立与数据库服务器的连接。观察连接后服务器图标的变化;

(2)右键单击选择编辑SQL Server注册属性,观察已注册数据库服务器的属性信息;

6

(3)右键单击选择删除SQL Server注册。为保证数据库的安全性,使用完毕自己的数据库后,可采取删除的方式,断开与数据库的连接; (4)重复注册服务器的步骤,再次建立与数据库的连接; 4、熟悉企业管理器

(1)单击建立的服务器连接,观察服务器的项目,写出它们的名称。通过查看联机帮助,总结每个项目的基本功能。 1.数据库

在 Microsoft? SQL Server? 2000 中,数据库由包含数据的表集合和其它对象(如视图、索引、存储过程和触发器)组成,目的是为执行与数据有关的活动提供支持。存储在数据库中的数据通常与特定的主题或过程(如生产仓库的库存信息)相关。 2。数据转换服务

Microsoft? SQL Server? 2000 数据转换服务 (DTS) 是一组图形工具和可编程对象,使您得以将取自完全不同源的数据析取、转换并合并到单个或多个目的。 3.管理

Microsoft? SQL Server? 服务器管理由多种管理任务组成,其中包括:

7

? ? ?

注册服务器和指派密码。 重新配置网络连接。

配置链接服务器,从而使您得以对整个企业内的 OLE DB 数据源执行分布式查询和分布式事务。

配置远程服务器,使您得以使用某个 SQL Server 实例执行驻留在另一 SQL Server 实例上的存储过程。 配置备用服务器。 设置服务器配置选项。 管理 SQL Server 消息。 设置轮询间隔。

?

? ? ? ?

4.复制

Microsoft? SQL Server? 2000 的复制是在数据库之间对数据和数据库对象进行复制和分发并进行同步以确保其一致性的一组技术。

使用复制可以将数据分发到不同位置,通过局域网、使用拨号连接、通过 Internet 分发给远程或移动用户。复制还能够使用户提高应用程序性能,根据数据的使用方式物理分隔数据(例如,将联机事务处理 (OLTP) 和决策支持系统分开),或者跨越多个服务器分布数据库处理。

5.安全性

数据库必须具有坚固的安全系统,才能控制可以执行的活动以及可以查看和修改的信息。无论用户如何获得对数据库的访问权限,坚固的安全系统都可确保对数据进行保护。

6.支持服务

分布式和邮件服务支持 7.Meta Data Service

8

Microsoft? SQL Server? 2000 Meta Data Services 支持通过元数据浏览器浏览已注册的知识库数据库。可以通过以下两种方式使用元数据浏览器: 使用 SQL Server 2000 中的 SQL Server 企业管理器

将其作为一个独立的管理单元添加到 Microsoft 管理控制台 (MMC),然后单独从 SQL Server 企业管理器运行

以什么方式使用浏览器将决定工作时的功能集。

(2)单击数据库,观察Northwind数据库下的项目,写出项目名称,通过联机帮助了解它们的基本功能。 1.关系图

数据库设计器是一种可视化工具,允许您对所连接的数据库进行设计和可视化处理。在设计数据库时,可以使用数据库设计器创建、编辑或删除表、列、键、索引、关系和约束。为使数据库可视化,可创建一个或更多的关系图,以显示数据库中的部分或全部表、列、键和关系。 2.表

表是包含数据库中所有数据的数据库对象。表定义为列的集合。与电子表格相似,数据在表中是按行和列的格式组织排列的。每行代表唯一的一条记录,而每列代表记录中的一个域。例如,在包含公司雇员数据的表中每一行代表一名雇员,各列分别表示雇员的详细资料,如雇员编号、姓名、地址、职位以及家庭电话号码等。 3.视图

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。如果有几台不同的服务器分别存储组织中不同地区的数据,而您需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。 通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。

9

下图显示了在两个表上建立的视图。 4.存储过程

在使用 Microsoft? SQL Server? 2000 创建应用程序时,Transact-SQL 编程语言是应用程序和 SQL Server 数据库之间的主要编程接口。使用 Transact-SQL 程序时,可用两种方法存储和执行程序。可以在本地存储程序,并创建向 SQL Server 发送命令并处理结果的应用程序;也可以将程序在 SQL Server 中存储为存储过程,并创建执行存储过程并处理结果的应用程序。

SQL Server 中的存储过程与其它编程语言中的过程类似,原因是存储过程可以:

? ? ?

接受输入参数并以输出参数的形式将多个值返回至调用过程或批处理。 包含执行数据库操作(包括调用其它过程)的编程语句。

向调用过程或批处理返回状态值,以表明成功或失败(以及失败原因)。

可使用 Transact-SQL EXECUTE 语句运行存储过程。存储过程与函数不同,因为存储过程不返回取代其名称的值,也不能直接用在表达式中。

使用 SQL Server 中的存储过程而不使用存储在客户计算机本地的 Transact-SQL 程序的优势有:

?

允许模块化程序设计。

只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。

? 允许更快执行。

如果某操作需要大量 Transact-SQL 代码或需重复执行,存储过程将比 Transact-SQL 批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行

Transact-SQL 语句时,都要从客户端重复发送,并且在 SQL Server 每次执行这些语句时,都要对其进行编译和优化。

? 减少网络流量。

一个需要数百行 Transact-SQL 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。

10

? 可作为安全机制使用。

即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。

5.用户

用户标识符 (ID) 在数据库内标识用户。在数据库内,对象的全部权限和所有权由用户帐户控制。用户帐户与数据库相关。sales 数据库中的 xyz 用户帐户不同于 inventory 数据库中的 xyz 用户帐户,即使这两个帐户有相同的 ID。用户 ID 由 db_owner 固定数据库角色成员定义。 6.角色

角色是一个强大的工具,使您得以将用户集中到一个单元中,然后对该单元应用权限。对一个角色授予、拒绝或废除的权限也适用于该角色的任何成员。可以建立一个角色来代表单位中一类工作人员所执行的工作,然后给这个角色授予适当的权限。当工作人员开始工作时,只须将他们添加为该角色成员,当他们离开工作时,将他们从该角色中删除。而不必在每个人接受或离开工作时,反复授予、拒绝和废除其权限。权限在用户成为角色成员时自动生效。 7.规则

规则是一个向后兼容的功能,用于执行一些与 CHECK 约束相同的功能。CHECK 约束是用来限制列值的首选标准方法。CHECK 约束比规则更简明,一个列只能应用一个规则,但是却可以应用多个 CHECK 约束。CHECK 约束作为 CREATE TABLE 语句的一部分进行指定,而规则以单独的对象创建,然后绑定到列上。 8.默认值

如果在插入行时没有指定列的值,那么默认值指定列中所使用的值。默认值可以是任何取值为常量的对象,例如:

? ? ?

持续 内置函数 数学表达式

有两种使用默认值的方法:

11

?

在 CREATE TABLE 中使用 DEFAULT 关键字创建默认定义,将常量表达式指派为列的默认值。

这是首选的标准方法,也是定义默认值的更简明的方法。

?

使用 CREATE DEFAULT 语句创建默认对象,然后使用 sp_bindefault 系统存储过程将它绑定到列上。 这是一个向前兼容的功能。

9.用户定义的数据类型

用户定义数据类型基于 Microsoft? SQL Server? 2000 中的系统数据类型。当多个表的列中要存储同样类型的数据,且想确保这些列具有完全相同的数据类型、长度和为空性时,可使用用户定义数据类型。例如,可以基于 char 数据类型创建名为 postal_code 的用户定义数据类型。

10.用户定义的函数

函数是由一个或多个 Transact-SQL 语句组成的子程序,可用于封装代码以便重新使用。Microsoft? SQL Server? 2000 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。

可使用 CREATE FUNCTION 语句创建、使用 ALTER FUNCTION 语句修改、以及使用 DROP FUNCTION 语句除去用户定义函数。每个完全合法的用户定义函数名 (database_name.owner_name.function_name) 必须唯一。

必须被授予 CREATE FUNCTION 权限才能创建、修改或除去用户定义函数。不是所有者的用户在 Transact-SQL 语句中使用某个函数之前,必须先给此用户授予该函数的适当权限。若要创建或更改在 CHECK 约束、DEFAULT 子句或计算列定义中引用用户定义函数的表,还必须具有函数的 REFERENCES 权限。

在函数中,区别处理导致删除语句并且继续在诸如触发器或存储过程等模式中的下一语句的 Transact-SQL 错误。在函数中,上述错误会导致停止执行函数。接下来该操作导致停止唤醒调用该函数的语句。

(3)查看Northwind的表项目,单击表,观察表的名称、所有者、类型以及创建日期。回答:

? 这些表的所有者有哪几种?

Dbo一种

12

? 这些表的类型有哪几种? 系统和用户

? 选择表Employees,在右键菜单中选择打开表->返回所有行,观察表中的数

据,说出这些数据的实际含义。观察其他用户类型的表,你还能说出它们数据的实际含义吗? 员工编号 姓名 职称 称呼 生日 录用日期 地址 城市 宗教信仰 能

(4)查看Northwind的视图项目,单击视图,观察视图的名称、所有者、类型以及创建日期。选择视图Product Sales for 1997,同上面观察表中数据的方法一样,观察视图中的数据,说出这些数据的意义。 商品类型 商品名称 销量

(5)查看Northwind的用户项目,单击用户。回答:

? 有哪类用户?查看它们的属性对话框,它们的角色和权限是否相同? Dbo Guest 不同

? 通过联机帮助,写出dbo、Guest用户的区别。 Guest:

13

guest 用户帐户允许没有用户帐户的登录访问数据库。当满足下列所有条件时,登录采用 guest 用户的标识:

?

登录有访问 Microsoft? SQL Server? 实例的权限,但没有通过自己的用户帐户访问数据库的权限。 数据库中含有 guest 用户帐户。

?

Dbo:

Data base owner

在数据库中有全部权限。

(6)查看Northwind的角色项目,单击角色。回答:

? 有哪些角色类型?通过查看联机帮助,写出它们各自的含义和作用。

db_owner db_accessadmin db_securityadmin db_ddladmin db_backupoperator db_datareader db_datawriter db_denydatareader db_denydatawriter

在数据库中有全部权限。 可以添加或删除用户 ID。 可以管理全部权限、对象所有权、角色和角色成员资格。 可以发出 ALL DDL,但不能发出 GRANT、REVOKE 或 DENY 语句。 可以发出 DBCC、CHECKPOINT 和 BACKUP 语句。 可以选择数据库内任何用户表中的所有数据。 可以更改数据库内任何用户表中的所有数据。 不能选择数据库内任何用户表中的任何数据。 不能更改数据库内任何用户表中的任何数据。 14

(7)查看Northwind的安全性项目,单击项目中的登录,观察不同的登录名称、类型、服务器访问、默认数据库,找到你自己的登录名称,右键单击打开属性对话框,观察对话框中的设置,写出登录属性对话框中的设置作用。 System administrators 为了控制访问权限

5、熟悉查询分析器

(1)打开查询分析器。基本步骤:

? 单击注册的数据库服务器,确定服务器已经连接; ? 在主菜单“工具”中选择“SQL查询分析器”;

? 在打开的查询分析器窗口中,左侧的对象浏览器为注册的服务器,在工具栏

的数据库选择中选择Northwind数据库为当前数据库;右侧窗口为查询窗口。

(2)分别在查询窗口中输入如下查询语句,观察查询结果,写出结果的数据记录个数:

查询语句1:

SELECT *

FROM Shippers

ORDER BY CompanyName

结果记录数:3 查询语句2:

SELECT FirstName, HomePhone FROM Northwind.dbo.Employees ORDER BY FirstName ASC

结果记录数:9

查询语句3:

SELECT ROUND( (UnitPrice * .9), 2) AS DiscountPrice FROM Products

WHERE ProductID = 58

结果记录数:1

15

查询语句4:

SELECT OrderID,

DATEDIFF(dd, ShippedDate, GETDATE() ) AS DaysSinceShipped FROM Northwind.dbo.Orders WHERE ShippedDate IS NOT NULL

结果记录数:809

查询语句5:

SELECT ProductID, ProductName FROM Northwind.dbo.Products

WHERE CategoryID = 1 OR CategoryID = 4 OR CategoryID = 5

结果记录数:29

四、实验小结

出题人脑子进水了

五、评阅成绩

实验预习20% 实验过程20% 实验结果30% 实验报告30% 总成绩

16

实验二 数据定义

一、实验目的

1、掌握SQL数据定义功能:数据库定义、表的定义、索引定义。 2、掌握利用企业管理器和SQL语句定义表、索引的方法。

二、实验预习

1、SQL中基本表定义语句格式:

2、SQL中修改基本表语句格式:

三、实验内容和要求

1、在企业管理器中,利用菜单操作的方式在各自的数据库中建立如下四个基本表: (1)供应商表S: 列名 SNO SNAME STATUS CITY 说明 供应商号 供应商名 供应商状态 所在城市 数据类型 CHAR(6) VARCHAR(20) VARCHAR(50) VARCHAR(50) 约束 PRIMARY KEY NOT NULL (2)零件表P: 列名 PNO PNAME

说明 零件号 零件名 数据类型 CHAR(6) VARCHAR(20) 17

约束 PRIMARY KEY NOT NULL COLOR WEIGHT 颜色 重量 CHAR(2) NUMERIC(9,2) CHECK(WEIGHT>0 AND WEIGHT<=100) (3)工程项目表J: 列名 JNO JNAME CITY 说明 项目号 项目名 城市 数据类型 CHAR(6) VARCHAR(20) VARCHAR(50) 约束 PRIMARY KEY NOT NULL (4)供应情况表SPJ: 列名 SNO PNO JNO QTY 说明 供应商号 零件号 项目号 供应数量 数据类型 CHAR(6) CHAR(6) CHAR(6) SMALLINT 约束 NOT NULL NOT NULL NOT NULL DEFAULT 100 2、用CREATE语句建立如下三个表,并写出相应的语句。 (1)学生表Student: 列名 SNO SNAME SSEX SAGE SDEPT

语句:

18

说明 学号 姓名 性别 年龄 所在系 数据类型 CHAR(7) CHAR(10) CHAR(2) SMALLINT VARCHAR(20) 约束 主码 NOT NULL 取“男”或“女” 取值15-45 默认“计算机系” (2)课程表Course: 列名 CNO CNAME CCREDIT SEMSTER PERIOD 说明 课程号 课程名 学分 学期 学时 数据类型 CHAR(10) VARCHAR(20) SMALLINT SMALLINT SMALLINT 约束 主码 NOT NULL 大于0 大于0 大于0 语句:

(3)选课表Sc: 列名 SNO CNO GRADE 说明 学号 课程号 成绩 数据类型 CHAR(7) CHAR(10) SMALLINT 约束 主码,引用Student的外码 主码,引用Course的外码 大于0

语句:

3、利用SQL语句对表结构进行修改。

(1)为零件表P增加一个规格(GUIGE)列,数据类型为字符,长度50;

(2)修改课程表Course的CNAME属性列的类型为VARCHAR(30);

19

(3)为供应情况表SPJ添加参照完整性约束; SPJ的SNO列参照S表SNO列

SPJ的PNO列参照P表PNO列

SPJ的JNO列参照J表JNO列

(4)删除零件表P的规格(GUIGE)列

4、利用企业管理器向表中添加数据 (1)供应商表S: SNO S1 S2 SNAME 精益 盛锡 STATUS 20 10 CITY 天津 北京

继续往表中增加一条记录:四个字段的数据分别是S1,东方红,30,北京,会出现什么情况?为什么?

(2)零件表P: PNO P1 P2 P3 PNAME 螺母 螺栓 螺丝刀 COLOR 红 绿 蓝 WEIGHT 12 17 105.5

是否能够正常输入三条数据?如果否,问题出在哪里,为什么?

20

(3)工程项目表J: JNO J1 J2 J3 JNAME 一汽 半导体厂 CITY 北京 南京 常州

第三条记录是否能够正常输入,若否,会出现什么问题,为什么?

(4)供应情况表SPJ: SN0 S1 S1 S2 PNO P1 P1 P2 JNO J1 J3 J4 QTY 200 输入过程中是否会遇到问题,若有,出在哪,为什么?

四、实验小结

五、评阅成绩

实验预习20%

21

实验过程20% 实验结果30% 实验报告30% 总成绩 实验三 数据查询

一、实验目的

1、掌握查询语句的基本组成和使用方法 2、掌握常用查询技巧

二、实验预习

1、SQL中查询语句格式:

2、连接查询有哪些不同的连接方式?有什么特点。

三、实验内容和要求

1、按照下表中的内容,在企业管理器中为数据库表输入相应的数据。 学生表:Student Sno 9512101 9512103 9521101 9521102 9521103 9531101 9531102 Cno C01 C02 C03 C04 C05

Sname 李勇 王敏 张莉 吴宾 张海 钱小平 王大力 Cname 计算机导论 VB 计算机网络 数据库基础 高等数学 Ssex 男 女 女 男 男 女 男 Ccredit 3 4 4 6 8 22

Sage 19 20 22 21 20 18 19 Semster 1 3 7 6 1 Sdept 计算机系 计算机系 信息系 信息系 信息系 数学系 数学系 Period 3 4 4 4 8 课程表:Course 选课表:SC Sno 9512101 9512103 9512101 9512103 9521101 9521102 9521103 9531101 9531102 9512101 9531102 9512101 9512101 Cno C03 C03 C05 C05 C05 C05 C05 C05 C05 C01 C01 C02 C04 Grade 95 51 80 60 72 80 45 81 94 NULL NULL 87 76

2、完成下列查询

(1)查询全体学生的信息。

(2)查询“信息系”学生的学号,姓名和出生年份。

(3)查询考试不及格的学生的学号。

(4)查询无考试成绩的学生的学号和相应的课程号。

(5)将学生按年龄升序排序。

(6)查询选修了课程的学生的学号和姓名。

23

(7)查询年龄在20-23岁之间的学生的姓名,系,年龄。

(8)查询选修了“计算机导论”,“高等数学”课程的学生的学号,姓名。

(9)查询姓“张”的学生的基本信息。

(10)查询“95211”班学生的选课情况,要求输出学号,姓名,课程名,成绩,按照学号升序排序。

(11)查询选修了课程的学生的总人数。

(12)查询选修了“C05”课程的的学生成绩单,要求输出学号,姓名,成绩,查询结果按班级(提示:班级为学号的前5位),成绩降序排列。

(13)统计各门课程的成绩,要求输出课程代号,课程名,平均成绩,选修人数。(成绩为NULL值的不统计)

(14)统计各门课程的不及格人数,要求输出课程代号,课程名,不及格人数。

(15)查询选修平均成绩在75分以上的学生的学号,姓名,所在系。

24

(16)查询与“王大力”同一个系的学生的基本信息

(17)查询选修平均分高于所有学生平均分的学生的学号,并按学号升序排列。

(18)查询未选修“VB”或“数据库基础”两门课的学生的学号,姓名,系名。(要求用嵌套查询)

(19)查询选修了全部课程的学生的学号,姓名,系名。

(20)输出“高等数学”课程成绩前三名的学生的学号,姓名,系名

四、实验小结

五、评阅成绩

实验预习20% 实验过程20% 实验结果30% 实验报告30% 总成绩 25

2、管理员负责的主要功能:

? 用户管理(教师、学生及管理员的增、删、改); ? 课程管理(添加,删除和修改)

? 选课管理(实现选课功能开放和禁止、教师成绩输入开放和禁止) 3、学生通过登录,可以查询课程的基本信息、实现选课、退课和成绩查询; 4、教师通过登录,可以查看选课学生的基本信息,可以输入成绩;

数据库设计实验结果:(另附纸完成内容) 1、系统E-R模型 2、数据库表的基本结构(用表格方式表示,参照实验2中给出的表的基本结构说明) 3、视图、触发器、存储过程、事务等设计。(可根据需要设计)

四、实验小结

五、评阅成绩

实验预习20% 四、教师评语

实验过程20% 实验结果30% 实验报告30% 总成绩

41

实验四 数据更新

一、实验目的

1、掌握SQL语言的数据更新操作

2、掌握SQL Server 2000企业管理器的数据导入和导出功能

二、实验预习

1、数据插入语句格式:

2、数据修改语句格式:

3、数据删除语句格式: 4、SQL Server中可进行批量数据导入和导出,可支持哪些格式的数据导入导出?(举常见格式类型)

三、实验内容和要求

(执行操作后,将语句填写在下面的空白处) 1、插入数据

(1)在学生表Student中插入数据:

Sno:9512102 Sname:刘晨 Ssex:男 Sage:20 Sdept:计算机系

(2)在课程表Course中插入数据:

Cno:C06 Cname:数据结构 Ccredit:5 Semster:4

26

(3)在选课表SC中插入95211班学生选修C04的选课信息。

提示:插入的数据的Sno从Student表中查询而来,插入的Cno为“C04”

(4)查询高等数学的成绩,包括学号,成绩,并按学号升序排序。将查询的结果输出到一个名为gs_cj的表中。

(5)将SC表中“C05”课程的选课记录输出至一个新表中,表名为Gs01。

2、修改数据

(1)将所有学生的年龄增加1岁。

(2)修改“9512101”学生的“C01”课程成绩为85。

(3)修改“9531102”学生的“C01”课程成绩为70。

(4)将所有平均分为75分以上的学生的各门课成绩在原来基础上增加10%。

3、删除数据

(1)删除“9531102”学生“C05”课程的成绩记录

(2)删除所有课程为“C05”的选课记录

27

4、数据的导出

(1)将数据库中的S,P,J,SPJ表导出为一个ACCESS数据库,名为DB_SPJ。

(2)Student表中数据导出到一个文本文件,用,作为数据项的分隔符。

(3)将Course表中数据导出到一个Excel文件中。

5、批量增加数据

(1)利用查询,将其他表中的数据增加到需要的数据表中。 将Gs01表中的数据添加到SC表中。(用Insert 语句实现)

(2)从外部其他数据源导入数据(选做)

? 从文本文件中导入 ? 从ACCESS中导入数据 ? 从EXECEL中导入数据

四、实验小结

五、评阅成绩

实验预习20% 实验过程20% 实验结果30% 实验报告30% 总成绩 28

实验五 数据控制

一、实验目的

1、掌握数据库完整性约束条件的设置 2、掌握触发器的基本使用

3、掌握SQL Server2000的安全性控制方法

二、实验预习

1、关系数据库的完整性约束有哪些?

2、什么是触发器?其作用是什么?SQL Server2000中的触发器主要有哪些?

三、实验内容和要求

1、实体完整性约束

(1)为供应商表SPJ建立完整性约束,约束列为SNO,PNO,JNO。 方法1:在表设计器中建立,请写出建立的步骤:

方法2:写出创建表的同时定义完整性约束的SQL语句。

29

(2)根据实验2中的内容,输入数据下面的数据,能否成功?为什么? S1 P1 J1 200

(3)输入下面的数据能否成功,为什么? S1 NULL J1 200

(4)根据上面实验的结果,请说明实体完整性约束的含义。

2、参照完整性约束

(1)修改Student表中记录,将学号9512101改为9512103,更改是否成功?若不成功请说出原因。

(2)修改SC表中记录,将学号为9512101的记录均改为学号9512109,是否更改成功?若不成功请说出原因。

(3)设置SC表的参照完整性为更新和删除时均为级联。 方法1:在表设计器中设置,请写出设置的步骤:

30

方法2:在创建表时同时设置参照完整性约束,并设置规则为级联。请写出SQL语句。

(4)修改Student表学号9512101为9512109,观察SC表中相应记录是否更新? (5)在Course表中删除课程代号为C01的记录,观察SC表中选课C01的记录是否删除?

3、用户自定义完整性 (1)设置Student表的Sno输入长度必须为7个字符的约束。请将CHECK约束子句写在下面: (2)设置student表的Sdept只能为“计算机系”,“数学系”,“信息系”,“物理系”。请将CHECK约束子句写在下面:

31

4、触发器

(1)定义一个触发器,其基本功能是在SC表中增加或修改一个选课记录时,检查该课程的选课人数是否超过限定(可自行定义一个限定值,根据表中数据的情况而定)。若超过限定值,则拒绝操作。 触发器代码:

验证语句:

(2)定义一个触发器,当删除Student表中数据时,先将删除的数据插入到另一个专门存放已删除数据的表中(实验时,首先定义一个与Student表结构相同的表用来存放删除的数据),然后执行删除操作。 触发器代码:

(3)定义一个触发器实现级联删除,当删除student表中学生记录时,将sc表中对应学生的选课信息一并删除。

32

5、用户权限控制

(1)在自己数据库中添加其他用户。

(2)为添加的用户进行授权和权限收回。相互检查是否获得了相应的权限。

6、完整性综合应用

创建账户信息表bank和交易信息表TransInfo --账户信息表

create table bank (

customerName char(8)not null, cardID char(10) not null, currentMoney money not null )

--交易信息表

create table transInfo(

cardID char(10) not null, transType char(4) not null, transMoney money not null, transDate datetime not null )

(1)添加约束,账户余额不能少于1元,交易日期默认为当天日期

插入数据:

insert into bank values('张三','10010001',1000) insert into bank values('李四','10010002',1)

33

(2)创建触发器,根据交易信息中的交易类型‘支取’,‘存入’修改客户的账户余额

测试数据并查看

insert into transInfo(cardID,transType,transMoney) values('10010001','支取',200)

insert into transInfo(cardID,transType,transMoney) values('10010002','存入',500)

select * from bank

select * from transInfo

四、实验小结

五、评阅成绩

实验预习20% 实验过程20% 实验结果30% 实验报告30% 总成绩 34

实验六 视图与存储过程

一、实验目的

1、掌握视图的定义及使用

2、掌握存储过程的建立和调用 3、理解事务处理技术

二、实验预习

1、基本表与视图有什么不同?哪种视图可以更新?

2、视图定义语句格式:

3、什么是存储过程,其作用主要是什么?

4、什么是事务?事务处理的特点?

三、实验内容和要求

1、视图(将执行的SQL语句写在下面)

(1)建立视图IS_STUDENT,视图中包含信息系全体学生的基本信息。

35

(2)建立视图CJ_STUDENT,视图中包含所有成绩不及格的学生的学号,姓名,课程名,成绩。

(3)建立视图AVG_CJ,视图包括学生的学号以及他们的平均成绩,按成绩降序排列。

(4)修改视图IS_STUDENT,将年龄均加1。观察基本表Student中相应的数据是否发生变化。

(5)在视图IS_STUDENT中插入新的记录,学号为9531103,姓名为张玉,女,21岁。

(6)根据视图AVG_CJ,查询平均成绩大于60的学生的学号。

2、存储过程

(1)建立存储过程student_Grade1,功能是查询计算机系学生的成绩,包括学号,姓名,课程名,成绩,按学号升序排序。 存储过程代码:

36

执行存储过程代码:

(2)建立存储过程student_Grade2,功能是根据参数提供的系名,查询该系学生的成绩,包括学号,姓名,课程名,成绩,按学号升序排序。 存储过程代码:

执行存储过程代码:

(3)建立存储过程student_Grade3,功能是根据参数提供的学生的姓名和课程名,查询该学生相应的课程成绩,若存在不为空的成绩,则返回参数值为成绩值,否则返回-1。

存储过程代码:

37

执行存储过程代码:

(4)建立存储过程check_Xk,功能是根据提供的参数学号和课程号,完成选课记录的插入功能。要求如下:

? 首先检查该课程选课人数是否已满(可自己根据表中数据的情况定义一个限

定值),若满,则返回一个0;若不满,继续检查该学生是否已经选满3门课程,若满,则返回-1,否则将选课记录插入到SC表中,并返回1。 存储过程代码:

执行存储过程代码:

3、事务处理-在SQL Server中

(1)在数据库中建立一个表名为BANK的数据表,结构如下:

(2)输入数据:

38

(3)执行下面事务处理 BEGIN TRAN

IF EXISTS(SELECT * FROM BANK WHERE UID='A') BEGIN

IF(SELECT [MONEY] FROM BANK WHERE UID='A')>1000 BEGIN

UPDATE BANK SET [MONEY]=[MONEY]-1000WHERE UID='A' IF EXISTS(SELECT * FROM BANK WHERE UID='B') BEGIN

UPDATE BANK SET [MONEY]=[MONEY]+1000 WHERE UID='B' COMMIT TRAN END ELSE

ROLLBACK TRAN END ELSE

PRINT 'A帐户余额不足!' END ELSE

PRINT '帐户不存在!'

(4)删除B数据,再次执行该事务。 4、事务处理-在应用程序中使用(选做)

四、实验小结

五、评阅成绩

实验预习20% 实验过程20% 实验结果30% 实验报告30% 总成绩 39

实验七 数据库设计

一、实验目的

1、掌握数据库设计的基本步骤

2、培养综合运用数据库设计方法的能力

二、实验预习

1、数据库设计的规范化要求是什么?

2、E-R模型向逻辑模型转换的基本原则?

三、实验内容和要求

任选一题,按照要求完成数据库的设计。在数据库设计中应考虑如下因素: (1)数据库的逻辑模型应能满足系统的基本需求; (2)数据库的逻辑模型应符合关系数据的规范化要求; (3)数据库表应具有基本的完整性约束; 第1题:网上书店系统 基本要求:

1、系统用户由二类组成:管理员和客户; 2、管理员负责后台管理:

? 图书信息的维护(增、删、改),图书要进行分类管理; ? 客户信息的维护 ? 订单的确认和删除

3、客户可以查询图书的基本信息,可以维护自己的信息,可以进行网上订书,可以查询订单处理的情况。

第2题:高校网上选课系统 基本要求:

1、系统用户由三类组成:教师、学生和管理员;

40

2、管理员负责的主要功能:

? 用户管理(教师、学生及管理员的增、删、改); ? 课程管理(添加,删除和修改)

? 选课管理(实现选课功能开放和禁止、教师成绩输入开放和禁止) 3、学生通过登录,可以查询课程的基本信息、实现选课、退课和成绩查询; 4、教师通过登录,可以查看选课学生的基本信息,可以输入成绩;

数据库设计实验结果:(另附纸完成内容) 1、系统E-R模型 2、数据库表的基本结构(用表格方式表示,参照实验2中给出的表的基本结构说明) 3、视图、触发器、存储过程、事务等设计。(可根据需要设计)

四、实验小结

五、评阅成绩

实验预习20% 四、教师评语

实验过程20% 实验结果30% 实验报告30% 总成绩

41

本文来源:https://www.bwwdw.com/article/a52h.html

Top