《数据库系统及应用》(第2版)实验课程上机指导书.doc
广西工学院信计系数据库系统及应用(第2版)实验课程上机实验指导书说明:本指导书仅作为上机验证课本例子使用,在SQL Server 2000环境下经过验证,如在SQL Server2005环境下使用部分内容稍有不同。数据库软件名称:Microsoft SqlServer 2000企业版实验设备:服务器一台,网络管理机一台,客户机每人一台软件运行环境要求:服务器:Windows 2000 Server Microsoft SqlServer 20000实例客户机:Windows 98或Windows2000 Professional Microsoft SqlServer 20000客户端客户端开发工具(PowerBuilder、Visual Basic、Delphi、Visual c+等)实验总体要求:1、 每个学生单独完成。2、 每次实验后交一份源程序、一份实验报告。实验内容:实验一 SQLServer基本管理、TSQL基本操作:数据定义 (验证)实验二TSQL数据操作:插入,更新。删除 (验证、设计)实验三TSQL基本操作:数据查询 (验证、设计)实验四 视图的定义与操作(验证、设计)实验五 数据完整性、存储过程与触发器(验证、设计)实验六 安全性控制、备份与恢复(验证)实验七 用户管理与权限管理(验证)实验八 客户端开发(设计)实验一 SQLServer管理基础、TSQL基本操作:数据定义一、实验目的通过本实验熟悉SQLServer数据库环境,掌握数据库管理和数据库对象管理的相关命令。学会建立数据库;在数据库添加表,修改表结构。二、实验内容: 1、要求熟练掌握SQL的基本使用2、SQLServer企业管理器、查询分析器的使用3、建立数据库4、根据要求设计关系数据库的表三、实验步骤1、 登录到SQLServer服务器客户端连接方法:用户名:学号初始密码: 可用命令更改密码:sp_password ,新密码2、 建库(库名业务主题班号学号)CREATE DATABASE 订货ON ( NAME = order_dat,FILENAME = 'c:mssqldataorderdat.mdf',SIZE = 10,MAXSIZE = 50,FILEGROWTH = 5 )LOG ON( NAME = order_log,FILENAME = 'd:mssqllogorderlog.ldf',SIZE = 5MB,MAXSIZE = 25MB,FILEGROWTH = 5MB ) 3、 建表CREATE TABLE 仓库( 仓库号 CHAR(5) PRIMARY KEY, 城市 CHAR(10), 面积 INT CHECK (面积 > 0) )CREATE TABLE 职工(- 仓库号 CHAR(5) FOREIGN KEY REFERENCES 仓库,- 仓库号 CHAR(5) FOREIGN KEY REFERENCES 仓库(仓库号), 仓库号 CHAR(5) FOREIGN KEY (仓库号) REFERENCES 仓库(仓库号), 职工号 CHAR(5) PRIMARY KEY, 工资 INT CHECK (工资 >= 1000 AND 工资 <= 5000) DEFAULT 1200 ) CREATE TABLE 供应商( 供应商号 CHAR(5) PRIMARY KEY, 供应商名 CHAR(20), 地址 CHAR(20)CREATE TABLE 订购单(职工号 CHAR(5) NOT NULL FOREIGN KEY REFERENCES 职工,供应商号 CHAR(5) NULL FOREIGN KEY REFERENCES 供应商,订购单号 CHAR(5) PRIMARY KEY,订购日期 DATETIME DEFAULT getdate()4、 建立索引5、 插入一些练习用数据实验二TSQL数据操作:插入,更新。删除一、实验目的通过本实验熟悉TSQL的数据操作功能、数据控制功能二、实验内容: 学会使用各种数据操作、数据控制语句:插入元组、更新元组、删除元组,对指定用户的权限授予和权限回收-插入一个完整的元组INSERT INTO 订购单 VALUES('E7','S4','OR76','05-25-2002') -插入一个不完整的元组INSERT INTO 订购单(职工号,订购单号)VALUES('E7','OR76') -插入一个查询结果(订购单备份不存在,建新表)SELECT *INTO 订购单备份 FROM 订购单 -插入一个查询结果(订购单备份已经存在)INSERT INTO 订购单备份 SELECT * FROM 订购单 select * from 订购单备份-给WH1仓库的职工提高10%的工资UPDATE 职工 SET 工资 = 工资*1.10 WHERE 仓库号 = 'WH1'给所有职工增加10%的工资 UPDATE 职工 SET 工资 = 工资*1.10给“武汉”仓库的职工提高10%的工资 UPDATE 职工 SET 工资 = 工资*1.10FROM 仓库WHERE 仓库.仓库号 = 职工.仓库号 AND 城市='武汉' 实验三 TSQL基本操作:数据查询一、实验目的通过本实验熟悉SQLServer TSQL的数据查询功能、数据操作功能二、实验内容: 学会正确使用各种SQL语句:简单查询、连接查询、嵌套查询及查询用到的几个特殊算符,查询结果的排序,分组及计算查询,视图的操作。三、实验步骤-5.13找出工资多于1230元的职工号和他们所在的城市 SELECT 职工号,城市FROM 职工,仓库WHERE (工资 > 1230) AND (职工.仓库号 = 仓库.仓库号)-或SELECT 职工号,城市FROM 职工 JOIN 仓库ON 职工.仓库号 = 仓库.仓库号WHERE 工资 > 1230-5.14找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市SELECT 职工号,城市FROM 仓库,职工WHERE (面积 > 400) AND (职工.仓库号 = 仓库.仓库号)-或SELECT 职工号,城市FROM 职工 JOIN 仓库ON 职工.仓库号 = 仓库.仓库号WHERE 面积 > 400 -*给出有北京仓库订购单的北京供应商的名称 SELECT 供应商名FROM 供应商,订购单,职工,仓库WHERE 地址='北京' AND 城市='北京'AND 供应商.供应商号=订购单.供应商号AND 订购单.职工号=职工.职工号AND 职工.仓库号=仓库.仓库号 -或SELECT 供应商名FROM 供应商 JOIN 订购单 JOIN 职工 JOIN 仓库ON 职工.仓库号=仓库.仓库号ON 订购单.职工号=职工.职工号ON 供应商.供应商号=订购单.供应商号WHERE 地址='北京' AND 城市='北京'-5.15设有雇员关系,其中雇员号和经理两个属性出自同一个-值域,同一元组的这两个属性值是“上、下级”关系。 create table 雇员(雇员号 char(2),雇员姓名 char(8),经理 char(2)-插入数据insert 雇员 values('E3','赵涌',null)insert 雇员 values('E4','钱潮','E3')insert 雇员 values('E6','孙洁','E3')insert 雇员 values('E8','李渌','E6')SELECT S.雇员姓名,'领导',E.雇员姓名 FROM 雇员 S,雇员 EWHERE S.雇员号 = E.经理 实验五 数据完整性、存储过程与触发器一、实验目的通过本实验了解SQLServer的数据完整性的实现方法;掌握存储过程的创建、执行及其应用场合,了解存储过程返回值及状态信息;掌握触发器的建立和触发器的不同种类及其触发条件和作用机制。二、实验内容1、四种数据完整性及其在SQLServer数据库上的常用手段,按照自己的数据库模式定义相应的数据完整性。2、自行设计、创建存储过程,并执行之3、 自行设计、创建触发器,并执行相应操作,分析触发器有没有被触发-例:创建一个最简单的存储过程CREATE PROCedure sp_getemp;1AS SELECT * FROM 职工-带参数的存储过程:CREATE PROCedure sp_getemp;2(salary int)AS SELECT * FROM 职工 WHERE 工资 > salary-例:执行带参数的sp_getemp;2存储过程execute sp_getemp;1 execute sp_getemp;2 1240 CREATE PROCedure sp_getemp;3(salary int =NULL)AS IF salary IS NULLBEGIN PRINT '必须提供一个数值作参数!' RETURN 13ENDIF NOT EXISTS (SELECT * FROM 职工 WHERE 工资 > salary)BEGIN PRINT '没有满足条件的记录!' RETURN -103ENDSELECT * FROM 职工 WHERE 工资 > salaryRETURN 0-调用示例:无参execute sp_getemp;3 -调用示例:execute sp_getemp;3 1000execute sp_getemp;3 2000-调用示例:接收返回值DECLARE status intEXECUTE status=sp_getemp;3 11200print status-建立一个简单的触发器。CREATE TRIGGER wh_triggerON 仓库FOR INSERT AS PRINT '插入了一个仓库元组'-执行插入insert 仓库 values ('WH1','柳州',511)select * from 仓库-定义一个触发器,使得当删除仓库记录时,同时将所-属所有职工记录的仓库号字段值置为空值NULL: drop trigger w_del_triggerCREATE TRIGGER w_del_triggerON 仓库 FOR DELETEASUPDATE 职工SET 仓库号=NULLWHERE 仓库号 in (SELECT 仓库号 FROM deleted)delete 仓库 where 仓库号='WH1'实验六 安全性控制、备份与恢复一、实验目的通过本实验掌握数据库保护的几种手段:事务、封锁;掌握安全性控制的概念和实现方法,角色、用户、权限管理;掌握数据库的备份与恢复的相关操作命令。二、实验内容-如下命令将订货数据库备份到C:dumpdump1.bak: BACKUP DATABASE 订货 TO DISK='C:dumpdumpfull.bak'-将对订货数据库做增量备份(备份到C:dumpdump1.bak): BACKUP DATABASE 订货 TO DISK='C:dumpdump1.bak' WITH DIFFERENTIAL-将备份订货数据库的日志(备份到C:dumpdumplog.bak): -NORECOVERY只与 BACKUP LOG 一起使用。备份日志尾部并使数据库处于正在还原的状态。-当将故障转移到辅助数据库或在 RESTORE 操作前保存日志尾部时,NORECOVERY 很有用。BACKUP LOG 订货 TO DISK='C:dumpdumplog.bak' WITH NORECOVERY-在备份了订货数据库或事务日志后,为了截断订货管理数据库的事务日志可以使用如下命令: BACKUP LOG 订货 WITH TRUNCATE_ONLY-对订货数据库warehouse文件的备份:(参见下例)BACKUP DATABASE 订货 FILE = 'warehouse' TO DISK ='C:dumpfile_1.bak'BACKUP DATABASE 订货管理 FILE = 'orderman_dat' TO DISK ='C:dumpfile_1.bak'-对订货数据库文件组仓库的备份: BACKUP DATABASE 订货 FILEGROUP = '仓库' TO DISK ='C:dumpfile_g.bak'-RESTORE DATABASE 订货FROM DISK ='C:dumpdumpfull.bak'实验七 用户管理与权限管理一、实验目的理解和体会数据库安全性的内容,加强对DBMS功能的认识二、实验内容1、对象操作授权:将对表和视图的查询和操作权限、对存储过程的执行权限分不同情况授予其他用户,同时取得其他用户的授权,体会安全控制的作用。2、在授权过程中体会GRANT命令中WITH GRANT OPTION短语的作用。3、分情况收回授权,并体会REVOKE命令中GRANT OPTION FOR和CASCADE短语的作用实验八 客户端开发一、实验目的通过本实验掌握开放客户体系结构与ODBC,学会建立ODBC数据源,并能够建立数据源;掌握较先进的数据访问技术:ADO,能够通过ADO访问各种后台数据库;掌握一种数据库客户端开发的工具:如PowerBuilder、Visual FoxPro、VisualBasic、Delphi等。二、实验内容1、建立数据源2、使用客户端开发工具连接数据库3、利用客户端开发工具的数据库访问功能,处理数据库数据4、构成应用程序