SQL操作整理(...)

 检测数据库是否存在
use master
go
if not exists
(select * from sysdatabases where name = 'test_db')
 begin
 create database test_db
 select * from sysdatabases where name = 'test_db'
 end
else
 begin
 drop database test_db
 end
go
说明:
在master.sysdatabases表中,存放了当前SQL系统的数据库信息。我们可以使用select进行查询

某个表是否存在。SQL自动建表时会使用这样的安全机制。

创建数据库
CREATE DATABASE [test_db]  ON
(
 NAME = N'test_db',
 FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL/data/test_db.mdf' ,
 SIZE = 1,
 FILEGROWTH = 10%
)
LOG ON
(
 NAME = N'test_db_log',
 FILENAME = N'C:/Program Files/Microsoft SQL

Server/MSSQL/data/test_db_log.LDF' ,
 FILEGROWTH = 10%
)

分离和附加数据库(企业管理器提供界面操作)
如果需要提取数据库文件,而不是删除,使用sp_detach_db将指定数据库从master.sysdatabases

系统表格中删除。这样,我们可以从MSSQL/Data/xx.mdf xx.ldf拷贝文件。

如果重装了SQLServer,或者重装系统了,但是数据库文件仍然存在,这时我们可以使用系统存储

过程sp_attach_db进行恢复:
exec sp_attach_db
 @dbname = '库名',
 @filename1 = 'C:/MSSQL/Data/库名_Data.MDF',
 @filename2 = 'C:/MSSQL/Data/库名_Log.lDF'
阅读 sp_attach_db代码,实现如下:
create database @dbname on
(
 filename = @filename1,
 filename = @filename2
 for attach
)


备份数据库
BACKUP DATABASE 数据库 TO 备份设备
例如:
backup database wdx_1 to disk='d:/bak/wdx_1_bak.bak'

还原数据库
RESTORE DATABASE 数据库 FROM 备份设备
例如:
restore database wdx disk='d:/bak/wdx_1_bak.bak'

枚举数据库
use master
go
select * from sysdatabases
go

枚举库内的系统对象
use testdb
go
select * from sysobjects where xtype='U'  //枚举用户自定义对象
selct * from sysobjects where name='wdx_1' //查询某个表是否存在
go
Select * from  syscolumns where id = object_id('wdx_1')  //枚举字段
也可以参考下面的代码
declare @id int
select @id = id from sysobjects where name = 'wdx_1'
select a.* from syscolumns a inner join sysobjects b on a.id = b.id and a.id = @id
或 select a.* from syscolumns a inner join sysobjects b on a.id = b.id and

b.name='wdx_1'

 

 

下面是一个触发器代码

CREATE TRIGGER trig_wdx_3 ON [dbo].[wdx_3]
FOR INSERT, UPDATE, DELETE
AS

     declare @id char(20)
     select @id = id from inserted

     declare @count int
     select @count = count(id) from wdx_3 where id =  @id

     if @count > 1
     begin
           rollback transaction
           print '存有的ID号,插入失败'
     end
     else
           print '插入成功'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值