使用Transact-SQL命令创建数据库
CREATE DATABASE 数据库名
[ON [PRIMARY] [<数据库逻辑名> [,…n] [,< 文件组名> [,…n]] ]
[LOG ON {<LOG_NAME > [,…n]}]
[FOR RESTORE]
FILENAME='数据库物理文件名'
[,SIZE=size]
[,MAXSIZE={max_size|UNLIMITED}]
[,FILEGROWTH=growth_increment] ) [,…n]
参数说明:
(1)PRIMARY:该选项是一个关键字,指定主数据库文件,若没有给出这个关键字,则默认文件序列第一个是主数据文件。
(2)LOG ON:指明事务日志文件的明确定义。
数据库逻辑名称:这是在SQL Server系统中使用的名称,是数据库在SQL Server中的标识符。
(3)FILENAME:指定数据库所在文件的操作系统文件名称和路径,该操作系统文件名和NAME的逻辑名称一一对应。
(4)SIZE:指定数据库的初始容量大小。
(5)MAXSIZE:指定操作系统文件可以增长到的最大尺寸。
(6)FILEGROWTH:指定文件每次增加容量的大小,当指定数据为0时,表示文件不增长。
eg:
create database 教学练习 --数据库名称:教学练习
on primary --下面主文件属于主文件组
(name= 教学练习_data, --对应数据库第一个逻辑文件名
filename='d:servermssqldata教学练习_data.mdf', --对应的主文件名和存储位置
size=20, --初始分配的空间
maxsize=150, --指出最大空间为150MB
filegrowth=10%), --空间增长按10%增长
FILEGROUP stugroup --指定新的文件组,下面文件属于stugroup文件组
(name= 教学练习_data1, --对应数据库第二个逻辑文件名
filename='d:servermssqldata教学练习_data1.ndf', --对应的第一个次文件名和存储位置
size=10, --初始分配的空间
maxsize=100, --指出最大空间为100MB
filegrowth=1), --空间增长按1MB增长
(name= 教学练习_data2, --对应数据库第三个逻辑文件名
filename='d:servermssqldata教学练习_data2.ndf', --对应的第二个次文件名和存储位置
size=10, --初始分配的空间
maxsize=100, --指出最大空间为100MB
filegrowth=1) --空间增长按1MB增长
log on --日志文件
(name= 教学练习_log,
filename='d:servermssqldata教学练习_log.ldf',
size=10,
maxsize=50,
filegrowth=1)
输出结果为:
CREATE DATABASE 进程正在磁盘 '教学练习_data' 上分配 20.00 MB 的空间。
CREATE DATABASE 进程正在磁盘 '教学练习_data1' 上分配 10.00 MB 的空间。
CREATE DATABASE 进程正在磁盘 '教学练习_data2' 上分配 10.00 MB 的空间。
CREATE DATABASE 进程正在磁盘 '教学练习_log' 上分配 10.00 MB 的空间。
修改数据库
数据库创建后,主数据文件和日志文件的物理地址就不允许被改变和删除。但数据文件和日志文件的大小、增长方式等属性可以改变,可以增加或删除次数据文件、次日志文件、文件组。
ALTER DATABASE 数据库名
{ ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP 文件组名 ]
| ADD LOG FILE < filespec > [ ,...n ]
| REMOVE FILE数据库逻辑名
| ADD FILEGROUP文件组名
| REMOVE FILEGROUP文件组名
| MODIFY FILE < filespec >
| MODIFY NAME =数据库名
|MODIFY FILEGROUP 文件组名{NAME =新文件组名 }
参数说明:
(1)filespec参数定义如下:
( NAME =数据库逻辑名
[ , NEWNAME =新数据库逻辑名]
[ , FILENAME = '数据库物理文件名' ]
[ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ]
[ , FILEGROWTH = growth_increment ] )
(2)ADD FILE:指定要添加文件。
(3)TO FILEGROUP:指定要将指定文件添加到的文件组。
(4)ADD LOG FILE:指定要将日志文件添加到指定的数据库。
REMOVE FILE:从数据库系统表中删除文件描述并删除物理文件。只有在文件为空时才能删除。
(5)ADD FILEGROUP:指定要添加文件组。
(6)REMOVE FILEGROUP:从数据库中删除文件组并删除该文件组中的所有文件。只有在文件组为空时才能删除。
(7)MODIFY FILE:指定要更改给定的文件,更改选项包括 FILENAME、SIZE、FILEGROWTH和MAXSIZE。一次只能更改这些属性中的一种。必须在<filespec>中指定数据库逻辑名,以标识要更改的文件。如果指定了SIZE,那么新大小必须比文件当前大小要大。
(8)SIZE:指定数据库的初始容量大小。
(9)MAXSIZE:指定操作系统文件可以增长到的最大尺寸。
(10)FILEGROWTH:指定文件每次增加容量的大小,当指定数据为0时,表示文件不增长。
eg:
Alter database 教学练习 --修改教学练习数据库
modify file( --修改数据文件教学练习_data
name='教学练习_data',
maxsize=UNLIMITED
)
GO
Alter database 教学练习
add file ( --增加数据文件教学练习_add
name='教学练习_add',
Filename='d:servermssqldata教学练习_add.mdf',
Size=5,
Filegrowth=0 --不允许自动增长
)
GO
Alter database 教学练习
Remove file 教学练习_data2 --删除次数据文件教学练习_data2
GO
Alter database 教学练习
Add log file ( --增加日志文件教学练习_addlog
name='教学练习_addlog',Filename='d:servermssqldata教学练习_addlog.ldf',
Size=1,
Maxsize=10,
Filegrowth=1
)
GO
收缩数据库
DBCC SHRINKDATABASE
(database_name [,target_percent]
[,{NOTRUNCATE} | TRUNCATEONLY]
)
参数说明:
- target_percent:表示当数据库收缩后还剩下的自由空间(可用空间的百分比)。
- NOTTRUNCATE:被释放的文件空间还保持在数据库文件的范围内,否则释放的空间被系统收回。
- TRUNCATEONLY:将所有未使用的数据空间释放给操作系统使用。使用该关键字,将忽略target_percent限制。
查看数据库信息
(1)查看数据库信息
Sp_helpdb --返回所有数据库信息
Sp_helpdb 数据库名称 --返回当前数据库信息
(2)查看数据空间使用状况
Sp_spaceused --返回当前数据库空间使用情况
DBCC SQLPERF(LOGSPACE) --返回所有数据库的日志文件使用情况
删除数据库
Drop语句可以从SQL Server中一次删除一个或多个数据库。其语法如下:
Drop database database_name[,…n]
删除创建的数据库教学练习。
语句如下:
drop database 教学练习 -- 教学练习中所包含的文件都被删除