实验项目名称:熟悉SQL Server2005环境及数据库文件管理 实验学时: 同组学生姓名:
实验地点:
实验日期: 实验成绩: 批改教师: 批改时间:
实验1熟悉SQL Server2005环境及数据库文件管理
一、实验目的和要求
1、熟悉SQL Server2005工作环境、了解SQL Server2005主要管理工具的用途、掌握登录SQL Server2005的方法。 2、了解数据库对象及构成。 3、掌握数据库快照的使用方法。
4、掌握创建、修改、删除数据库的方法。 5、熟悉如何查看数据库状态、。
6、掌握分离数据库和附加数据库的方法。
二、实验设备、环境
设备:奔腾Ⅳ或奔腾Ⅳ以上计算机
环境:WINDOWS 2000 SERVER或WINDOWS 2003 SERVER、SQL Server2005中文版。
三、实验步骤
1、根据题目要求熟悉SQL Server2005的各种管理工具。 2、分析题意,重点分析题目要求并给出解决方法。
3、按题目要求完成实际操作任务,并将相关文档资料保存在以自己学号命名的文件夹中。 4、提交完成的实验结果。
四、实验内容
一、熟悉SQL Server2005管理工具
SQL Server2005系统提供了大量的管理工具,通过这些管理工具可以对系统实现快速、高效管理。主要管理工具如下: 1、SQL Server Management Studio
(1)对象资源管理器:允许查看和连接到SQL Server、分析器、集成服务器、报表服务器和SQL Mobile。一旦连接到特定的服务,可以在对象节点中查看它的组件,并且可以访问子节点对象。
(2)已注册的服务器:显示当前已注册的服务器。窗格顶部的列表(包括SQL Server、分析服务器、集成服务器、报表服务器和SQL Mobile。允许用户在服务器之间快速转换。 (3)模板资源管理器:提供对查询编辑器的模板和任何用户所创建的自定义模板的快速访
金陵科技学院实验报告
问。模板可以通过SQL Server Management Studio 所支持的任何脚本语言来创建。 (4)解决方案管理器:提供对现存的SQL Server、分析服务器和SQL Mobile的项目的快速访问。当项目被执行时,项目会给出连接、查询和执行的其他函数的详细信息。 2、SQL Server Business Intelligence Development Studio(商业智能)
SQL Server Business Intelligence Development Studio为开发人员提供的一种新的项目开发和管理工具。开发人员可以使用SQL Server Business Intelligence Development Studio设计端到端的商业智能解决方案。 3、SQL Server Configuration
SQL Server Configuration(配置管理器)包含了SQL Server2005服务、SQL Server2005网络配置和SQL Native Client配置3个工具,提供数据库管理人员做服务启动与停止与监控、服务器端支持的网络协议,用户用来访问SQL Server的网络相关设置等工作。 4、SQL Server外围应用配置
SQL Server外围应用配置器是SQL Server2005的新增功能,该工具是用来减少SQL Server的服务数和组件数的一种方法,以帮助保护SQL Server避免出现安全缺口。 5、Database Engine Tuning Advisor(数据库引擎的优化顾问)工具可以完成帮助用户分析工作负荷、提出创建高效索引的建议等功能。 6、SQL Server联机丛书:主要为用户提供帮助。
7、sqlcmd:Sqlcmd工具提供了在命令提示符中输入Transact-SQL语句、系统过程和脚本文件的功能。
8、bcp:Bcp实用工具可以在SQL Server2005实例和用户指定格式的数据文件之间进行大容量的数据复制。 二、熟悉数据库的组成 1、系统数据库
(1)master数据库:master数据库存储SQL Server2005系统的所有系统级信息。包括实例范围的元数据、端点、链接服务器和系统配置设置。
(2)model数据库:Model数据库用作SQL Server2005实例上创建的所有数据库的模板。在SQL Server2005中在三个方面做了重大改变,包括:扩大了最小值取之范围、兼容级别设置为90和PAGE_VERIFY数据库选项设置为CHECKSUM。
(3)msdb数据库:Msdb数据库主要被SQL Server2005代理用于进行复制、作业调度以及管理警报等活动,该数据库通常用于调度任务或排除故障。
(4)tempdb数据库:tempdb数据库是连接到SQL Server2005所有用户都可能用的全局资源,它保存所有临时表和临时存储过程。另外,它还用来满足所有的其他存储要求,例如,存储SQL Server2005工作表。每次启动SQL Server2005时都会重新创建tempdb数据库,以便系统启动时,给数据库总是空的。断开连接时会自动删除临时表和存储过程,并在系统关闭后没有活动的连接。
1
金陵科技学院实验报告
(5)resource数据库:resource数据库是一个只读数据库,它包含了SQL Server2005中的所有系统对象。SQL Server系统对象在物理上持续存在于Resource数据库中,但逻辑上,他们出现在数据库的sys架构上。resource数据库的物理文件名为Mssqlsystemresource.mdf。任意移动或重命名resource数据库文件,SQL Server2005将不能正常启动。 2、数据库快照
数据库提供了一种数据库恢复手段,可以在数据库损坏后,还原数据库到数据库快照时的状态。这是SQL Server2005中的新增功能。
(1)源数据库存在的限制:在使用有快照的源数据库时,存在以下限制。
* 不能对数据库进行删除,分离或还原。
* 源数据库性能受到影响由于每次更新页时对快照进行“写入时复制”操作,导致源数据库上的I/O增加。
* 不能从源数据库或任何快照中删除文件。
* 源数据库必须处于在线状态,除非给数据库在数据库镜像会话中是镜像数据库。 (2)创建数据库快照一般格式:
CREATE DATABASE database_snapshot_name ON
(NAME = logical_file_name,
FILENAME = 'os_file_name' ) [ ,...n ] AS SNAPSHOT OF source_database_name 例:为MyDB创建一个快照。
CREATE DATABASE MyDB_snapshot ON (NAME=MyDB_data,
FILENAME=’D:\\MyDB_snapshot.mdf’)
AS SNAPSHOT OF MyDB
(3)使用数据库快照:如果因为某个错误而损坏了数据库,可以选择将数据库恢复到给错误出现之前的数据库快照。 USE MyDB
RESTORE DATABASE MyDB from DATABASE_SNAPSHOT=’MyDB_ snapshot’ GO (4)删除快照:DROP DATABASE MyDB_snapshot 三、数据库存储文件
SQL Server2005数据库中有三种类型的文件来存储信息。
1、主数据文件:主数据文件包话数据库的启动信息,并指向数据库中的其他文件。用户数据和对象可存储在该文件中,也可以存储在辅助数据文件中。每个数据库只能有一个主数据文件。其扩展名为.mdf。
2、辅助数据文件:辅助数据文件是可选的。由用户定义并存储用户数据。每个数据库可以有多个辅助数据文件,其扩展名为.ndf。
2
金陵科技学院实验报告
3、事务日志文件:事务日志文件是用于保存恢复数据库的日志信息的。每个数据库必须至少有一个日志文件,其扩展名为.ldf。
4、文件组:文件组是将多个数据文件集合起来形成一个整体。每个文件组有一个组名。文件组分为主文件组和次文件组。一个文件只能存放在一个文件组中,一个文件组也只能为一个数据库使用。主文件组包含了所有的系统表。当建立数据库时,主文件组包含数据库文件和未指定组的其他文件。事务日志文件不包含在任何文件组中。 四、创建数据库
1、使用向导创建数据库(参见P65) 2、语句方式创建数据库 (1)最简单的语句创建数据库 Create database databaseName
(2)一般创建数据库的格式 CREATE DATABASE database_name [ ON [ < filespec > [ ,...n ] ] [ , < filegroup > [ ,...n ] ] ] [ LOG ON { < filespec > [ ,...n ] } ] [ COLLATE collation_name ] [ FOR LOAD | FOR ATTACH ] < filespec > ::= [ PRIMARY ]
( [ NAME = logical_file_name , ] FILENAME = 'os_file_name' [ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ] [ , FILEGROWTH = growth_increment ] ) [ ,...n ] < filegroup > ::=
FILEGROUP filegroup_name < filespec > [ ,...n ] 示例:CREATE DATABASE Sales ON ( NAME = Sales_dat,
FILENAME = 'c:\\program files\\microsoft sql server\\mssql\\data\\saledat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 )
LOG ON ( NAME = 'Sales_log',
FILENAME = 'c:\\program files\\microsoft sql server\\mssql\\data\\salelog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) GO
3
金陵科技学院实验报告
3、请按照要求用工具和SQL语句两种方法创建名为MyDB数据库(具体要求参阅P269)。 五、维护数据库 1、修改数据库名称
(1)使用ALTER DATABASE语句
ALTER DATABASE databaseName MODIFY NAME=newdatabaseName (2)使用存储过程
EXEC sp_dboption‘databaseName’,’SINGLE,True/*首先将数据库设置为单用户模式*/ EXEC sp_renamedb ‘databaseName’,’newdatabaseName’/*修改数据库名*/ EXEC sp_dboption ‘newdatabaseName’,’SINGLE’,False/*取消单用户模式*/ (3)从资源管理器窗口修改数据库名 2、修改数据库大小
(1)设置数据库文件为自动增长方式。 (2)直接修改数据库文件的大小。 (3)增加辅助数据库文件。 示例:CREATE DATABASE Test1 ON (NAME = Test1dat1,
FILENAME = 'c:\\Program Files\\Microsoft SQL Server\\MSSQL\\Data\\t1dat1.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) GO ALTER DATABASE Test1
ADD FILE (NAME = Test1dat2,
FILENAME = 'c:\\Program Files\\Microsoft SQL Server\\MSSQL\\Data\\t1dat2.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB)
(4)请参照示例用SQL语句为MyDB数据库增加一的辅助数据库文件MyDB2,其大小为3MB,最大为10MB,按照10%增长。 3、收缩数据库
(1)设置数据库为自动收缩 (2)手动收缩数据库
(3)使用DBCC SHRINKDATABASE命令收缩数据库
该命令是一种比自动收缩数据库更加灵活的收缩数据库方式。可以对整个数据库进行收缩。 示例:DBCC SHRINKDATABASE (UserDB, 10)
/*该命令将 UserDB用户数据库中的文件减小以使 UserDB 中的文件有 10% 的可用空间*/ (4)请使用该命令将MyDB数据库收缩到有10%的可用空间。 4、删除数据库 (1)使用管理工具 (2)使用T-SQL语句
4
金陵科技学院实验报告
DROP DATABASE database_name [ ,...n ] 5、查看数据库状态
(1)使用DATABASEPROPERTYEX函数。
DATABASEPROPERTYEX( database , property ) /* property是表明应返回的选项或属性设置的表达式。*/
示例:SELECT DATABASEPROPERTYEX(‘Mydb’,’status’) AS ‘当前数据库状态’ (2)使用sys.database_files查看有关数据库文件的信息。 (3)使用sys.filegroups查看数据库文件组的信息。 (4)使用sys.maste_files查看数据文件的基本信息和状态。 6、分离数据库
分离数据库是数据库从SQL Server实例上删除,但是数据文件事务日志文件任然保持不变。 注意:分离数据库如果出现下列情况之一,则不允许分离。 *已复制并发数据库
*数据库中存在数据库快照。 *数据库处于未知状态。
(1)使用语句分离数据库 示例:exec sp_detach_db MyDB (2)可以使用工具 7、附加数据库
附加数据库时,所有的数据文件(.mdf文件和.ndf文件)都必须是可用的。如果任何数据文件的路径和创建时或上次附加数据库时的路径不同,则必须指定文件的当前路径。在附加数据库的过程中,如果没有日志文件,系统将创建一个新的日志文件。 (1)使用工具附加数据库 (2)使用SQL语句附加数据库 示例: CREATE DATABASE Sales ON ( NAME = ‘Sales_dat’,
FILENAME = 'c:\\program files\\microsoft sql server\\mssql\\data\\saledat.mdf' ) LOG ON( NAME = 'Sales_log',
FILENAME = 'c:\\program files\\microsoft sql server\\mssql\\data\\salelog.ldf') FOR ATTACH
(3)请用上述两种方法将MyDB数据库附加到实例中。
五、问题解答及实验结果
四、创建数据库
create Database mydatabase
on primary
(name=mydatabase_data,filename='f:\\data\\mydatabase_data.mdf', size=10MB,maxsize=500MB,filegrowth=10%) log on
5
金陵科技学院实验报告
(name =mydatabase,filename='f:\\data\\mydatabase_data.ldf',size=5MB,maxsize=500MB, filegrowth=2MB) 五、维护数据库
(1)修改数据库名称
ALTER DATABASE mydatabase MODIFY NAME=Newmydatabase (2)删除数据库
drop database mydatabase (3)附加数据库
CREATE DATABASE mydatabase ON
( NAME = ‘mydatabase_dat’, FILENAME = 'f:\\database\\mydatabase_dat.mdf' ) LOG ON
( NAME = 'mydatabase_log', FILENAME = 'f:\\database\\mydatabase_dat.ldf') FOR ATTACH (4) 存储过程
EXEC sp_dboption ‘mydatabase’,’SINGLE’,True /*首先将数据库设置为单用户模式*/ EXEC sp_renamedb ‘mydatabase’,’Newmydatabase’ /*修改数据库名*/ EXEC sp_dboption ‘newdatabaseName’,’SINGLE’,False /*取消单用户模式*/
六、实验体会和收获
实验项目名称: 表和表数据的操作 实验学时: 同组学生姓名:
实验地点:
实验日期: 实验成绩:
6
金陵科技学院实验报告
批改教师: 批改时间:
实验2 表和表数据的操作
一、实验目的和要求
1、了解表的类型及创建方法。 2、熟悉各种数据类型。 3、掌握列的各种属性。
4、掌握自定义数据类型的创建方法。 5、掌握用T-SQL语言和工具创建表的方法。 6、掌握工具和T-SQL语言插入数据的方法。
二、实验设备、环境
设备:奔腾Ⅳ或奔腾Ⅳ以上计算机
环境:WINDOWS 2000 SERVER或WINDOWS 2003 SERVER、SQL Server2005中文版。
三、实验步骤
1、根据题目要求熟悉SQL Server2005的各种管理工具。 2、分析题意,重点分析题目要求并给出解决方法。
3、按题目要求完成实际操作任务,并将相关文档资料保存在以自己学号命名的文件夹中。 4、提交完成的实验结果。
四、实验内容
一、表的概述
1、何为表:在关系数据库中每一个关系都体现为一张表。表是用来存储数据和操作数据的逻辑结构,关系数据库中所有的数据都表现为表的形式。 2、表的类型
在SQL Server2005中,可以把表分为4种类型,即普通表、分区表、临时表和系统表。每一种表都有其自身的作用和特点。
(1)普通表:又称为标准表,就是通常所说的数据库中存储数据的标,是最常使用的表对象,是最重要和最基本的表。
(2)分区表:分区表示将数据水平划分成多个单元的表,这些单元的表可以分散到数据库中的多个文件组里,以实现对单元中数据的并行访问。其优点在于可以方便地管理大型表,提高对这些表中数据的使用效率。
(3)临时表:临时表是临时创建的、不能永久生存的表。又可以分为本地临时表和全局临时表。本地临时表以#大头,它们仅对当前的用户连接时可见的,当用户从SQL Serve2005实理断开连接时被删除;全局临时表以##打头,创建后任何用户都是可见的,当所有引用该表的用户从SQL Server2005中断开连接时被删除。
(4)系统表:系统表与普通表的区别在于,系统表存储了有关SQL Server2005服务器的配置、数据库设置、用户和表对象的描述等信息。
7
金陵科技学院实验报告
二、列 1、列数据类型
在设计表的时候,需要知道每列字段的数据类型。SQL Server2005系统提供了28种数据类型,主要分为七大类。
(1)精确数字类型:这些数据类型的数据可以参加各种数学运算,所有的数值都是有精度的,精度是指有效数字位数。如整数数据类型:binint、int、smalling、tinyint;位数据类型bit;货币数据类型:Money、Smallmoney等。
(2)近似数字类型:在现实计算中,还有一些数据没有精确数值,如1/3,它无法用精确数字类型表示,需要由系统来定义精确到哪一位,这种类型就是近似数据类型。如:Decimal和Numeric;Float和Real等。
(3)字符数据类型:它是存储各种字母数字符号和特殊符号。在使用该数据类型时,需要用用单引号或双引号括起来。SQL Server2005主要提供了Char、Varchar、Text3中数据类型。 (4)Unicode字符数据类型:Unicode是一种在计算机上使用的字符编码。它为每一种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。SQL Server2005主要有:Nchar、Nvarchar、Ntext三种。
(5)二进制数据类型:二进制数据类型可以用来存储二进制的数据。主要有:Binary、Varbinary、Image三种类型。
(6)日起和时间数据类型:在SQL Server2005中,日起和时间类型主要包括:datetime 和smalldatetime两种。两者区别在于其表示的日期和时间的范围不同,时间的精确度也不同。 (7)其他数据类型:SQL Server2005系统还提供了Cursor、Sql_varant、Table、Timestamp、Uniqueidentifie、XML6种特殊用途的数据来型。 2、列的其他属性
(1)NULL和NOT NULL:定义属性列时可以规定该列是否可以为空。
(2)默认值:当某个属性的值大部分的取值都是相同时,可以使用默认值来减少插入数据时的时间。
(3)IDENTITY:使用IDENTITY关键字定义的字段为标识字段,标识字段是唯一标识每条记录的特殊字段,当一条新记录添加时,这个字段就被自动赋予一个新值。默认情况下是+1递增。 三、创建表
1、使用SQL Server Management Studio工具在MyDB数据库中创建Student和Class表。 Student表的结构为:
字段名 SNO SName Sex 类型 Char(8) Varchar(10) Char(2) 中文名 学号 姓名 性别 备注 主键 男、女 8
金陵科技学院实验报告
ClsNO StuAddr Birthday Height Char(6) Varchar(20) SmallDate Numeric(4,2) 班级 住址 出生年月 身高 总学分 中文名 班号 班名 辅导员 专业 班级的编号,参照表Class 描述性说明 以米为单位表示学生的身高。 备注 主键 对班级的描述信息 班级的辅导员 TotalCredit Tinyint Class表的结构为:
字段名 ClsNO ClsName Director Specialty 类型 Char(6) Varchar(16) Varchar(10) Varchar(30) 2、使用T-SQL语言在MyDB数据库中创建Course和Grade表 Course表的结构为:
字段名 CNO CName PCNO Credit
Grade表的结构为:
字段名 SNO CNO Scorce Credit 类型 Char(8) Char(4) 中文名 学号 课程号 备注 学号,参照Student,与CNO组成主键 课程号,参照Course 类型 Char(4) Varchar(16) char(4) Tinyint 中文名 课程号 课程名 先修课程 学分 备注 主键 课程的名称 先修课程的课程号 Numeric (4,1) 成绩 Tinyint 学分 四、自定义数据类型
(1)使用SQL Server Management Studio工具创建用户自定义数据类型:studentNo,char(8) (2)系统存储过程sp_addtype 创建用户自定义数据类型:courseNo,char(4) (3)修改MyDB数据库中的各表,学号和课程号应用自定义的数据类型。
五、修改表结构
(1)使用Alter修改Student表结构,使其增加一列Department(系别)Char(12)。 (2)使用SQL Server Management Studio工具删除刚刚增加的Department。 六、插入数据
使用SQL Server Management Studio工具或insert into语句分别向下列表格插入数据。 (1)向表(Student)中插入数据 SNO 19920101 19920102 19920306
SName Sex 王军 李杰 王彤 男 男 女 ClsNO StuAddr CS01 CS01 MT04 下关40# 江边路96# 中央路94# 9
Birthday 1976.12.21 1974.5.24 1977.3.18 Height 1.76 1.72 1.65 TotalCredit 10 9 9 金陵科技学院实验报告
19940106 吴杪 女 PH08 莲化小区74# 1979.4.8 1.60 4 插入数据之后使用命令:Select * from Student; 检查插入数据的正确性 (2)向表(Class)中插入数据 ClsNO CS01 MT04 PH08 ClsName 计算机一班 数学四班 物理八班 Director 王宁 陈晨 葛格 Specialty 计算机应用 数学 物理 插入数据之后使用命令:Select * from Class; 检查插入数据的正确性 (3)向表(Course )中插入数据 CNO 0001 0003 0007 CName 数学 计算机基础 物理 PCNO Null 0001 0001 Credit 6 3 4 插入数据之后使用命令:Select * from Course; 检查插入数据的正确性 (4)向表(Grade )中插入数据 SNO 19920101 19920101 19920102 19920102 19920306 19920306 19940106 CNO 0001 0007 0001 0003 0001 0003 0007 Score 90 86 87 76 87 93 85 Credit 6 4 6 3 6 3 4 插入数据之后使用命令:Select * from Grade; 检查插入数据的正确性 七、删除表中的数据
(1)使用SQL Server Management Studio工具删除课程号为0001的选课记录。 (2)使用T-SQL语言删除Grade表中学号为19920101的数据 八、删除表格
(1)使用SQLSQL Server Management Studio工具删除Class表。 (2)使用Drop Table命令删除Grade表。
*注意在删除之前,请将数据文件拷贝一个副本,已备以后使用。
五、问题解答及实验结果
三、创建表
(1)创建Student表
CREATE TABLE [dbo].[Student](
[SNO] [char](8) COLLATE Chinese_PRC_CI_AS NOT NULL, [SName] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL, [Sex] [char](2) COLLATE Chinese_PRC_CI_AS NOT NULL,
10
金陵科技学院实验报告
[ClsNO] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL, [StuAddr] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL, [Birthday] [smalldatetime] NOT NULL, [Height] [numeric](4, 2) NOT NULL, [TotalCredit] [tinyint] NOT NULL,
CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED ( [SNO] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] (2)创建class表
CREATE TABLE [dbo].[Class](
[ClsNO] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL, [ClsName] [varchar](16) COLLATE Chinese_PRC_CI_AS NULL, [Director] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL, [Specialty] [varchar](30) COLLATE Chinese_PRC_CI_AS NULL,
CONSTRAINT [PK_Class] PRIMARY KEY CLUSTERED ( [ClsNO] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] (3)创建Course表
CREATE TABLE [dbo].[Course](
[CNO] [char](4) COLLATE Chinese_PRC_CI_AS NOT NULL, [CName] [varchar](16) COLLATE Chinese_PRC_CI_AS NULL, [PCNO] [char](4) COLLATE Chinese_PRC_CI_AS NULL, [Credit] [tinyint] NULL,
CONSTRAINT [PK_Course] PRIMARY KEY CLUSTERED ( [CNO] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] (4)创建grade表
CREATE TABLE [dbo].[Grade](
[SNO] [char](8) COLLATE Chinese_PRC_CI_AS NOT NULL, [CNO] [char](4) COLLATE Chinese_PRC_CI_AS NOT NULL, [Scorce] [numeric](4, 1) NULL, [Credit] [tinyint] NULL,
CONSTRAINT [PK_Grade] PRIMARY KEY CLUSTERED ( [SNO] ASC,
[CNO] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY]
四、自定义数据类型
use MyDB
create table Grade ( SNO char(8) not null,
11
金陵科技学院实验报告
CNO char(4) not null, Scorce Numeric (4,1), primary key(SNO,CNo)) USE MyDB GO
EXEC sp_addtype courseNo,'char(4)','NOT NULL'; GO
五、修改表结构
alter table Student add Department Char(12)
六、插入数据
insert into student values('19920101','王军','男','CS01','下关#','1976.12.21',1.76,10);
insert into student values('19920102','李杰','男','CS01','江边路#','1974.5.24',1.72,9);
insert into student values('19920306','王彤','女','MT04','中央路#','1977.3.18',1.65,9);
insert into student values('19940106','吴杪','女','PH08','莲化小区#','1979.4.8',1.60,4) delete from student
insert into Class values('CS01','计算机一班','王宁','计算机应用'); insert into Class values('MT04','数学四班','陈晨','数学'); insert into Class values('PH081','物理八班','葛格','物理'); insert into Course values('0001','数学',Null,6)
insert into Course values('0003','计算机基础','0001',3) insert into Course values('0007','物理','0001',4) insert into Grade values('19920101','0001',90,6) insert into Grade values('19920101','0007',86,4) insert into Grade values('19920102','0001',87,6) insert into Grade values('19920102','0003',76,3) insert into Grade values('19920306','0001',87,6) insert into Grade values('19920306','0003',93,3) insert into Grade values('19940106','0007',85,4)
六、实验体会和收获
实验项目名称: 约束、默认和规则 实验学时: 同组学生姓名:
实验地点:
实验日期: 实验成绩: 批改教师: 批改时间:
实验3 约束、默认和规则
一、实验目的和要求
1、理解数据库中的实体完整性约束,掌握PRIMARY KEY、UNIQUE、NOT NULL 等约束的创建方法。
2、理解参照完整性约束的概念,掌握FORENGN KEY 创建方法。
12
金陵科技学院实验报告
3、理解域完整性的概念,掌握CHECK及规则的创建方法。 4、理解默认值的概念,掌握默认值和默认对象的创建方法。
二、实验设备、环境
设备:奔腾Ⅳ或奔腾Ⅳ以上计算机
环境:WINDOWS 2000 SERVER或WINDOWS 2003 SERVER、SQL Server2005中文版。
三、实验步骤
1、根据题目要求熟悉SQL Server2005的各种管理工具。 2、分析题意,重点分析题目要求并给出解决方法。
3、按题目要求完成实际操作任务,并将相关文档资料保存在以自己学号命名的文件夹中。 4、提交完成的实验结果。
四、实验内容
1、约束在数据库中的应用
(1)用系统存储过程sp_helpconstraint查看student表的约束。
(2)在新建查询中输入插入一个学生信息的命令:
insert into student(SNO,Sname,Sex,ClsNO,StuAddr,Brithday,Height,TotalCredit) values(‘19920101’,’王军’,1976.12.21’,1.76,10),观察其结果。
男
’,’CS01’,’
下
关
40#’,’
修改SNO的值,将其值修改为’19000001’,其他的值保持不变再插入一次观察其结果。 (3)修改studeng表,使用Check约束,使性别列只能接受“男”或“女”,以强制执行域数据完整性。重做(1),观察其结果。
(4)禁止student表中的sex列上的约束:alter table student nocheck constraint ck_student
(5)删除约束:alter table student drop constraint ck_xsqk。重做(1)。 (6)利用关系图,建立student表与course表与grade表的主外键约束。 2、默认的应用
(1)创建默认对象:default_birthday,默认值为’1982-1-1’。
CREATE DEFAULT default_birthday AS ‘1982-01-01’
(2)利用系统存储过程sp_bindefault将default_birthday绑定到student表的Birthday列上。
(3)利用系统存储过程sp_unbindefault解除student表的Birthday列上的默认值绑定。 (4)删除默认值:DROP DEFAULT default_birthday
(5)定义一个默认值为4的Default_Value,并将它绑定到course表的Credit列上,绑定后给course插入数据行,观察默认值的设置情况,使用完毕后,解除并删除绑定。实现过程要求使用SQL语句完成。
3、规则的应用
(1)利用企业管理器创建规则:规则名为:rule_credit_range,文本为:@range>=1 and @range<=8
(2)绑定规则:将rule_credit_range 绑定到Class表的course列上。
(3)解除(2)中设置的规则绑定,删除规则rule_ credit _range。
(4)定义一个规则rule_Specialty,这个规则限制Class表中的Specialty列只能取以下的值:计算机应用、信息管理、数学、物理。将该规则绑定到Class表后,向Class表插入
13
金陵科技学院实验报告
数据行,观察规则的设置情况,使用完毕后,解除并删除该规则。
五、问题解答及实验结果
1、(1)exec sp_helpconstraint student
(2)insert into
student(SNO,Sname,Sex,ClsNO,StuAddr,Birthday,Height,TotalCredit) values('19920101','王军','男','CS01','下关#','1976.12.21',1.76,10) /* 消息2627,级别14,状态1,第1 行
违反了PRIMARY KEY 约束'PK_Student_1'。不能在对象'dbo.student' 中插入重复键。语句已终止。*/ insert into
student(SNO,Sname,Sex,ClsNO,StuAddr,Birthday,Height,TotalCredit) values('19000001','王军','男','CS01','下关#','1976.12.21',1.76,10) /*(1 行受影响)*/ (3)alter table Student
add constraint c_stusex check(Sex in('男','女')) (4)alter table student nocheck constraint c_stusex (5)alter table student drop constraint c_stusex
(6)利用关系图,建立student表与course表与grade表的主外键约束。 2、默认的应用
(1)创建默认对象:default_birthday,默认值为’-1-1’。 CREATE DEFAULT default_birthday AS '1982-01-01'
(2)exec sp_bindefault 'default_birthday','Student.Birthday' insert into student(SNO) values ('1') (3)exec sp_unbindefault 'Student.Birthday' (4)DROP DEFAULT default_birthday (5)CREATE DEFAULT default_value AS 4
exec sp_bindefault 'default_value','Course.Credit' insert into Course(CNO) values('1000') exec sp_unbindefault 'Course.Credit' DROP DEFAULT default_value 3、(1)CREATE RULE rule_credit_range AS
@range>=1 and @range<=8
(2)exec sp_bindrule 'rule_credit_range','Course.Credit' (3) exec sp_unbindrule 'Course.Credit' drop rule rule_credit_range (4) CREATE RULE rule_Specialty AS
@specialty in ( '计算机应用','信息管理','数学','物理') exec sp_bindrule 'rule_Specialty','Class.Specialty' insert into Class values('PH081','物理八班','葛格','物理'); exec sp_unbindrule 'Class.Specialty'
14
金陵科技学院实验报告
drop rule rule_Specialty
六、实验体会和收获
这次实验的主要目的是理解数据库中的实体完整性约束,掌握PRIMARY KEY、UNIQUE、NOT NULL 等约束的创建方法,理解参照完整性约束的概念,掌握FORENGN KEY 创建方法,理解域完整性的概念,掌握CHECK及规则的创建方法,理解默认值的概念,掌握默认值和默认对象的创建方法。
约束是强制实现数据完整性的主要途径,我认识到很多东西都要在实践中学习才会学到更多。
实验项目名称: 关系、索引和视图 实验学时: 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:
实验4 关系、索引和视图
一、实验目的和要求
1、理解关系图的含义及用途,掌握关系图的创建方法。
15
金陵科技学院实验报告
2、理解视图的基本概念、种类及利用视图修改数据时的限制,掌握视图的创建方法。 3、理解索引的基本概念及其优缺点,掌握创建索引的方法。
二、实验设备、环境
设备:奔腾Ⅳ或奔腾Ⅳ以上计算机
环境:WINDOWS 2000 SERVER或WINDOWS 2003 SERVER、SQL Server2005中文版。
三、实验步骤
1、根据题目要求熟悉SQL Server2005的各种管理工具。 2、分析题意,重点分析题目要求并给出解决方法。
3、按题目要求完成实际操作任务,并将相关文档资料保存在以自己学号命名的文件夹中。 4、提交完成的实验结果。
四、实验内容
1、创建关系图
根据实际情况,为MyDB数据库创建关系图。其中包括:Student、Course、Grade、Class四张表格,选择表中相应的属性建立表间的关联。 2、视图的创建、查询、修改和删除。
(1)创建一个名为V_Student以显示学生的学号、姓名、性别和出生年月等基本信息。 (2)创建一个名为创建一个视图V_grade,以显示“001”号课程的学生成绩信息,如学号、姓名、课程名称、成绩和学分等。
(3)分别利用视图V_Student和V_grade作查询和更新操作。
(4)修改V_Student视图的定义,为其增加一个条件,使得该视图只显示“CS01”班的学生的基本信息。
(5)删除名为V_Student的视图。 3、索引的创建、查看和删除。
(1)为Student表创建一个基于总学分和学号的索引idex_total_xh,其中总学分按降序排列,当总学分相同时,按学号升序排列,填充因子为80%。
(2)学生表创建一个基于班级和姓名的索引idex_clas_name,其中按班号按升序、学生姓名按降序排列,填充因子为70%。 (3)利用索引管理器查看索引。
(4)删除索引idex_total_xh。再利用索引管理器查看索引。
注:以上3题除了第一题,其余各题均需要使用工具和SQL语言两种方法来完成。并将SQL语句按题号保存在自己的文件夹下的实验四目录中。
五、问题解答及实验结果
2、视图的创建、查询、修改和删除
()create view V_Student
as select SNO,SName,Sex,Birthday from Student
(2)create view V_Grade
16
金陵科技学院实验报告
as SELECT dbo.Student.SNO, dbo.Student.SName, dbo.Grade.Grade, dbo.Course.CName, dbo.Grade.CNO FROM dbo.Grade INNER JOIN
dbo.Course ON dbo.Grade.CNO = dbo.Course.CNO INNER JOIN
dbo.Student ON dbo.Grade.SNO = dbo.Student.SNO WHERE (dbo.Grade.CNO = '0001')
(3)select * from dbo.V_Grade where SNO='19920101' update V_Grade set Grade=8 where SNO='19920101' select * from V_Student where SName='李杰' (4)alter view V_Student
as select SNO,SName,Sex,Birthday from Student where ClsNo =' CS01 ' (5)drop view dbo.V_ Student
六、实验体会和收获
实验项目名称: T-SQL程序设计 实验学时: 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:
实验5 T-SQL程序设计
一、实验目的和要求
1、掌握T-SQL中运算符和表达式的使用。
2、通过对Select的使用,掌握Select语句的结构及其应用。 3、掌握T-SQL中几个常用流程控制语句的使用。 4、掌握系统内置函数的概念及其应用。
5、通过定义和使用用户自定义函数,掌握自定义函数的概念及其应用
二、实验设备、环境
设备:奔腾Ⅳ或奔腾Ⅳ以上计算机
17
金陵科技学院实验报告
环境:WINDOWS 2000 SERVER或WINDOWS 2003 SERVER、SQL Server2005中文版。
三、实验步骤
1、根据题目要求熟悉SQL Server2005的各种管理工具。 2、分析题意,重点分析题目要求并给出解决方法。
3、按题目要求完成实际操作任务,并将相关文档资料保存在以自己学号命名的文件夹中。 4、提交完成的实验结果。
四、实验内容
一、SQL查询(*使用SQL Server样例数据库pubs完成) 1、简单查询
(1)查询所有作者的作者号、姓名信息;(authors表)
(2)查询所有作者的姓名和作者号信息,并在每个作者的作者号前面显示字符串“身份证号:”表明显示信息是身份证信息;(authors表)
(3)改变显示列名。显示所有作者的姓名信息和作者号信息,要求用“名”和“姓”来区别fname和lname,“作者编号”来区分作者号;(authors表) (4)查询所有书在价格提高10%后的价格和书名信息;(titles表) (5)查询所有书的书号和税后价格。(titles表,royalty列表示税率);
(6)查询所有作者的姓和“名的第一个字符”以及作者号;(authors表,SUBSTRING函数) (7)查询邮政编码大于9000的作者姓名和电话信息;(authors表) (8)查询在CA州的作者姓名和城市;(authors表)
(9)查询出版日期在1/1/1991到12/31/1991之间的书名(书名限制为38个字符)和出版日期;(titles表,SUBSTRING函数)
(10)查询书的类型是mod_cook或trad_cook的书名和它的类型;(titles表) (11)查询店名中包含Book的店的信息;(stores表); (12)查询所有无价格的图书;(titles表)
(13)查询书名以T开头或者出版号为0877,且价格大于16美元的书的信息;(titles表) (14)查询所有作者的所在城市和州名,要求没有重复信息;(authors表) (15)按照类型的升序和价格的降序显示书的信息;(titles表) 2、生成汇总数据
(1)计算多少种书已被定价;(titles表)
(2)计算每本书的书号及它的售书总量;(sales表) (3)求销售量大于30的书号及销售数量;(sales表)
(4)显示在1994年1月1日到1994年10月31日间,每本书的销售总额;(sales表,titles表) 3、连接查询
(1)求每本杂志上刊登的文章;(titles, publishers表)
18
金陵科技学院实验报告
(2)求某书店销售某书的数量;(titles, stores, sales表) (3)查询所有合著的书及其作者。 (4)显示所有已销售的书名。 4、子查询
(1)查询有销售记录的所有书信息,包括书的编号、书名、类型和价格; (2)求已销售的书的信息; 二、函数
1、自定义一个名为Sage_func函数,按出生年月计算年龄。然后从Student表中检索出含有年龄的学生信息。
2、定义一个名为grade_func的自定义函数,将成绩从百分制转化为五级记分制。将该用户定义函数用在查询每个学生的成绩中,给出五级记分制的成绩。 三、流程控制
1、Student表中若存在学号为“19920101”的学生,则显示已存在的信息,否则插入该学生的记录。然后从student表中删除学号为“19920101”的学生记录,重新执行该程序,观察与上次有何不同。
2、使用While语句求1到100之间的累加和,输出结果。
五、问题解答及实验结果
1、简单查询
(1) select au_id,au_lname,au_fname from authors
(2) select au_lname,au_fname,'身份证号:',au_id from authors
(3) select au_id '作者编号',au_lname '姓',au_fname '名' from authors (4) select title,price*1.1 newprice from titles
(5) select title_id,price*(1+royalty) newprice from titles (6) select au_id,au_lname,SUBSTRING(au_fname,1,1) au_fname from
authors (7) select au_id,au_lname,au_fname,phone from authors where zip>9000 (8) select au_id,au_lname,au_fname from authors where state='CA' (9) select substring(title,1,38) title,pubdate from titles where pubdate
between '1/1/1991' and '12/31/1991'
(10)select title,[type] from titles where [type] in
('mod_cook','trad_cook')
(11)select distinct(city),state from authors (12)select * from titles where price is null
(13)select * from titles where (title like 'T%' or pub_id='0877') and
price>16 (14)select * from stores where stor_name like '%Book%'
2、生成汇总数据
(1) select titles.title_id, sum(sales.qty)*titles.price totalmoney
from sales,titles
where titles.pubdate between '1994/1/1' and '1994/10/31'
19
金陵科技学院实验报告
group by sales.title_id,titles.price,titles.title_id
having(sales.title_id=titles.title_id)
(2) select title_id,sum(qty) qty from sales group by title_id (3)select title_id,sum(qty) qty from sales group by title_id having
(sum(qty)>30)
(4) select count(title_id) num from titles where price is not null
3、连接查询
(1)select distinct(a.title_id),b.au_id,a.au_id from titleauthor
a,titleauthor b
where a.title_id=b.title_id
(2)select a.title,b.stor_name,c.qty from titles a,stores b ,sales c where a.title_id=c.title_id and b.stor_id=c.stor_id (3)select a.title,b.pub_name from titles a,publishers b where a.pub_id=b.pub_id
4、子查询
(1) select * from titles,sales where sales.title_id=titles.title_id (2) select sales.title_id,titles.title,titles.[type],titles.price from
titles,sales where sales.title_id=titles.title_id
二、函数
(1)CREATE FUNCTION Sage_func ( @vardate datetime , @curdate datetime ) RETURNS tinyint AS BEGIN RETURN datediff ( yy , @vardate , @curdate ) END
select SNO as 学号, SName as 姓名, dbo.Sage_func(Birthday,getdate()) as 年龄
from Student
(2)CREATE FUNCTION grade_func ( @Scorce int ) RETURNS tinyint AS BEGIN RETURN @Scorce/20 END
select SName as 姓名, dbo.grade_func(Scorce) as 五级分制 from Grade,Student where Grade.SNO=Student.SNO--三、流程控制
三、流程控制
(1)IF exists (select * from Student where SNO='19920101')
BEGIN
select * from Student where SNO='19920101'
END ELSE BEGIN
insert into Student values('19920101','王军','男','CS01','下关
#','1976-12-21 00:00:00',1.82,10) END
delete from Student where SNO='19920101' (2) declare
20
金陵科技学院实验报告
@sum int, @start int set @start=1 set @sum=0
begin
while(@start<101) begin
set @sum=@sum+@start set @start=@start+1
end
print @sum end
六、实验体会和收获
实验项目名称: 存储过程和触发器 实验学时: 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:
实验6 存储过程和触发器
一、实验目的和要求
1、 通过对常用系统存储过程的使用,了解存储过程的类型。
2、 通过创建和执行存储过程了解存储过程的基本概念掌握使用存储过程操作技巧和方法 3、 通过对已创建的存储过程的改变,掌握修改、删除存储过程的技巧。 4、 了解触发器的基本概念,理解触发器的功能。 5、 掌握创建、修改和删除和使用触发器的操作方法。
二、实验设备、环境
设备:奔腾Ⅳ或奔腾Ⅳ以上计算机
环境:WINDOWS 2000 SERVER或WINDOWS 2003 SERVER、SQL Server2005中文版。
三、实验步骤
1、根据题目要求熟悉SQL Server2005的各种管理工具。 2、分析题意,重点分析题目要求并给出解决方法。
3、按题目要求完成实际操作任务,并将相关文档资料保存在以自己学号命名的文件夹中。
21
金陵科技学院实验报告
4、提交完成的实验结果。
四、实验内容
一、存储过程的类型。
1、使用sp_helptext查看byroyalty存储过程的文本,该存储过程在数据库pubs中。 二、创建与执行存储过程
1、在MyDB中创建存储过程proc_1,要求实现如下功能:产生学分为4的课程学生选课情况列表,其中包括课程号、课程名、学分、学号、姓名、专业、性别等。并调用此存储过程,显示执行结果。
2、在MyDB中创建存储过程proc_2,要求实现如下功能:输入专业名称,产生该专业学生的选课情况列表,其中包括专业、学号、姓名、课程号、课程名、成绩、学分等。并调用此存储过程,显示“计算机应用”专业学生的选课情况列表。
3、在MyDB中创建存储过程proc_3,要求实现如下功能:输入学生学号,根据该学生所选课程的总学分显示提示信息,如果总学分<9,则显示“此学生学分不足!”,否则显示“此学生学分已足!”,并调用此存储过程,显示“19920102”学生的总学分情况。 三、修改存储过程
1、对MyDB中已创建的存储过程proc_1进行修改,要求在显示列表中增加班级字段,即产生学分为“4”的课程学生选课情况列表,其中包括课程号、课程名、学分、学号、姓名、专业、班级、性别等。
2、在MyDB中创建的存储过程proc_2进行修改,要求实现如下功能:输入专业名称,产生该专业所有男生的选课情况列表,其中包括专业、学号、姓名、课程号、课程名、成绩、学分等。并调用修改后的存储过程,显示“计算机应用”专业男生的选课情况列表。 3、对MyDB中已创建的存储过程proc_3进行修改,要求实现如下功能:输入学生学号,根据该学生所选课程的总学分显示提示信息,如果总学分<9,则显示“此学生所选总学分为XXX,学分不足!”,否则显示“此学生所选总学分为XXX,学分已足!”。并调用修改后的存储过程,显示“19920102”学生的总学分情况。 四、删除存储过程
1、删除MyDB中的存储过程proc_1。 五、创建触发器
1、创建触发器trigger_1,实现当修改学生表(Student)中的数据时,显示提示信息“学生情况表被修改了”。
2、在MyDB中创建触发器trigger_2,实现如下功能:当在学生成绩表(Gread)中删除一条学生选课信息后,自动实现更新该学生在学生情况表(Student)中的总学分信息。 3、创建触发器trigger_3,实现当修改学生情况表(Student)中的某个学生的学号时,对应学生成绩表(Grade)中的学号也作修改。 六、修改触发器
22
金陵科技学院实验报告
1、对已创建的触发器trigger_1进行修改,实现当修改学生情况表(Student)中的数据时,显示提示信息“学生情况表中XXX号学生记录被修改了”。 七、删除触发器
1、删除学生情况表上的触发器trigger_1。
五、问题解答及实验结果
一、存储过程的类型
use pubs exec sp_helptext byroyalty
二、创建与执行存储过程
1、if exists (select name from sysobjects where name ='proc_8_t1 'and type
='p') drop procedure proc_8_t1 go create procedure proc_8_t1
as select xskc.课程号,课程名,xskc.学分,xsqk.学号,姓名,系别,专业,性别 from xsqk,xskc,xscj
where xscj.课程号=xskc.课程号and xscj.学号=xsqk.学号and xscj.学分='4' exec sp_helptext proc_8_t1 exec proc_8_t1
2、if exists (select name from sysobjects where name ='proc_8_t2' and
type='p') drop procedure proc_8_t2
Go create procedure proc_8_t2(@speciality varchar(255))
As select 专业,xscj.学号,姓名,xscj.课程号,课程名,xscj.学分,xscj.成绩 from xsqk,xscj,xskc
where xsqk.专业=@speciality and xsqk.学号=xscj.学号and xscj.课程号=xskc.课程号 exec sp_helptext proc_8_t2 exec proc_8_t2 '信息管理'
3、if exists(select name from sysobjects where name = 'proc_8_t3' and type
='p') drop procedure proc_8_t3
Go create procedure proc_8_t3(@学号 varchar(255)) As declare @总学分 char(2)
select @总学分=总学分 from xsqk where 学号=@学号 if(@总学分<9) print '学分不足' else print'学分已充足'
go exec sp_helptext proc_8_t3 exec proc_8_t3 '02020101'
三、修改存储过程
1、alter procedure proc_8_t1
as select xskc.课程号,课程名,xskc.学分,xsqk.学号,姓名,系别,专业,性别,班级 from xsqk,xskc,xscj
where xscj.课程号=xskc.课程号and xscj.学号=xsqk.学号and xscj.学分='4' exec proc_8_t1
2、alter procedure proc_8_t2(@speciality varchar(255))
As select 专业,xscj.学号,姓名,xscj.课程号,课程名,xscj.学分,xscj.成绩 from xsqk,xscj,xskc
where xsqk.专业=@speciality and xsqk.学号=xscj.学号 and xscj.课程号=xskc.课程号 and xsqk.性别='男' exec proc_8_t2 '信息管理'
3、alter procedure proc_8_t3(@学号 varchar(255))
As declare @总学分 varchar(255)
23
金陵科技学院实验报告
select @总学分=总学分 from xsqk where 学号=@学号 if (@总学分is null) print '此学生没有学分'
else if (@总学分<9) print '此学生所选学分为'+convert( char(2),@总学分)+' ,学分不足'
else print '此学生所选学分为'+convert( char(2),@总学分)+' ,学分已充足'
go exec sp_helptext proc_8_t3 exec proc_8_t3 '02020101'
五、创建触发器
1、if exists (select name from sysobjects where name ='trigger_9_t1')
drop trigger trigger_9_t1; create trigger trigger_9_t1 on xsqk for update as print '学生情况表被更新了'
update xsqk set 姓名='李子' where 学号='2020109' exec sp_helptext 'trigger_9_t1'
exec sp_depends 'trigger_9_t1' exec sp_depends 'xsqk'
2、if exists (select name from sysobjects where name ='trigger_9_t2')
drop trigger trigger_9_t2; create trigger trigger_9_t2
on xscj for delete as update xsqk set 总学分=总学分-(select 学分from deleted)
from xsqk,deleted where xsqk.学号=deleted.学号
exec sp_helptext trigger_9_t2 exec sp_depends trigger_9_t2 delete from xscj
where 学号='02020101'and 课程号='101'
3、if exists (select name from sysobjects where name ='trigger_9_t2')
drop trigger trigger_9_t3; create trigger trigger_9_t3 on xsqk for update as
if update(学号) begin update xscj
set 学号=inserted.学号 from deleted,inserted where xscj.学号=deleted.学号 end
update xsqk
set 学号='02020110' where 学号='02020101'
六、修改触发器
alter trigger trigger_9_t1 on xsqk
24
金陵科技学院实验报告
for update
as declare @学号varchar(255) select @学号=deleted.学号 from deleted
print '学生情况表'+convert(char(8),@学号)+' 号学生记录被更新了' update xsqk set 姓名='李子'
where 学号='2020109'
if exists (select name from sysobjects where name ='trigger_9_t1') drop trigger trigger_9_t1;
六、实验体会和收获
实验项目名称:数据库备份、恢复、安全管理 实验学时: 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:
实验7 数据库备份、恢复、安全管理
一、实验目的和要求
1、了解SQL Server2005的数据备份机制,理解数据库备份的意义、数据库逻辑备份与物理备份的区别;
2、掌握磁盘备份设备的创建和管理,掌握各种备份数据库的方法,了解怎样制订备份计划; 3、了解SQL Server 2005的数据恢复机制,掌握数据库恢复的方法; 4、了解SQL SERVER 2005的身份验证模式,并学会如何改变身份验证模式; 5、理解数据库用户账号的基本概念,掌握管理数据库用户账号技术; 6、掌握删除登录账号和用户账号技术; 7、理解角色的概念,掌握管理角色技术。
二、实验设备、环境
设备:奔腾Ⅳ或奔腾Ⅳ以上计算机;
环境:WINDOWS 2000 SERVER或WINDOWS 2003 SERVER、SQL Server2005中文版。
三、实验步骤
1、根据题目要求熟悉SQL Server2005的各种管理工具; 2、分析题意,重点分析题目要求并给出解决方法;
3、按题目要求完成实际操作任务,并将相关文档资料保存在以自己学号命名的文件夹中; 4、提交完成的实验结果。
25
金陵科技学院实验报告
四、实验内容
1、定义备份设备
根据实际情况,创建一个备份设备,其逻辑设备名为:Student_back,物理设备名为:F:\\×××\\×××\\DBbackup。(注:‘\\×××\\×××\\’为:\\班级\\学号\\) 2、备份数据库
(1)为Stuscore数据库创建完全数据库备份; (2)在Stuscore数据库中插入两张表new1、new2使Stuscore数据库完全备份后发生了一些变化然后分别在SQL Server Management Studio和查询分析器窗口中先后进行差异备份; (3)使用同样的方法使数据库有些变化,即在Stuscore数据库中插入两张表:new3、new4,然后分别在SQL Server Management Studio和查询分析器窗口中为该数据库先后进行两次日志备份。 3、恢复数据库
在前面已经为Stuscore数据库建立了1次完全备份,2次差异备份和2次日志备份,现在要求删除Stuscore数据库,然后再将其恢复。 4、安全认证模式
(1)使用SQL Server2005创建一个SQL Server登录帐号aa,赋予其系统管理员角色。 (2)先在服务器上创建一个Windows用户bb,,然后使用创建登录向导,将该用户赋予数据库Pubs数据库db_owener访问权限。
(3)分别在Management Studio的安全性项的登录帐号子项和Pubs数据库的用户子项中查看刚才所创建的登录帐号aa和bb。 5、管理数据库用户账号
(1)使用SQL Server Management Studio为登录帐号loginT创建一个数据库Norhwind用户帐号userT,并赋予db_owner数据库角色。
(2)利用系统存储过程,创建数据库Norhwind的用户帐号userC,其所对应的登录帐号为loginC。
6、删除登陆账号和用户账号。
(1)直接在Management Studio中删除Northwind数据库的userT用户帐号,然后删除userT所对应的登录帐号loginT。
(2)利用系统存储过程sp_revokelogin删除Northwind数据库的userC用户帐号使用脚本:
Use Northwind Go Sp_revokedbaccess ‘userC’ GO
(3)创建一个Windows用户组gg,接着创建Windows用户cc,并使cc隶属于组gg和cc授权登录和访问SQL Server系统。依次利用此帐号作测试登录。测试成功后运行脚本:
sp_revokelogin ‘cc’
然后以cc登录SQL Server系统,能否成功。运行脚本:sp_grantlogin ‘cc’,’cc’ Go Sp_denylogin ‘cc’,’cc’ Go再以cc登录SQL Server系统,测试能否成功。 7、角色
(1)利用系统存储过程为数据库Northwind创建一个数据库角色myrole,并创建一个数据库用户myuser,使其属于角色myrole。
26
金陵科技学院实验报告
(2)分别利用系统存储过程sp_helplogins,sp_helpuser,sp_helprole查看相关信息。 (3)将数据库用户myuser添加为数据库Northwind的db_owner角色。
五、问题解答及实验结果
1、定义备份设备
exec sp_addumpdevice 'disk','Student_back','F:\\M10计算机科学与技术\\1021413036\\DBbackup.bak'
二、备份数据库
(1)backup database Stuscore
to Student_back with init (2)create table new1
(SNO Char(8) not null,) create table new2 (SNO Char(8) not null,) backup database Stuscore
to Student_back with differential
(3)backup LOG Stuscore to Student_back 三、恢复数据库
Restore database Stuscore
from Student_back with norecovery
四、安全认证模式 (1)USE [master]
GO CREATE LOGIN [aa] WITH PASSWORD=N'12' MUST_CHANGE, DEFAULT_DATABASE=[master], CHECK_EXPIRATION=ON, CHECK_POLICY=ON
GO EXEC master..sp_addsrvrolemember @loginame = N'aa', @rolename = N'sysadmin' GO
五、管理数据库用户账号
(1)sp_addlogin 'loginT','T'
Go use northwind
Go sp_grantdbaccess 'loginT','userT' go
(2)sp_addlogin 'loginC','C'
Go use northwind
Go sp_adduser 'loginC','userC' go
六、删除登陆账号和用户账号 (1)Use Northwind
Go Sp_revokedbaccess 'userT' GO sp_revokelogin 'loginT'
(2)Use Northwind
Go Sp_revokedbaccess 'userC' GO sp_revokelogin 'loginC'
七、角色
(1)sp_addlogin 'myrole'
Go use northwind
Go sp_addrolemember 'myrole','myuser' go
27
金陵科技学院实验报告
(2)sp_helplogins
Go sp_helpuser Go sp_helprole go
(3)use northwind
Go sp_addrolemember 'db_owner','myuser' Go grant select on products to roleN
Go grant insert,update,delete on products to myuser Go grant create table to myuser go
六、实验体会和收获
28