1.6 数据库的创建与管理
应用SQL Server 2008管理平台,可以实现SQL Server 2000中查询分析器的功能,用于输入和执行Transaction-SQL语句,并且迅速查看这些语句的结果,以分析和处理数据库中的数据。这是一个非常实用的工具,对掌握SQL语句,深入理解SQL Server的管理工作有很大帮助,在管理平台(Management Studio)工具栏上,单击工具栏左侧的“新建查询”按钮可以打开查询分析器,如图1.6所示,可以在“SQLQuery”标签页中输入要执行的SQL语句,单击分析SQL命令行是否符合T-SQL语言的语法规则,单击“执行”按钮,或按【Ctrl+E】组合键执行SQL语句,并将查询结果显示在“结果”窗口中。
图1.6 查询分析器
1.6.1 创建服务器组
在一个网络系统中,可能有多个SQL Server服务器,可以对其进行分组管理。分组往往是依据组织结构原则,如将公司内一个部门的几个SQL Server服务器分为一组,SQL Server分组管理由SQL Server管理平台来进行,具体步骤如下:
(1)在“已注册的服务器”中,单击“已注册的服务器”工具栏上的服务器类型。如果该窗口不可见,可执行“视图”→“已注册的服务器”命令。
(2)右键单击某服务器或服务器组,在弹出的快捷菜单中选择“新建服务器组”选项,如图1.7所示。
图1.7 “新建服务器组”选项
(3)在弹出的“新建服务器组属性”对话框的“组名”列表框中,输入服务器组的唯一名称,在“已注册的服务器”树中的当前位置服务器组名必须唯一,在“组说明”列表框中,选择性地输入一个描述服务器组的说明。
(4)单击“保存”按钮,如图1.8所示。
图1.8 “新建服务器组属性”对话框
1.6.2 创建服务器注册
在SQL Server服务器管理平台中注册服务器可以存储服务器连接信息,以供以后连接使用,在SQL Server管理平台中注册服务器有3种方法:在安装SQL Server管理平台之后首次启动将自动注册本地服务器实例;也可以随时启动自动注册过程来还原本地服务器实例的注册;还可以使用SQL Server管理平台的“已注册的服务器”窗口注册服务器。
在注册服务器时必须指定以下选项,如图1.9所示。
(1)服务器类型。在Microsoft SQL Server 2008中,可以注册下列类型的服务器,即数据库引擎、Analysis Services、Integration Services、Reporting Services等,默认值为数据库引擎服务。
(2)服务器名称。
(3)登录到服务器时使用的身份验证的类型,以及登录名和密码(如果需要)。登录服务器使用的身份验证模式分为两种,即Windows认证模式和SQL Server身份验证模式。Windows认证模式可以使用Windows登录账户和口令;而SQL Server身份验证模式则必须使用SQL Server登录账户和口令。
(4)注册了服务器后,要将该服务器列入其中组的名称中。服务器注册后在“SQL Server组”会出现相应的服务器,如图1.10所示。
图1.9 “新建服务器注册”对话框
图1.10 注册的服务器
(5)服务器连接。要和已建立的服务器实现“连接”,需要使用鼠标双击对应的服务器(或单击“对象资源管理器”窗口左上角的“连接”按钮),则会在“对象资源管理器”中出现相应的服务器节点。
与连接服务器相反的是断开服务器,只要在“对象资源管理器”中相应的服务上单击右键,在弹出的快捷菜单中选择“断开连接”选项即可。注意,断开服务器并不是从计算机中将服务器删除,而只是从“对象资源管理器”中删除对该服务器的引用,需要再次使用该服务器时,只需在“对象资源管理器”中重新连接即可。
1.6.3 服务器启动、暂停和停止
在SQL Server 2000中单独使用“服务器管理器”来对服务器进行启动、暂停和停止。而SQL Server 2008的管理平台中,在“对象资源管理器”所在的服务器上单击右键,在弹出的快捷菜单中选择“启动”选项,即可启动服务器。
暂停和停止服务器的方法与启动服务器的方法类似,只需在右键快捷菜单中选择“暂停”或“停止”选项即可,如图1.11所示。
图1.11 暂停和关闭服务器选项
“暂停”SQL Server指的是一旦暂停,将不再允许新的上线者(连接在服务器上的用户)使用服务器,原先已联机到SQL Server的用户仍然能继续作业,这样可以确保原来正在进行的作业不会中断,而可以持续进行并加以完成。如果系统管理要想对服务器进行维护,在暂停一段时间后可能要“停止”SQL Server,一旦“停止”SQL Server,则所有用户不可以再访问服务器。
1.6.4 创建数据库
1.相关概念
(1)数据库的存储结构。数据库的存储结构分为逻辑存储结构和物理存储结构两种。
数据库的逻辑存储结构是从用户的角度理解的,它是数据库中数据的组织形式。SQL Server的数据库是由表、视图、索引等各种不同的数据库对象所组成的,它们用来存储特定信息并支持特定功能,构成数据库的逻辑存储结构。
数据库的物理存储结构则是指数据库文件是如何存储在存储介质上的。数据库以文件形式把数据库保存在存储介质上,它由数据库文件和事务日志文件组成。一个数据库至少应该包含一个主数据库文件和一个事务日志文件。
(2)数据模型。数据模型是数据库中数据的存储结构,是数据库技术研究的主要问题之一,是数据库系统的基础。在数据库发展历程中,有4种常见的数据模型,即层次模型、网状模型、关系模型和面向对象模型。
① 层次模型。层次模型(或树模型)采用树状结构来表示数据之间的联系,树的结构也称为记录,记录之间只有简单的层次结构,层次模型满足下列两个条件:
· 有且只有一个节点没有父节点,该节点为树的根节点;
· 其他节点有且仅有一个父节点。
IBM公司在1969年研制的IMS系统是最典型的层次模型数据库系统,如我们使用的Windows 2000/XP等操作系统中的注册表就是一个层次模型数据库。
② 网状模型。网状模型是层次模型的拓展,它满足下列条件:
· 可以有任意个节点没有父节点;
· 一个节点可以有多个父节点;
· 两个节点之间可以有两种或两种以上的联系。
网状模型与层次模型的最大区别在于两个节点之间的联系不是唯一的,DBTG系统是典型的网状模型数据库系统。
③ 关系模型。关系模型是最重要的数据模型,其实它就是以二维表形式存储记录信息的,如图1.3所示。关系模型应用最为广泛,Access、Visual FoxPro、SQL Server、Oracle、Sybase等都属于关系模型数据库管理系统。
我们在本课程中所学习的内容就是关系模型数据库管理系统SQL Server 2008,以后所讲到的数据库都默认为关系模型数据库。
④ 面向对象模型。面向对象模型是一种新兴的数据模型,它采用面向对象的特点来设计数据库,面向对象模型的数据库中存储对象以对象为单位,每个对象包含了对象的属性和方法,具有类和继承等特点。Computer Associates的Jasmine属于面向对象模型的数据库系统。
(3)数据库文件。
① 主数据库文件(Primary DataBase File)。数据库文件是存放数据库数据和数据库对象的文件,一个数据库可以有一个或多个数据库文件,一个数据库文件只能属于一个数据库。当有多个数据库文件时,有一个文件被指定为主数据库文件,其扩展名为.mdf,它用来存储数据库的启动信息和部分或者全部数据,一个数据库只能有一个主数据库文件。
② 辅助数据库文件(Secondary DataBase File)。用于存储主数据库文件中未存储的剩余数据和数据库对象,一个数据库可以没有辅助数据库文件,但也可以同时拥有多个辅助数据库文件。使用辅助数据库文件的优点在于可以在不同的磁盘上创建辅助数据库文件并将数据存储在文件中,这样可以提高数据处理的效率。辅助数据库文件的扩展名为.ndf。
③ 事务日志文件(Transaction Log File)。每个SQL Server 2008数据库都具有事务日志文件,用于记录所有事务和由每个事务对数据库所做的修改。事务日志文件存储数据库的更新情况等事务日志信息。当数据库损坏时,管理员可以使用事务日志文件恢复数据库。事务日志文件的扩展名为.ldf。
(4)逻辑文件名和物理文件名。SQL Server的文件拥有两个名称,即逻辑文件名和物理文件名。当使用Transact-SQL命令语句访问某一个文件时,必须使用该文件的逻辑文件名,而且数据库中各逻辑文件名必须唯一。物理文件名是文件实际存储在磁盘上的文件名,而且可包含完整的磁盘目录路径。例如,系统数据库master,master为其逻辑文件名,而其对应的物理文件名为master.mdf,其事务日志文件名为master.ldf。
(5)数据库文件组(DataBase File Group)。为了便于分配和管理,SQL Server允许将多个文件归纳为一组,并赋予一个名称,这就是文件组。与数据库文件一样,文件组分主文件组(Primary File Group)和次文件组(Secondary File Group)。一个文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用;事务日志文件是独立的,它不能作为任何文件组的成员,也就是说,数据库的数据内容和日志内容不能存入相同的文件组中。主文件组中包括所有的系统表,当建立数据库时,主文件组包括主数据库文件和未指定组的其他文件。在次文件组中可以指定一个默认文件组,则在创建数据库对象时,如果没有指定将其放在哪一个文件组中,就会将它放在默认的文件组中,如果没有指定默认文件组,则主文件组为默认文件组。
2.使用SQL Server管理平台创建数据库和删除数据库
每个数据库都由以下几个部分的数据库对象所组成,即关系图、表、视图、存储过程、用户、角色、规则、默认、用户自定义数据类型和用户自定义函数等。SQL Server使用这样一个公共模板来创建数据库,每个服务器中最多可以创建32767个数据库,数据库的名称必须满足系统标识符命名规则,最好能够达到“见名知义”。
创建数据库的过程实际上就是为数据库设计名称,设计所占用的存储空间和存放文件位置的过程。
在创建任何用户数据库之前,每个服务器的数据库中都可以看到6个初始数据库,它们是SQL Server 2008中的系统数据库和示例数据库,是在安装SQL Server 2008时由安装程序自动创建的。其中有4个系统数据库,分别是master(记录SQL Server系统级的信息,若master数据库不可用,则SQL Server无法启动)、tempdb(存放供所有连接系统的用户使用的全局资源和SQL Server产生的临时表格、临时存储过程等)、model(新建数据库的模板)、msdb(SQL Server代理利用它来安排作业、报警等)。在SQLServer 2008中还有两个示例数据库,即Adventureworks和AdventureworksDW。
示例1.1
创建一个StuInfo数据库,该数据库的主数据库文件逻辑名称为StuInfo_Data,物理文件名为StuInfo_Data.mdf,初始大小为10MB,最大尺寸为无限大,增长速度为10%,数据库的事务日志文件逻辑名称为StuInfo_Log,物理文件名为StuInfo_Log.ldf,初始大小为5MB,最大尺寸为5MB,增长速度为1MB,主数据库文件和事务日志文件都存放在F 盘的DB根目录下。
具体操作步骤如下:
① 在SQL Server管理平台中,在数据库文件夹或其下属任意用户数据库图标上右键单击,弹出快捷菜单,如图1.12所示,选择“新建数据库”选项,出现如图1.13所示的窗口。
图1.12 快捷菜单
② 在“常规”选择页中,要求用户输入数据库名称、所有者、数据库文件等,如图1.13所示。
图1.13 “新建数据库”窗口
③ 在“选项”选择页中,可设置数据库排序规则、恢复模式、兼容级别及其他选项,选择“文件”选择页,如图1.14所示。
图1.14 “文件”选择页
④ 在“文件组”选择页中,可设置或添加数据库文件和文件组的属性,如是否只读、是否为默认值等,如图1.15所示。
图1.15 “文件组”选择页
⑤ 单击“确定”按钮,则开始创建新的文件组。
⑥ 删除StuInfo数据库,只需右键单击“对象资源管理器”中要删除的数据库,在弹出的快捷菜单中选择“删除”选项,如图1.16所示,删除过程中必须确定才可删除。删除数据库不仅删除了数据库的引用,同时也删除了数据库的物理文件名。
图1.16 删除数据库
3.使用SQL命令语句方式创建数据库和删除数据库
创建数据库的语法如下:
create database <数据库名> [on /*指定存储数据库中数据部分的磁盘文件列表,〈数据文件〉用“,”分隔*/ [ [primary]<数据文件>] [,… n] /*主文件,无标识默认第一个为主文件*/ [filegroup 文件组名 <数据文件>] [,… n] ] /*用户自定义文件组*/ [ log on //指定存储数据库日志的磁盘文件列表 [<日志文件>] [,… n] ] [for restore] /*表示不允许用户访问数据库,直到数据库完成一个restore*/ 其中,<数据文件>和<日志文件>为以下属性的组合: (name = 逻辑文件名,/*指定SQL系统引用数据文件或日志文件时使用的逻辑名,它是数据库在SQL中的标识*/ filename = '文件名'/*指定数据文件或日志文件的文件名和路径,而且该路径必须是SQL实例上的一个文件夹*/ [,size = 文件初始容量] [,maxsize = {文件最大容量|unlimited}] /*最大容量的设定*/ [,filegrowth = 文件增长幅度] )
注意点:
· < >内的内容为必选项,[ ]内的内容为可选项,所有字符可用大写或小写,标点符号必须是半角字符。
· 文件组不能用于日志文件,默认时指定文件为默认文件组。
示例1.2
内容详见示例1.1,创建SQL Server查询语句界面如图1.17所示。
图1.17 创建SQL Server查询语句界面
创建数据库的语法如下:
create database StuInfo on (/*所有","号不能丢失*/ name=StuInfo_Data, filename='F:\DB\StuInfo_Data.mdf', size=10, filegrowth=10% ) log on ( name=StuInfo_Log, filename='F:\DB\StuInfo_Log.ldf', size=5, filegrowth=1 ) 删除数据库文件T-SQL语句行为: use master /*打开master数据库,关闭StuInfo数据库,一定要注意数据库正在使用时无法删除*/ /*删除数据库*/ drop database StuInfo
注意点:
· “filename='F:\DB\StuInfo_Data.mdf',”后面的“,”号不能丢失,“F:\”中的“:”是冒号,不是“;”(分号)。
· “)”的前面没有“,”号。
· 逻辑文件名与物理文件名可以不同。
· 所有标点符号都是半角字符。