如何使用sql语句创建数据库

如题所述

第1个回答  推荐于2017-09-17
CREATE DATABASE database_name
[ CONTAINMENT = { NONE | PARTIAL } ]
[ ON
[ PRIMARY ] <filespec> [ ,...n ]
[ , <filegroup> [ ,...n ] ]
[ LOG ON <filespec> [ ,...n ] ]
]
[ COLLATE collation_name ]
[ WITH <option> [,...n ] ]
[;]

<option> ::=
{
FILESTREAM ( <filestream_option> [,...n ] )
| DEFAULT_FULLTEXT_LANGUAGE = { lcid | language_name | language_alias }
| DEFAULT_LANGUAGE = { lcid | language_name | language_alias }
| NESTED_TRIGGERS = { OFF | ON }
| TRANSFORM_NOISE_WORDS = { OFF | ON}
| TWO_DIGIT_YEAR_CUTOFF = <two_digit_year_cutoff>
| DB_CHAINING { OFF | ON }
| TRUSTWORTHY { OFF | ON }
}

<filestream_option> ::=
{
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
| DIRECTORY_NAME = 'directory_name'
}

To attach a database
CREATE DATABASE database_name
ON <filespec> [ ,...n ]
FOR { { ATTACH [ WITH <attach_database_option> [ , ...n ] ] }
| ATTACH_REBUILD_LOG }
[;]

<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 | % ] ]
)
}

<filegroup> ::=
{
FILEGROUP filegroup_name [ CONTAINS FILESTREAM ] [ DEFAULT ]
<filespec> [ ,...n ]
}

<attach_database_option> ::=
{
<service_broker_option>
| RESTRICTED_USER
| FILESTREAM ( DIRECTORY_NAME = { 'directory_name' | NULL } )
}

<service_broker_option> ::=
{
ENABLE_BROKER
| NEW_BROKER
| ERROR_BROKER_CONVERSATIONS
}

Create a database snapshot
CREATE DATABASE database_snapshot_name
ON
(
NAME = logical_file_name,
FILENAME = 'os_file_name'
) [ ,...n ]
AS SNAPSHOT OF source_database_name
[;]

database_name

新数据库的名称。

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

除非没有为日志文件指定逻辑名称,否则 database_name 最多可以包含 128 个字符。

如果未指定逻辑日志文件名称,则 SQL Server 将通过向 database_name 追加后缀来为日志生成 logical_file_name 和 os_file_name。

这会将 database_name 限制为 123
个字符,从而使生成的逻辑文件名称不超过 128 个字符。

如果未指定数据文件的名称,则 SQL Server 使用 database_name 作为 logical_file_name 和 os_file_name。

默认路径从注册表中获得。

可以使用 Management Studio 中的“服务器属性”(“数据库设置”页)更改默认路径。

更改默认路径要求重新启动 SQL Server。

CONTAINMENT

指定数据库的包含状态。

NONE = 非包含数据库。

PARTIAL = 部分包含的数据库。

ON

指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。

当后面是以逗号分隔的、用以定义主文件组的数据文件的 <filespec> 项列表时,需要使用
ON。

主文件组的文件列表可后跟以逗号分隔的、用以定义用户文件组及其文件的 <filegroup>
项列表(可选)。

PRIMARY

指定关联的 <filespec> 列表定义主文件。

在主文件组的 <filespec> 项中指定的第一个文件将成为主文件。

一个数据库只能有一个主文件。

有关详细信息,请参阅 数据库文件和文件组。

如果没有指定 PRIMARY,那么 CREATE DATABASE
语句中列出的第一个文件将成为主文件。

LOG ON

指定显式定义用来存储数据库日志的磁盘文件(日志文件)。

LOG ON 后跟以逗号分隔的用以定义日志文件的 <filespec> 项列表。

