数据库是存储数据和各种数据库对象的容器。结合SQLServer2008支持的数据库对象,介绍T-SQL语言的数据定义功能。
/CONTENT。
01/创建和维护数据库。
SQLServer数据库概述。
SQLServer数据库的构成。
数据库文件组。
数据库文件的属性。
修改数据库。
分离和追加数据库。
02/练习问题。
创建和维护数据库。
SQLServer数据库概述。
SQLServer2008中的数据库由包含数据的表集和其他对象(视图、索引、存储过程等)构成,目的是支持与数据相关的活动。从数据库的应用和管理的角度来看,SQLServer将数据库分为系统数据库和用户数据库。
系统数据库:SQLServer数据库管理系统自动创建和维护,保存维护系统正常运行的信息。
用户数据库:保存与用户业务相关的数据,通常建立数据库是指建立用户数据库,维护数据库是指维护用户数据库。
注意:SQLServer支持在一个例子中创建多个数据库,每个数据库在物理和逻辑上是独立的,彼此没有影响。一般用户对系统数据库只有查询权。
系统自动安装的五个系统数据库和用途。
master。
1.SQLServer2008中最重要的数据库。
2.记录SQLServer实例的所有系统级信息,包括实例范围的元数据(如注册帐户)、端点连接服务器和系统配置设置。
3.记录其他所有数据库的存在、数据库文件的位置和SQLServer的初始信息。
msdb。
1.提供SQLServer代理服务调度警报和作业和记录作业人员时使用,保存调度警报、作业、作业人员等信息。
2.作业是SQLServer定义的一系列自动执行操作的集合,作业执行不需要任何人工干预。
model。
1、用作SQLServer实例制作的所有数据库模板。
2、修改model数据库(如数据库大小排序规则、恢复模式等数据库选项,将应用于后期所有用户数据库制作。
3.用户创建数据库时,系统自动将model数据库中的所有内容复制到新数据库中。
tempdb。
1.临时数据库用于保存临时对象或中间结果集,为数据排序等操作提供临时工作空间。
2.每次启动SQLServer,都会重建tempdb数据库。
Resource。
1.只读数据库,包括SQLServer中的所有系统对象。
2.SQLServer系统的对象物理保存在Resource数据库中,但逻辑上显示在各数据库的sys框架中。
3.在SSMS的对象资源管理器中,在“系统数据库”下看不到这个数据库。
SQLServer数据库的构成。
SQLServer将数据库映射到一组操作系统文件中,这些文件分为数据文件和日志文件两类。数据文件包括数据和对象,日志文件包括恢复数据库中所有事务所需的信息。
数据文件。
数据文件用于存储数据库数据,数据文件分为主要数据文件和次要数据文件。
主要数据文件:
1.扩展名为.mdf,包括数据库在内的系统信息可以保存用户数据。
2.每个数据库都有,只有一个主要的数据文件。
3.主要数据文件是为数据库制作的第一份数据文件。
4.SQLServer2008要求主要数据文件的大小不得小于3MB。的双曲馀弦值。的双曲馀弦值。的双曲馀弦值。
次要数据文件:
1.扩展名称为.ndf。
2.一个数据库可以不包括次要数据文件或多个次要数据文件。
3.这些次要数据文件可以建立在一个磁盘上,也可以分别建立在不同的磁盘上。的双曲馀弦值。的双曲馀弦值。的双曲馀弦值。
注意:两种数据文件在用户使用时没有区别,用户透明,用户不必在意自己的数据保管文件。
办公日志文件。
1.事务日志文件的推荐扩展名为.Idf,用于保管恢复数据库的所有日志信息。
2.每个数据库必须至少有一个日志或多个日志。的双曲馀弦值。的双曲馀弦值。的双曲馀弦值。
注意:SQLServer2008不强制使用。mdf、.ndf、.ldf文件扩展名称,但建议使用这些扩展名称有助于显示文件的用途。
数据存储空间的分配。
考虑数据库的空间分配时,需要了解以下规则
1.创建用户数据库时,model数据库自动复制到新用户数据库中,复制到主要数据文件中。
2.在SQLServer2008中,数据的存储分配单位是数据页面。一页是8KB的连续盘空间。页面是存储数据的最小单位,页面的大小决定了数据库表中一行数据的最大大小。
3.SQLServer不允许将表中的一行数据存储在不同的页面上,即不允许跨页面存储。因此,表中一行数据的大小不得超过8060B。这意味着在设计关系表时,必须考虑各行数据的大小,提高空间利用率。的双曲馀弦值。的双曲馀弦值。的双曲馀弦值。
数据库文件组。
在数据库中,可以定义多个文件组,将文件放置在不同的文件组中。
SQLServer有主文件组和用户定义文件组两种类型的文件组。
主文件组(PRIMARY)是系统定义的文件组,包括主要数据文件和没有明确分配给其他文件组的其他数据文件。系统表的所有页面都分配在主文件组中。(SQLServer默认文件组为PRIMARY)
用户定义文件组:使用FILEGROUP关键词指定的文件组。用户可以建立自己的文件组,组织数据文件,便于管理和分配数据,提高数据查询性能。
说明::说明::
1.日志文件不包括在文件组中,日志空间和数据空间分别管理。
2.一个文件不能是多个文件组的成员。
3.如果档案组中有多个文件,则在所有文件填写前不会自动增加,填写后会循环增加。
4.每个数据库只能指定一个文件组为默认文件组。
注意:请注意:
1.定义数据文件时,如果没有指定所属的文件组,则分配给默认的文件组PRIMARY。
2.一旦将文件添加到数据库中,就不能移动到其他文件组。
数据库文件的属性。
文件名称及其位置。
数据库的每个数据文件和日志文件都有逻辑文件名称和物理文件名称。
逻辑文件名称在所有T-SQL文件中引用物理文件时使用的名称,该文件名称必须符合SQLServer标志规则,并且在数据库中逻辑文件名称必须是唯一的。
物理档案名称包括存储档案的路径和物理磁盘档案名称,该档案名称应符合操作系统档案命名规则。一般来说,如果有多个数据文件,为了获得更好的性能,建议将文件分散存储在多个物理磁盘中。
初始大小。
可以指定每个数据文件和日志文件的初始大小。在指定主数据文件的初始大小时,其大小不得小于model数据库的主要数据文件大小。因为系统是将model数据库的主要数据文件内容复制到用户数据库的主要数据文件中。
成长方式。
可指定档案是否自动增长。该选项的默认配置是自动增长,即据文件空间不足后,系统自动扩大文件空间,防止空间用完不能插入新数据或数据操作的错误。
最大尺寸。
文件的最大尺寸是指文件增长的最大空间限制。默认情况是无限制的。建议用户设置允许档案增长的最大空间大小,因为如果用户不设置最大空间大小,但设置了档案自动增长方式,档案将无限增长,直至盘面空间用完。
用T-SQL语句创建数据库。
创建数据库的T-SQL语言是CREATEDATABASE,该语言的简化语法格式如下图所示
每个参数的含义如下:
database_name:新数据库名称。数据库名称必须是SQLServer实例中唯一的。
ON:指定数据文件。后用逗号分隔,定义数据文件的项目列表。
PRIMARY:指定相关数据文件的主要文件组。具有PRIMARY部分定义的第一份文件将成为主要数据文件。如果没有指定PRIMARY,CREATEDATASE语句中列出的第一份文件将成为主要数据文件。
LOGON:指定日志文件。后面是用逗号分隔的定义日志文件的项目列表。
:定义文件的属性。每个参数的含义如下:
NAME=logical_file_name:指定文件的逻辑名称。在某个数据库中逻辑名必须是唯一的,必须符合标志规则。
FILENAME=os_file_name:指定操作系统物理档案名称。osfile_name是制作文件时操作系统使用的路径和文件名称。
SIZE=size:指定文件的初始大小。
1.如果不为主要数据文件提供size,则使用model数据库的主要数据文件大小。
2.如果指定了次要数据文件或日志文件,但没有指定size,则默认设定为1MB。
3.为主要数据文件指定的大小应小于model数据库的主要数据文件大小。
4.size是整数值,不应包含小数值。的双曲馀弦值。的双曲馀弦值。的双曲馀弦值。
MAXSIZE=max_size:指定文件可增加到最大尺寸。
1.千字节KB字节KB、兆字节MB、千兆字节GB、兆字节TB。默认为MB。
2.max_size是整数值,不应包含小数值。的双曲馀弦值。的双曲馀弦值。的双曲馀弦值。
UNLIMITED:指定文件增长无限制。在SQLServer中,指定不限长的日志文件的最大尺寸是2TB,数据文件的最大尺寸是16TB。
FILEGROWTH=growth_increment:指定文件的自动增量。
1.FILEGROWTH不得超过MAXSIZE大小。
2.growth_incremen每次添加的文件空间量可以用KB、MB、GB、TB或百分比来表示。默认为MB。
3.FILEGROWTH=0表示不允许自动增长空间。
4.如果不指定FILEGROWTH,数据文件的默认增长值为1MB.日志文件的默认增长率为当前文件大小的10%,最小值为64KB。的双曲馀弦值。的双曲馀弦值。的双曲馀弦值。
:文件组的属性。其中各参数的含义如下:
FILEGROUPfilegroup_name:文件组的逻辑名称。filegroup_name在数据库中是唯一的,系统提供的名称PRIMARY和PRIMARY_LOG必须符合标志规则。
DEFAULT:指定该文件组为数据库默认文件组。
修改数据库。
扩大数据库的空间。
如果在制作数据库时没有设置自动增长方式,数据库在使用一段时间后可能会出现空间不足的情况。这些空间包括数据空间和日志空间。
数据空间不足意味着不能在数据库中插入数据的日志空间不足意味着不能修正数据库。
扩大数据库空间一是扩大数据库中已有文件的大小,二是为数据库添加新的文件。
每个参数的含义如下:
database_name:需要修改的数据库名称。
:=:指定添加或修改的文件。
ADDFILE:在数据库中添加新的数据文件。
TOFILEGROUP{filegroup.name|DEFAULT}:说明添加指定文件的文件组。
:与CREATEDATABSE语言的
ADDLOGFILE:在数据库中添加新的日志文件。
MODIFYFILE:指定要修改的文件。
1.一次只能改变一个属性。
2、还可修改数据文件或日志文件的逻辑名称。
3.必须在中指定NAME,以显示要修改的文件。
4.指定size时,必须大于文件现在的大小。
缩小数据库。
收缩数据库是释放数据库中未使用的空间,将释放的空间返还给操作系统。数据档案和日志档案的空间都可以缩小,而且可以成群或者单独手动缩小数据库档案,也可以通过设置数据库选项,根据指定的时间间隔自动缩小。档案的缩水都是从末开始的。
手动收缩数据库空间分为:
①收缩数据库中某个文件的大小。
②按比例缩小整个数据库的大小。
注意:当整个数据库空间缩小时,缩小后每个文件的大小不应小于创建这些文件时指定的初始大小,或者上次进行缩小文件操作时设定的大小。缩小某个文件的大小没有这个限制。
缩小整个数据库的大小。
收缩整个数据库大小的T-SQL句子是DBC-SHRINKDATABASE,其语法形式如下
每个参数的含义如下:
tatabase_name¤|database_id|0:收缩的数据库的名称身份证。如果你指的话。