第4章数据库管理4.1数据库存储结构数据库的存储结构分为逻辑存储结构和物理存储结构两种。1、数据库的逻辑存储结构指的是数据库是由哪些性质的信息所组成,SQLServer的数据库不仅仅只是数据的存储,所有与数据处理操作相关的信息都存储在数据库中。实际上,SQLServer的数据库是由诸如表、视图、索引等各种不同的数据库对象所组成,它们分别用来存储特定信息并支持特定功能,构成数据库的逻辑存储结构。2、数据库的物理存储结构则是讨论数据库文件是如何在磁盘上存储的。数据库在磁盘上是以文件为单位存储的,由数据库文件和事务日志文件组成,一个数据库至少应该包含一个数据库文件和一个事务日志文件。4.1.1数据库文件1.主数据库文件(PrimaryDatabaseFile)2.辅助数据库文件(SecondaryDatabaseFile)3.事务日志文件4.1.2数据库文件组•为了便于分配和管理,SQLServer允许将多个文件归纳为同一组,并赋予此组一个名称,这就是文件组。•与数据库文件一样,文件组也分为主文件组(PrimaryFileGroup)和次文件组(SecondaryFileGroup)。4.2创建、修改和删除数据库4.2.1创建数据库4.2.2修改数据库4.2.3删除数据库4.2.1创建数据库每个数据库都由以下几个部分的数据库对象所组成:关系图、表、视图、存储过程、用户、角色、规则、默认、用户自定义数据类型和用户自定义函数。4.2.1创建数据库创建数据库的方法有以下三种(实际为两种):1、使用模板创建数据库(实际上也是使用Transact-SQL语言创建数据库)2、使用SQLServer管理平台创建数据库4.2.1创建数据库1、使用模板创建数据库•以下图4-1到图4-2是使用模板创建数据库,用户根据提示操作,即可创建数据库。图4-1选择创建数据库模板对话框4.2.1创建数据库1、使用模板创建数据库•在图4-1中双击“创建数据库”命令,就会出现创建数据库的SQL语言模板,如图4-2所示。图4-2创建数据库的SQL语言模板4.2.1创建数据库1、使用模板创建数据库•Transact-SQL语言使用CREATEDATABASE命令来创建数据库。该命令的语法如下:CREATEDATABASEdatabase_name[ON[PRIMARY][filespec[,…n][,filegroupspec[,…n]]][LOGON{filespec[,…n]}][FORRESTORE]filespec::=([NAME=logical_file_name,]FILENAME=‘os_file_name’[,SIZE=size][,MAXSIZE={max_size|UNLIMITED}][,FILEGROWTH=growth_increment])[,…n]filegroupspec::=FILEGROUPfilegroup_namefilespec[,…n]4.2.1创建数据库1、使用模板创建数据库各参数说明如下:•database_name:数据库的名称,最长为128个字符。•PRIMARY:该选项是一个关键字,指定主文件组中的文件。•LOGON:指明事务日志文件的明确定义。•NAME:指定数据库的逻辑名称,这是在SQLServer系统中使用的名称,是数据库在SQLServer中的标识符。•FILENAME:指定数据库所在文件的操作系统文件名称和路径,该操作系统文件名和NAME的逻辑名称一一对应。•SIZE:指定数据库的初始容量大小。•MAXSIZE:指定操作系统文件可以增长到的最大尺寸。如果没有指定,则文件可以不断增长直到充满磁盘。•FILEGROWTH:指定文件每次增加容量的大小,当指定数据为0时,表示文件不增长。4.2.1创建数据库2、使用SQLServer管理平台创建数据库(1)在SQLServer管理平台中,在数据库文件夹或其下属任一用户数据库图标上右击,从弹出的快捷菜单中选择新建数据库选项,出现如图4-3所示的对话框。图4-3创建数据库对话框4.2.1创建数据库2、使用SQLServer管理平台创建数据库(2)在选项页框中,如图4-4所示,可设置数据库的排序规则,恢复模式,兼容级别以及其他一些选项的设置。图4-4创建数据库的选项页框4.2.1创建数据库2、使用SQLServer管理平台创建数据库(3)在文件组页框中,如图4-5所示,可设置或添加数据库文件和文件组的属性,如是否只读,是否为默认值等。图4-5创建数据库的文件组页框4.2.1创建数据库例4-1创建了一个Test数据库,该数据库的主数据文件逻辑名称为Test_data,物理文件名为Test.mdf,初始大小为10MB,最大尺寸为无限大,增长速度为10%;数据库的日志文件逻辑名称为Test_log,物理文件名为Test.ldf,初始大小为1MB,最大尺寸为5MB,增长速度为1MB。程序清单如下:CREATEDATABASEtestONPRIMARY(NAME='test',FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL\data\test.mdf',SIZE=10240KB,MAXSIZE=UNLIMITED,FILEGROWTH=10%)LOGON(NAME='test_log',FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL\data\test_log.ldf',SIZE=1024KB,MAXSIZE=5120KB,FILEGROWTH=1024KB)GO4.2.2修改数据库1.利用SQLServer管理平台修改数据库在SQLServer管理平台中,右击所要修改的数据库,从弹出的快捷菜单中选择“属性”选项,出现如图4-6所示的数据库属性设置对话框。可以看到,修改或查看数据库属性时,属性页框比创建数据库时多了两个,即选项和权限页框。图4-6数据库属性设置对话框4.2.2修改数据库1.利用SQLServer管理平台修改数据库图4-7数据库选项设置对话框4.2.2修改数据库1.利用SQLServer管理平台修改数据库图4-8数据库权限设置对话框4.2.2修改数据库2.使用ALTERDATABASE语句修改数据库•ALTERDATABASE语法形式如下:Alterdatabasedatabasename{addfilefilespec[,…n][tofilegroupfilegroupname]|addlogfilefilespec[,…n]|removefilelogical_file_name[withdelete]|modifyfilefilespec|modifyname=new_databasename|addfilegroupfilegroup_name|removefilegroupfilegroup_name|modifyfilegroupfilegroup_name{filegroup_property|name=new_filegroup_name}}图4-6数据库属性设置对话框4.2.2修改数据库2.使用ALTERDATABASE语句修改数据库•例4-3将两个数据文件和一个事务日志文件添加到test数据库中。程序清单如下:ALTERDATABASETestADDFILE(NAME=Test1,FILENAME='c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\test1.ndf',SIZE=5MB,MAXSIZE=100MB,FILEGROWTH=5MB),(NAME=Test2,FILENAME='c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\test2.ndf',SIZE=3MB,MAXSIZE=10MB,FILEGROWTH=1MB)GOALTERDATABASETestADDLOGFILE(NAME=testlog1,FILENAME='c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\testlog1.ldf',SIZE=5MB,MAXSIZE=100MB,FILEGROWTH=5MB)GO4.2.3删除数据库1.利用SQLServer管理平台删除数据库在SQLServer管理平台中,右击所要删除的数据库,从弹出的快捷菜单中选择“删除”选项即可删除数据库。系统会弹出确认是否要删除数据库对话框,如图4-9所示,单击“确定”按钮则删除该数据库。图4-9确认删除数据库对话框4.2.3删除数据库2.利用Drop语句修改数据库•Drop语句可以从SQLServer中一次删除一个或多个数据库。其语法如下:Dropdatabasedatabase_name[,…n]•例4-4删除创建的数据库Test。程序清单如下:dropdatabaseTest图4-6数据库属性设置对话框4.3数据库备份4.3.1备份概述4.3.2创建备份设备4.3.3备份的执行4.3.1备份概述•MicrosoftSQLServer2005提供了高性能的备份和还原机制。数据库备份可以创建备份完成时数据库内存在的数据的副本,这个副本能在遇到故障时恢复数据库。这些故障包括:媒体故障,硬件故障(例如,磁盘驱动器损坏或服务器报废),用户操作错误(例如,误删除了某个表),自然灾害等。此外,数据库备份对于例行的工作(例如,将数据库从一台服务器复制到另一台服务器、设置数据库镜像、政府机构文件归档和灾难恢复)也很有用。•对SQLServer数据库或事务日志进行备份时,数据库备份记录了在进行备份这一操作时数据库中所有数据的状态,以便在数据库遭到破坏时能够及时地将其恢复。SQLServer备份数据库是动态的,在进行数据库备份时,SQLServer允许其他用户继续对数据库进行操作。执行备份操作必须拥有对数据库备份的权限许可,SQLServer只允许系统管理员、数据库所有者和数据库备份执行者备份数据库。备份是数据库系统管理的一项重要内容,也是系统管理员的日常工作。4.3.1备份概述•SQLServer2005提供了四种不同的备份方式,它们分别为:(1)完整备份和完整差异备份(2)部分备份和部分差异备份(3)事务日志备份(4)数据库文件和文件组备份。4.3.2创建备份设备•备份或还原操作中使用的磁带机或磁盘驱动器称为“备份设备”。•在创建备份时,必须选择要将数据写入的备份设备。MicrosoftSQLServer2005可以将数据库、事务日志和文件备份到磁盘和磁带设备上。4.3.2创建备份设备1.使用SQLServer管理平台创建备份设备在SQLServer管理平台中,选择想要创建备份设备的服务器,打开服务器对象文件夹,在备份设备图标上右击,从弹出的快捷菜单中选择“新建备份设备”选项,如图4-10所示。然后弹出备份设备对话框,如图4-11所示。图4-10使用SQLServer管理平台创建备份设备图4-11输入备份设备属性对话框4.3.2创建备份设备2.使用系统存储过程创建备份设备在SQLServer中,可以使用sp_addumpdevice语句创建备份设备,其语法形式如下:sp_addumpdevice{‘device_type’}[,’logical_name’][,’physical_name’][,{{controller_type|’device_status’}}]其中,device_type表示设备类型,其值可为disk和tape。logical_name表示设备的逻辑名称。physical_name表示设备的实际名称。controller_type和device_status可以不必输入。•例4-5在磁盘上创建了一个备份设备。程序清单如下:usemasterexecsp_addumpdevice‘disk’,‘tes