如果没有指定 LOG ON,将自动创建一个日志文件,其大小为该数据库的所有数据文件大小总和的 25% 或 512
KB,取两者之中的较大者。

此文件放置于默认的日志文件位置。

有关此位置的信息,请参阅 查看或更改数据文件和日志文件的默认位置 (SQL Server Management Studio)。

不能对数据库快照指定 LOG ON。

COLLATE collation_name

指定数据库的默认排序规则。

排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。

如果没有指定排序规则,则将 SQL Server 实例的默认排序规则分配为数据库的排序规则。

不能对数据库快照指定排序规则名称。

不能使用 FOR ATTACH 或 FOR ATTACH_REBUILD_LOG
子句指定排序规则名称。

有关如何更改附加数据库的排序规则的信息,请访问此 Microsoft 网站。

有关 Windows 和 SQL 排序规则名称的详细信息,请参阅 COLLATE (Transact-SQL)。

注意

包含数据库的排序方式不同于非包含数据库。

有关详细信息,请参阅 包含数据库的排序规则。

WITH <选项>

仅在将 CONTAINMENT 设置为 PARTIAL 之后,才允许使用以下选项。

如果将 CONTAINMENT 设置为 NONE,将发生错误。

<filestream_options>

NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }

指定对数据库的非事务性 FILESTREAM 访问的级别。

USE master;

GO
CREATE DATABASE mytest;
GO
-- Verify the database files and sizes
SELECT name, size, size*1.0/128 AS [Size in MBs]
FROM sys.master_files
WHERE name = N'mytest';
GO

USE master;
GO
CREATE DATABASE mytest;
GO
-- Verify the database files and sizes
SELECT name, size, size*1.0/128 AS [Size in MBs]
FROM sys.master_files
WHERE name = N'mytest';
GO

B.创建指定数据和事务日志文件的数据库

下面的示例将创建数据库 Sales。

因为没有使用关键字 PRIMARY,第一个文件 ( Sales_
dat) 将成为主文件。

因为在 Sales_ dat 文件的 SIZE 参数中没有指定 MB 或 KB,将使用 MB 并按 MB 分配。

Sales_ log 文件以 MB 为单位进行分配,因为 SIZE 参数中显式声明了
MB 后缀。

USE master;

GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO

USE master;
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO

C.通过指定多个数据和事务日志文件创建数据库

以下示例创建数据库 Archive,该数据库具有三个 100-MB 数据文件和两个 100-MB 事务日志文件。

主文件是列表中的第一个文件,并使用 PRIMARY
关键字显式指定。

事务日志文件在 LOG ON 关键字后指定。

请注意用于 FILENAME 选项中各文件的扩展名: .mdf 用于主数据文件, .ndf 用于辅助数据文件, .ldf 用于事务日志文件。

此示例将数据库放置于 D: 驱动器上,而非 master 数据库中。

USE master;

GO
CREATE DATABASE Archive
ON
PRIMARY
(NAME = Arch1,
FILENAME = 'D:\SalesData\archdat1.mdf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Arch2,
FILENAME = 'D:\SalesData\archdat2.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Arch3,
FILENAME = 'D:\SalesData\archdat3.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20)
LOG ON
(NAME = Archlog1,
FILENAME = 'D:\SalesData\archlog1.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
(NAME = Archlog2,
FILENAME = 'D:\SalesData\archlog2.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20) ;
GO

USE master;
GO
CREATE DATABASE Archive
ON
PRIMARY
(NAME = Arch1,
FILENAME = 'D:\SalesData\archdat1.mdf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Arch2,
FILENAME = 'D:\SalesData\archdat2.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Arch3,
FILENAME = 'D:\SalesData\archdat3.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20)
LOG ON
(NAME = Archlog1,
FILENAME = 'D:\SalesData\archlog1.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
(NAME = Archlog2,
FILENAME = 'D:\SalesData\archlog2.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20) ;
GO本回答被提问者和网友采纳
相似回答