创建数据库有多重方法,如可以使用企业管理器创建数据库,也可以使用向导创建数据库。上面两种方法操作都很简单,但却有一个很大的缺点就是他很难大规模重复。换句话说,如果你创建一个准备重新分布到世界各地的数据库,对于一个没有经验的用户来说,应付SQL企业管理器并建立数据库并不是一件容易的事。于是为了解决我们上面所说的难题,用T-SQL语句创建数据库的方法变应运而生。
在讲语法之前我先给大家介绍下什么是数据库文件。数据库文件说简单点就是存储我们所需要的数据库的数据,或者事务日志。就好比文件夹是为了存储文件一样。
在SQL Sever中有如下三种类型的数据库文件:
数据库文件类型 | 描述 |
主数据库文件 | 是所有数据库的起点。这些文件不仅包含数据库用户收集的信息,还包含了数据库中所有其他文件的有关信息。每个数据库都有一个主数据库文件。主数据库文件的扩展名默认并推荐使用.mdf。 |
辅数据库文件 | 顾名思义它其实是那些你增加到数据库中的其他任何数据库文件。增加它们可以用来为数据库增大容量。不是所有的数据库都有辅数据库文件,但是如果想要你的数据库文件延伸到多个物理磁盘上,就需要有辅数据库文件。它的扩展名默认使用.ndf。 |
日志文件 | 用来保存数据库的事务日志。每个数据库至少有一个日志文件。日志文件的扩展名使用.ldf。 |
那接下来让我们认识Create Database语句的语法:
CREATE DATABASE <database_name> On [primary] [<filespec> [,…n] ] [,<filegroup> [,…n] ] [LOG ON {<filespec> [,…n] } ] [FOR LOAD | FOR ATTCH ] |
上面几句就是创建数据库最基本的语法,很简单吧。但是里面有些选项还是需要我们慢慢讲来的。
其中的两个选项<filespec>和<filegroup>是什么意思呢?简单的说他们分别代表了创建一个文件和一个文件组所需要的信息,可能很难懂吧,不用着急我们看下面它们两个的语法。
<filespec>::= ( [NAME=logical_file_name,] FILENAME='os_file_name' [,SIZE=size] [,MAXSIZE={max_size | UNLIMITED}] [,FILEGROWTH=growth_increment]) [,…n] <filegroupspec>::= FILEGROUP filegroup_name <filespec> [,…n] |
在SIZE、MAXSIZE、FILEGROWTH中如果大小的单位是兆字节(MB),则该单位可以省略,也就是说兆字节是缺省单位。但其它的表示单位不可省略。
没晕吧(偷笑),没关系我们接着来看个例子。在下面的例子里,你可以建立一个数据库Test、一个数据库文件Test_Data和一个日志文件Test_Log:
Create Database Test On primary ( name=’Test_Data’, Filename=’c:\mssql17\data\Test_Data.mdf’, Size=10[MB], Maxsize=50[MB], Filegrowth=5[MB] ) LOG ON ( name=’Test_Log’, Filename=’c:\mssql17\data\Test_Log.ldf’, Size=5[MB], Maxsize=25[MB], Filegrowth=10% ) GO |
在SQL 2000中的查询分析器中执行后,你会看到一下的结果:
CREATE DATABASE 进程正在磁盘 'Test_Data' 上分配 10.00 MB 的空间。
CREATE DATABASE 进程正在磁盘 'Test_Log' 上分配 5.00 MB 的空间。
上面代码括号中的部分即为<filespec>部分,是对创建的数据库的说明。怎么样,变的很简单了吧。