480 likes | 808 Views
第 3 章 实现 SQL Server 数据库. 3 . 1 数据库设计概述 3 . 2 创建 SQL Server 用户数据库 3 . 3 管理 SQL Server 数据库 3 . 4 本章总结 3. 5 思考与实训练习. 学习目标 通过本章学习,你能够学会: 在使用 SQL Server 进行数据库设计中涉及的基本概念 创建 SQL Server 数据库所使用的方法 如何管理设计完的数据库,包括如何查看数据库信息,如何进行删除和修改. 3 . 1 数据库设计概述. 3 . 1 . 1 SQL Server 数据库中类型
E N D
第3章 实现SQL Server 数据库 • 3.1数据库设计概述 • 3.2创建SQL Server用户数据库 • 3.3管理SQL Server数据库 • 3.4 本章总结 • 3. 5 思考与实训练习
学习目标 通过本章学习,你能够学会: • 在使用SQL Server进行数据库设计中涉及的基本概念 • 创建SQL Server数据库所使用的方法 • 如何管理设计完的数据库,包括如何查看数据库信息,如何进行删除和修改
3.1数据库设计概述 • 3.1.1SQL Server数据库中类型 • 3.1.2 SQL Server数据库对象 • 3. 1. 3数据库文件和文件组
3.1.1SQL Server数据库中类型 • SQL Server 2000中的数据库大致可以分为两类:SQL Server 2000中的数据库大致可以分为两类:系统数据库(System Databases)和用户数据库(User Databases)。当SQL Server 2000安装完成后,包括4个系统数据库和2个样本数据库。如图3.1所示。其中Master,Model,Msdb,Tempdb是属于系统数据库,Northwind和Pubs是属于样本数据库。
1. 系统数据库 系统数据库是SQL Server 2000最重要的数据库,包含用户登录标识、系统配置信息、初始化等系统级信息,用于控制整个SQL Server 2000系统的运行。 Master 数据库 Model 数据库 Msdb数据库 Tempdb数据库
[实例3.1]现在我们假设已经建立了名为学生库的数据库,请比较Model数据库中的表与学生数据库中的表的异同点。[实例3.1]现在我们假设已经建立了名为学生库的数据库,请比较Model数据库中的表与学生数据库中的表的异同点。
首先在企业管理器中创建一个名为学生库的数据库(我们将在下一节中讲述如何创建一个数据库)。如图3.2所示。首先在企业管理器中创建一个名为学生库的数据库(我们将在下一节中讲述如何创建一个数据库)。如图3.2所示。
由上图比较可知新建的学生数据库中的表与Model数据库中的表完全相同。这就说明我们在新建数据库时,系统就自动将Model数据库中的表复制到新建的用户数据库中,不仅仅是表中的内容复制过去,它也将Model数据库中的其他对象如视图、存储过程、用户、角色等内容也都复制过去。我们可以在企业管理器中查看相关的内容来验证。由上图比较可知新建的学生数据库中的表与Model数据库中的表完全相同。这就说明我们在新建数据库时,系统就自动将Model数据库中的表复制到新建的用户数据库中,不仅仅是表中的内容复制过去,它也将Model数据库中的其他对象如视图、存储过程、用户、角色等内容也都复制过去。我们可以在企业管理器中查看相关的内容来验证。
2.样本数据库 • Pubs数据库 一个出版公司的数据库 • Northwind数据库 一个贸易公司的数据库
3.1.2 SQL Server数据库对象 • 在SQL Server数据库里表、视图、存储过程、索引等具体存储数据或对数据进行操作的实体都称为对象。SQL Server的数据库就好像一个容器,容纳着各种各样的数据库对象。在这里仅仅简单的介绍数据库中常用的几个对象,这些对象我们在后面章节中还将具体介绍其应用。
[实例3.2] 现在学生数据库中建立student(学生信息表)和code(学生成绩表),然后说明数据库对象之间的关系是如何体现的。 首先在企业管理器中创建两个表:学生信息表和学生成绩表(关于如何创建表可参考第4章表的创建)。如图3.4和3.5所示。在学生信息表中存放的是学生的基本信息,在学生成绩表中存放的是学生的各个时期的成绩。
图3 .4 学生信息表 图3.5 学生成绩表
为了保证每个学生都不能有相同的学号并且要求学生的年龄不能大于30岁,那么这时就必须在表中加入适当的约束。 我们可以将学号这一列设置为主键进行约束保证了它的唯一性,将年龄这一列进行约束,保证输入年龄不大于30岁。如图3.6所示。
如若希望根据学生的学号或姓名快速的查找到相应的学生信息,就需要定义索引。如若希望根据学生的学号或姓名快速的查找到相应的学生信息,就需要定义索引。 对于每一个学生来说,都需要向表中加入相应的一行数据,这可能是件十分繁琐的事情。为了减轻工作负担,我们可以创建一个存储过程,这个存储过程可以接受新学生的相关信息并组织成一个新数据行,然后向学生信息表中添加这个行。 在某些情况下,可能需要了解学生的期中考试成绩,我们可以定义一个视图,它可以将学生信息表中的姓名列与学生成绩表中的期中成绩列进行合并产生相应的数据,便于查询。 如果当向表中插入一条记录时,检查该学生的学号是否存在于表学生信息中,如果存在,则插入:否则,打印“学号不存在”,这时我们创建一个插入触发器来解决此问题。
由上面的例子我们可以看出一个SQL Server数据库由一系列的表组成。 • Table(表 • View(视图) • Index(索引) • Stored Procedure(存储过程) • Triggers(触发器)
3.1.3数据库文件和文件组 • SQL Server 2000的数据库正是由这一系列的文件和文件组组成。 1、文件包含三类 主数据文件 次数据文件 事务日志文件
2、文件组 主文件组 用户自定义文件组 图2.17 连接SQL Server实例
3.2创建SQL Server用户数据库 创建数据库有两种途径: • 企业管理器 • Transact-SQL命令。
3.2.1使用企业管理器创建数据库 [实例3.3]使用企业管理器创建一个名为学生库的数据库,包含一个数据文件和一个事务日志文件。数据文件为主数据文件,其逻辑文件名为“学生库”,实际文件名为“学生库.mdf”,初始容量为10MB,最大容量为50MB,自动增长时的递增量为2MB。事务日志文件的逻辑文件名为“学生库_log”,实际文件名为“学生库_log.ldf”,初始容量为5MB,最大容量为30MB,自动增长时的递增量为1MB。
选中[数据库]节点。在“操作”菜单或快捷菜单中选择“新建数据库”命令,弹出如图3.7所示的对话框。选中[数据库]节点。在“操作”菜单或快捷菜单中选择“新建数据库”命令,弹出如图3.7所示的对话框。 图3.7
在“名称“文本框中输入正确的数据库名称,打开“数据文件”标签,如图3.8所示。在“名称“文本框中输入正确的数据库名称,打开“数据文件”标签,如图3.8所示。 图3.8创建数据库
在“文件名”表格中输入正确的数据文件名。SQL Server 2000在默认情况下自动为用户输入的文件名后面增加上下划线和Data字样,并设置相应的文件扩展名。题中要求逻辑文件名为“学生库”,所以我们在“文件名“表格中只输入“学生库”。 • 单击“位置”表格中的按钮,将弹出选择存放数据文件的目录。这里我们采取默认的目录,所以可以省略这一步。
在“文件组”列表中,输入文件所属的文件组名称,这里采用默认的主文件组(PRIMARY)所以不必更改。在“文件组”列表中,输入文件所属的文件组名称,这里采用默认的主文件组(PRIMARY)所以不必更改。 • 在“初始大小”列表中输入相应的初始大小10。 • 在“属性”选项组里,选择“文件自动增长”,文件增长方式按兆字节方式增长,字节数为2MB。文件增长受限。在“最大文件大小”中选择“将文件增长限制为”,填入50。
打开“事务日志”标签,如图3.9所示。将初始大小,文件增长方式,文件最大容量分别按照题中要求填入,方法与设置数据文件方法类似,在这里就不再赘述。然后点击确定,则学生库创建完成。打开“事务日志”标签,如图3.9所示。将初始大小,文件增长方式,文件最大容量分别按照题中要求填入,方法与设置数据文件方法类似,在这里就不再赘述。然后点击确定,则学生库创建完成。
3.2.2使用T-SQL创建数据库 [实例3.4]使用T_SQL创建[实例3.3]中的学生库 启动“查询分析器”,输入如下SQL语句 create database 学生库 on primary (name=学生库, filename='c:\program files\Microsoft SQL Server\mssql\data\学生库.mdf', size=10MB, maxsize=50MB, filegrowth=2MB) log on (name=学生库_log, filename='c:\program files\Microsoft SQL Server\mssql\data\学生库_log.ldf', size=5MB, maxsize=30MB, filegrowth=1MB) 按“F5”键或单击工具栏“执行查询”图标执行如图3.10所示
Transact-SQL语言创建数据库,语法如下: CREATE DATABASE 数据库名称 [ON [PRIMARY] [文件格式 [,…n] [,文件组格式 [,…n]] ] [LOG ON {文件格式 [,…n]}] [FOR RESTORE] 文件格式::=([NAME=逻辑文件名,] FILENAME=实际使用的路径和文件名 [,SIZE=初始容量] [,MAXSIZE={最大长度|UNLIMITED}] [,FILEGROWTH=增长的具体数值] ) [,…n] 文件组格式::=FILEGROUP 文件组名称 [,…n] 各参数说明如下: PRIMARY:该选项是一个关键字,指定主文件组中的文件。 LOG ON:指明事务日志文件的明确定义。 NAME:指定数据库的逻辑名称,这是在SQL Server系统中使用的名称,是数据库在SQL Server中的标识符。 FILENAME:指定数据库所在文件的操作系统文件名称和路径,该操作系统文件名和NAME的逻辑名称一一对应。 SIZE:指定数据库的初始容量大小。 MAXSIZE:指定操作系统文件可以增长到的最大尺寸。 FILEGROWTH:指定文件每次增加容量的大小,当指定数据为0时,表示文件不增长。
3.3管理SQL Server数据库 • 3.3.1查看数据库信息 • 3.3.2修改数据库 • 3.3.3删除数据库
3.3.1查看数据库信息 查看数据库信息可以有两种方式: • 使用系统存储过程查看数据库信息 • 使用企业管理器方式
[实例3.5]使用系统存储过程以检查所有数据库信息,学生库信息,学生库里所有文件的信息,学生库里所有文件组的信息以及当前服务器上所有可以使用的数据库。[实例3.5]使用系统存储过程以检查所有数据库信息,学生库信息,学生库里所有文件的信息,学生库里所有文件组的信息以及当前服务器上所有可以使用的数据库。
打开查询分析器输入如下语句。 use 学生库 go sp_helpdb go sp_helpdb 学生库 go sp_helpfile go sp_databases go 按F5键或者是运行的图标,执行结果如图3.11所示。
可以使用几个系统提供的存储过程来查看数据库的一些信息。在此给出常见的几种存储过程的语法格式。可以使用几个系统提供的存储过程来查看数据库的一些信息。在此给出常见的几种存储过程的语法格式。 • sp_helpdb 数据库名称 ——查看所有(或指定)数据库的信息 • sp_databases ——查看当前服务器上的所有可用数据库 • sp_helpfile 数据库逻辑文件名 ——查看数据库上所有(或指定)文件信息 • sp_helpfilegroup 文件组名 ——查看数据库上所有(或指定)文件组信息 • sp_spaceused 数据库对象名 —查看数据库对象的数据文件空间占用情况 • DBCC sqlperf (logspace) —查看服务器上所有日志文件空间占用情况
3.3.2修改数据库 数据库的修改也有两种途径一是采用企业管理器,另外也可用T-SQL语句。 [实例3.6]将[实例3.3]增加一个次数据文件学生库_1, 初始大小10MB,最大值20MB,增长速度20%。
启动查询分析器,在学生库节点处单击右键,选择“属性”命令,打开数据库属性对话框。启动查询分析器,在学生库节点处单击右键,选择“属性”命令,打开数据库属性对话框。 • 在文件名列填入学生库_1,位置默认即可。 • 根据题意修改文件的属性,单击确定,完成对指定数据库的修改。如图3.13所示。
2、使用SQL语句 [实例3.7]将[实例3.6]增加一个次数据文件学生库_2,初始大小10MB,最大值20MB,增长速度20%。
开查询分析器,将下列语句输入到查询分析器中。开查询分析器,将下列语句输入到查询分析器中。 • Use 学生库 • Go • Alter database学生库 • Add file • (name=学生库_2, • Filename='c:\program files\Microsoft SQL Server\mssql\data\学生库.ndf', • Size=10MB, • Maxsize=20MB, • Filegrowth=20%)
对于数据库的修改有基本的SQL语句的语法格式:对于数据库的修改有基本的SQL语句的语法格式: • Alter database 数据库名称 • {add file增加的文件名[,…n] [TO FILEGROUP 文件组名称] • |add log file 日志文件名称[,…n] • |remove file 逻辑文件名 [with delete] • |modify file 文件名 • |modify name=新的数据库名称 • |add filegroup 文件组名称 • |remove filegroup文件组名称 • |modify filegroup文件组名称 • {filegroup_property|name=新文件组名称}}
3.3.3删除数据库 在SQL Server 2000中,可以使用SQL语句和企业管理器中两种方式来删除数据库。 • 1.使用企业管理器 • [实例3.8]假设现存在一个名为test的数据库,使用企业管理器将其删除。 • 操作步骤: • 启动查询分析器,在test数据库节点处单击右键,选择“删除”命令。 • 单击“删除”按钮,制定数据库被删除。
2.使用SQL语句 • [实例3.9]使用SQL语句删除[实例3.7]中的学生库。 • 操作步骤: • 打开查询分析器,将下列语句输入其中。 • Use 学生库 • Go • Drop database 学生库 • Go
3.4 本章总结 • 在SQL Server 涉及到两种数据库类型:一是系统数据库,一是用户数据库 • 如何创建数据库包括两种方式:一是通过企业管理器,一是T-SQL语句 • 通过查看、修改和删除数据库进行数据库的管理工作。
3.5 思考与实训练习 3.5.1思考题 • 1.SQL Server数据库的类型有哪些?其作用分别是什么? • 2.SQL Server数据库中的对象有哪些?简述它们之间的关系。 • 3.什么是SQL Server数据库中的文件和文件组?请举例说明。 • 4.主文件一定在默认文件组中吗?主文件一定在主文件组中吗? • 5.数据库的物理文件名和逻辑文件名各有什么作用?
3.5.2实训 • 1.实训目的 • (1)掌握数据库创建的两种方法,理解数据库对象之间的关系。 • (2)熟练掌握数据库查看、编辑、修改的方法。 • 2.实训环境 • SQL Server 2000的运行环境。 • 3.实训内容 • (1).使用企业管理器创建修改数据库。 • ①在D盘example文件夹下创建一个employee数据库,主文件名为employee_data.mdf,事务日志文件名为employee_log.ldf。 • ②将employee数据库的主文件的初始大小为2MB。 • ③主文件的增方式按10%增长,最大容量不限。 • ④日志文件初始大小1M,最大容量50M,每次增长量为2M。 • ⑤employee数据库创建完后,将该数据库添加一个日志文件,文件名为employee_log1,初始大小2MB,最大尺度20MB,每次增长量为1MB. • ⑥在employeee数据库中增加一个次数据文件employee_1,文件参数设置采用默认方式。 • ⑦使用存储过程查看该数据库的所有数据信息。
(2).使用T-SQL语句创建修改数据库 • ①创建一个active数据库,主数据文件的逻辑文件名为arch1,实际文件名为archda1.mdf, • 事务日志文件的逻辑文件名为archlog1,实际文件名分别为archlog1.ldf,上述文件的初始容量均为5MB,最大容量均为50MB,递增量均为1MB。 • ②增加两个次数据文件和一个事务日志文件,两个次数据文件的逻辑文件名分别为arch2和arch3,实际文件名分别为archdat2.ndf和archdat3.ndf。事务日志文件的逻辑文件名为archlog2,实际文件名为archlog2.ldf。上述文件的初始容量均为3MB,最大容量均为40MB,递增量均为10%。 • ③使用存储过程查看该数据库的日志文件所占用的空间情况。 • ④删除该数据库。 • 4. 实训要求 • (1)将实训3的内容在SQL Server 2000环境中调试成功,并将编写的程序调试、运行正确成功后,存入磁盘中。 • (2)每次实训后,总结一下实训的重点内容和应注意的问题,并写成实训报告的形式上交。