注明:大写字母表关键字,小写字母表用户自己定义的名称或数值,[]表可选项,<>表必选项,|表多项选一,1...n表可有多个同类项
-----使用T-SQL语句中的CREATE DATABASE命令来创建数据库。数据库必须要确定数据库名,数据库大小,增长方式和存储数据库的文件。能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。
CREATE DATABASE语句基本格式:
CREATE DATABASE database_name /*指定数据库名*/
[ON子句] /*指定数据库文件和文件属性*/
[LOG ON子句] /*指定日志文件属性*/
其中,database_name为自己所创建的数据库逻辑名称,最大长度为128个字符。ON子句和LOG ON子句说明如下:
(1)ON子句
ON [ PRIMARY ] [< filespec > [ , ... n ] ] [,< filegroup > [ , ... n ] ]
其中filespec为文件描述,filegroup为文件组描述:
FILENAME = '物理文件名'
[ , SIZE = size ]
[ , MAXSIZE = { maxsize | UNLIMTED } ]
[ , FILEGROWTH = growth_increament ])
< filegroup > ::= FILEGROUP filegroup_name < filespec > [ , ... n ]
其中,SIZE,MAXSIZE,FILEGROWTH不加单位时为MB,FILEGROWTH可按其设定的数值增长,也可是相对于当前数据库文件的大小,每次增长时按其设定的百分比进行扩展,UNLIMTED关键字表无限制增长直到磁盘满为止。
(2)LOG ON子句
LOG ON { < filespec > [ , ... n ] }
示例:
create database traffic
on primary
(
name='traffic_data',
filename='F:\aaa\a1.mdf',
size=10,
maxsize=30,
filegrowth=5
)
log on
(
name='traffic_log',
filename='F:\aaa\a2.ldf',
size=2,
maxsize=10,
filegrowth=2
)
结果如下:
二.用命令操作方式管理数据库
-----数据库创建后,数据文件和日志文件的文件名就不能改变了,但可以使用ALTER DATABASE 语句修改数据库选项,而且系统提供了许多事先编译好的存储过程,用户可以直接使用这些系统存储过程获得数据库信息。
1. 查看数据库信息
在管理和使用数据库之前,要先选择数据库并打开它:USE database_name
若要查看当前服务器上的所有数据库,则有:[EXEC] sp_databases
打开了指定的数据库之后,可以调用系统存储过程来查看该数据库、文件、文件组的信息:
[EXEC] sp-helpdb database_name、[EXEC] sp_helpfile
注:以sp_为前缀的标识表示系统存储过程,可以直接运行,也可以用EXEC命令调用。
示例:
use traffic
exec sp_databases
结果:
该图片中有4个系统数据库和1个用户数据库(traffic)
4个系统数据库:在服务器创建时已经由系统创建了,记录了服务器中的所有系统信息。
master:SQL Server 的注册信息、配置信息、数据库的存储位置、初始化信息等。
model:用户新建数据库时的模板
msdb:记录SQL Server Agent 进行复制、作业调度、报警等活动。
tempdb:记录所有临时表和临时存储过程等。
示例:
sp_helpdb traffic
结果:
示例:
sp_helpfile
结果只显示第二个表格
2.修改数据库选项
-----使用ALTER DATABASE 命令
ALTER DATABASE 命令的基本格式为:
ALTER DATABASE database_name
{ ADD FILE < filespec > [ , ... n ] /*在主文件组中增加数据文件*/
ADD FILE < filespec > [ , ... n ] [ TO FILEGROUP filegroup_name ] /*在用户定义文件组中增加数据文件*/
ADD LOG FILE < filespec > [ , ... n ] /*增加日志文件*/
REMOVE FILE file_name /*删除数据文件*/
REMOVE FILE log_file_name /*删除日志文件*/
ADD FILEGROUP filegroup_name /*增加文件组*/
REMOVE FILEGROUP filegroup_name /*删除文件组*/
MODIFY NAME = new_dbname /*更改数据库名*/
MODIFY FILEGROUP filegroup_name ( NAME = new_filegroup_name ) /*更改文件组名*/
}
示例:
/*在主文件primary中增加一个数据文件*/
alter database traffic
add file
(
name='add_traffic_data',
filename='F:\aaa\a3.ndf',
size=10,
maxsize=30,
filegrowth=10%
)
/*增加一个日志文件*/
alter database traffic
add log file
(
name='add_traffic_log',
filename='F:\aaa\a4.ldf',
size=1,
maxsize=3,
filegrowth=1
)
/*增加一个文件组*/
alter database traffic
add filegroup traffic_group
/*在新文件组traffic_gruop中增加一个数据文件*/
alter database traffic
add file
(
name='add_traffic_group_data',
filename='F:\aaa\a5.ndf',
size=2,
maxsize=3,
filegrowth=3%
)
to filegroup traffic_group
sp_helpfile
结果:
示例:
/*删除新增文件组中的数据文件*/
alter database traffic
remove file add_traffic_group_data
/*删除新增文件组
注:先删除文件组中的文件,再删除文件组,且主文件组和主日志文件不能删除*/
alter database traffic
remove filegroup traffic_group
sp_helpfile
结果:
示例:
/*更改数据库名*/
/*方法一*/
alter database traffic
modify name=new_traffic1
/*方法二:通过调用系统存储过程实现*/
sp_renamedb 'new_trarric1','new_traffic2'
结果1 && 结果2:
3. 删除数据库
-----使用DROP DATABASE 语句,其语法格式为:
DROP DATABASE database_name [ , ... n ]
示例:
drop database new_traffic2