您的位置:首页 > 数据库

T-SQL复习总结--用T-SQL创建,修改,管理,删除数据库

2012-10-08 10:28 471 查看
go: /article/4708941.html

一,用T-SQL创建数据库

简单的:

数据名:Sales

数据库主文件路径全名:d:\dbfiles\sales_dat.mdf

日志文件路径全名:d:\dbfiles\sales_log.ldf

注意,目录一定要存在,否则会创建失败。

create database Sales

on primary

(

name='salesdb', --文件逻辑名

filename='d:\dbfiles\sales_dat.mdf', --文件磁盘文件路径全称

size=5, --初始化大小

maxsize=15, --最大值

filegrowth=1 --增量

)

log on

(

name='saleslog',

file='d:\dbfiles\sales_log.ldf',

size=5,

maxsize=15,

filegrowth=1

)

go

复杂的:有多个次数据库文件和次日志文件的情况.

create database Sales

on primary

(

name='sales1',

filename='d:\dbfiles\sales1_dat.mdf',

size=5,

maxsize=10,

filegrowth=1

),

(

name='sales2',

filename='d:\dbfiles\sales2_dat.ndf',

size=5,

maxsize=10,

filegrowth=1

)

,

(

name='sales3',

filename='d:\dbfiles\sales3_dat.ndf',

size=5,

maxsize=10,

filegrowth=1

)

log on

(

name='saleslog1',

file='d:\dbfiles\sales1_log.ldf',

size=5,

maxsize=15,

filegrowth=1

)

,

(

name='saleslog2',

file='d:\dbfiles\sales2_log.ldf',

size=5,

maxsize=15,

filegrowth=1

)

二,用T-SQL修改数据库名

exec sp_renamedb 'DBName','NewDBName'

注意,必须在单用户模式下才可以改名,所以完整的写法:

exec sp_dboption 'DBName','single user',true

exec sp_renamedb 'DBName','NewDBName'

exec sp_dboption 'NewDBName','single user',false

上面的是书上的资料上说的。不过在SQL SERVER2005 Express下测试:

exec sp_dboption 'dbname','single user',false --转为非单用户模式

exec sp_renamedb 'dbname','NewDBName' --一样执行成功,说明上面所说的

对SQL SERVER2005 Express不适合。

那么SQL SERVER2000呢?暂没有测试环境。不得而知。

三,用T-SQL修改数据库文件路径,大小等信息

alter database

modify file(name='逻辑文件名(必须)',filename='文件路径',size=数字)

filename,size,maxsize,filegrowth,可以全部一起修改,也可以只修改其中一部分。

注意情况:

1,在SQLSERVER2005 Express下修改了filename,文件不会自动移动,需要手移动才正常。

2,size修改的值必须大于文件当前的大小。

3,如果要缩小数据库文件的大小,需使用下面的T-SQL:

use dbname

dbcc shrinkfile('逻辑文件名',大小)

四,用T-SQL修改数据库的结构

在现有数据库基础上添加新数据库文件

alter database dbname

add file

(

name='',file='',size=,....

)

go

在现有数据库基础上添加新日志文件

alter database dbname

add log file

(

name='' , file='' , size=,....

)

在现有数据库基础上移除文件

alter database dbname

remove file 文件逻辑名 --注意逻辑名不需要' '包起来

遗留问题:如何在移除文件之前,把数据移动到别的文件上去?

五,用T-SQL删除数据库文件

drop database dbname

无法删除数据库 "#Test",因为该数据库当前正在使用

use master
declare @dbname sysname
set @dbname='Sales' --这个是要删除的数据库库名
if db_id(@dbname) is null
print '数据库'+@dbname+':不存在'
else
begin
print '数据库'+@dbname+':存在'
declare @s nvarchar(1000)
declare tb cursor local for
select s='kill '+cast(spid as varchar)
from master..sysprocesses
where dbid=db_id(@dbname)
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb
exec('drop database ['+@dbname+']')
end
exec('create database ['+@dbname+']')
GO


遗留问题:如果在使用当中,是不允许删除的。如果用T-SQL强制删除?

六,用T-SQL判断数据库是否存在

可以用DB_ID ( [ 'database_name' ] )函数判断,函数的用作:返回当前数据库的数据库 ID,不存在返回NULL

if db_id('databasename') is null

print '不存在'

else

print '存在'

附加说明:

以上T-SQL在SQL SERVER 2005 EXPRESS测试通过。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: