1
数据库原理与应用技术
1.9.1.1 8.1.1 用T-SQL命令创建数据库
8.1.1 用T-SQL命令创建数据库

创建数据库可以使用CREATE DATEBASE 语句。CREATE DATEBASE语句的语法格式如下:

CREATE DATABASE database_name

[ CONTAINMENT ={ NONE | PARTIAL } ]

[ ON

[ PRIMARY ] <filespec> [ ,…n ]

[ , <filegroup> [ , …n ] ]

[ LOG ON <filespec> [ , …n ] ]

]

[ COLLATE collation_name ]

[ WITH <option> [,…n ] ]

其中,

<filespec>::=

{

(

NAME = logical_file_name ,

FILENAME ={ 'os_file_name' | 'filestream_path' }

[ , SIZE = size [ KB | MB | GB | TB ] ]

[ , MAXSIZE ={ max_size [ KB | MB | GB | TB ] | UNLIMITED } ]

[ , FILEGROWTH = growth_increment [ KB | MB | GB | TB |% ] ]

)

}

在创建数据库的过程中,可以设置其中的一些选项,这些选项的作用描述如下。

database_name:新数据库的名称。数据库名称在 SQL Server的实例中必须唯一,并且必须符合标识符规则。

CONTAINMENT:指定数据库的包含状态。NONE为非包含数据库,PARTIAL为部分包含数据库。

ON:指定显式定义用于存储数据库数据部分的磁盘文件(数据文件)。当后面为以逗号分隔的、用于定义主文件组的数据文件的<filespec>项列表时,需要使用ON。主文件组的文件列表后可跟以逗号分隔的、用于定义用户文件组及其文件的<filegroup>项列表(可选)。

PRIMARY:指定关联的<filespec>列表定义主文件。在主文件组的<filespec>项中指定的第一个文件将成为主文件。一个数据库只能有一个主文件。默认情况下,当没有使用PRIMARY关键字时,位于CREATE DATABASE语句中的第一个文件就是主文件。

LOG ON:指定显式定义用于存储数据库日志的磁盘文件(日志文件)。LOG ON后跟以逗号分隔的、用于定义日志文件的<filespec>项列表。如果没有指定LOG ON,则自动创建一个日志文件,其大小为该数据库的所有数据文件大小总和的25%或512KB,取两者中的较大者。

COLLATE collation_name:指定数据库的默认排序规则。排序规则名称既可以是 Windows排序规则名称,也可以是SQL排序规则名称。如果没有指定排序规则,则将SQL Server实例的默认排序规则分配为数据库的排序规则。

WITH<选项>:仅在将CONTAINMENT设置为PARTIAL之后,才允许使用一些特殊选项。如果将CONTAINMENT设置为NONE,则会发生错误。

NAME:该选项用于指定数据库的逻辑名称,这是在SQL Server系统中使用的名称,数据库在SQL Server中的标识符。

FILENAME:该选项用于指定数据库所在文件的操作系统文件名称和路径。在os_file_name中的路径必须是SQL Server所在服务器上的一个目录,该操作系统文件名称与NAME的逻辑名称是一一对应的。

SIZE:该选项用于指定数据库操作系统文件的大小。如果没有指定单位,那么系统默认的单位是MB。指定文件大小时,只能使用整数,不能使用小数。

MAXSIZE:该选项用于指定操作系统文件可以增长的最大尺寸,默认的单位是MB。如果没有指定文件可以增长的最大尺寸,那么系统的增长是没有限制的,可以占满整个磁盘空间。

UNLIMITED:用于指定将文件增长到把磁盘充满。在SQL Server中,指定为不限制增长的日志文件的最大容量为2TB,而数据文件的最大容量为16TB。

FILEGROWTH:该选项用于指定文件的增量,当然该选项不能与MAXSIZE选项冲突。当该选项指定的数据值为零时,表示文件不能增长,默认的单位是MB。如果使用百分比指定,则增量值自动调整为64KB的整数倍。

【例8-1】创建customer数据库。该数据库的主数据文件的逻辑名称是customer_data;操作系统文件是customer_data.mdf,容量大小是15MB,最大值是20MB,以20%的速度增加。该数据库的日志文件的逻辑名称是customer_log;操作系统文件是customer_log.ldf,容量大小是3MB,最大值是10MB,以1MB的速度增加。

解:程序如下。

CREATE DATABASE customer

ON PRIMARY(NAME=customer_data,

FILENAME='d:\Sql Server示例\customer_data.mdf',

SIZE=15MB,

MAXSIZE=20MB,

FILEGROWTH=20%)

LOG ON(NAME=customer_log,

FILENAME='d:\Sql Server示例\customer_log.ldf',

SIZE=3MB,

MAXSIZE=10MB,

FILEGROWTH=1MB)

【例8-2】创建数据库Sales。

解:程序如下。

CREATE DATABASE Sales

ON(NAME=Sales_data,

FILENAME='d:\Sql Server示例\Sales_data.mdf',

SIZE=10,

MAXSIZE=50,

FILEGROWTH=5)

LOG ON

(NAME=Sales_log,

FILENAME='d:\Sql Server示例\Sales_log.ldf',

SIZE=5MB,

MAXSIZE=25MB,

FILEGROWTH=5MB)

在这个例子中,因为没有使用PRIMARY关键字,所以第一个数据文件默认为数据库的主数据文件。又因为没有为该文件的大小指定单位,所以系统默认的单位为MB。

注意:在使用CREATE DATABASE语句创建数据库时,FILENAME指定的文件名称必须使用单引号。