sql知识

本文介绍了SQL触发器的使用,包括设置标识符、非空属性、错误处理及数据库索引建立、游标操作等核心内容。同时,阐述了如何进行SQL基本操作如创建表、插入、删除、更新数据、添加、删除、修改字段、新建和删除约束、默认值等,为数据库管理提供全面指南。

----1.觸發器
SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO


ALTER    TRIGGER  Buy_BefToPo_tD ON dbo.Buy_BefToPo       
FOR DELETE      
AS      
begin      
  declare  @errno   int,      
           @errmsg  varchar(255),@i int,@j int,@vMPONum chrpaperno      
       
  if Exists(select t1.*       
            from  Buy_PODtl t1(nolock),      
     deleted t2(nolock)      
            where t1.SourceNo = t2.SourceNo      
              and t1.SourceItem =t2.SourceItem)      
  begin      
    select @errno = 33333, @errmsg = ' 已轉訂購不可刪除 !! '      
    goto error      
  end      
      
  if Exists(select ProtDate       
            from  deleted (nolock)      
            where isnull(ProtDate,'')!=' ')      
  begin      
    select @errno = 33333, @errmsg = ' 已輸入保固期限不可刪除 !! '      
    goto error      
  end   
   
  if @@Error <> 0       
     begin      
         select @errno=39999,@errmsg='發生錯誤__(Buy_BefToPo)_1'      
         goto Error      
     end  
      
return      
error:      
    raiserror @errno @errmsg      
    rollback transaction      
end  


GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO




-----2.聚集索引、非聚集索引(索引建立后存和取的數據才會按照索引排序,之前的數據不會排


序)
 CREATE  CLUSTERED  INDEX [index_Buy_BefToPo] 
ON [dbo].[Buy_BefToPo]([Sourceno], [SourceItem]) 
ON [PRIMARY]
GO
----------------------------------------------------
 CREATE  INDEX [index_Buy_BefToPo] 
ON [dbo].[Buy_BefToPo]([Sourceno], [SourceItem]) 
ON [PRIMARY]
GO




-----------3.遊標
declare @i int,@j int,@dt datetime  
select @i=0,@j=0  
declare c cursor for select dt from @ruku order by dt  
open c  
fetch next from c into @dt   
while @@fetch_status=0  
begin  
select @i=@i+rukusf from @ruku where dt=@dt  
select @j=@j+rukumoney from @ruku where dt=@dt  
insert into @temp  
select items='入庫面積 (SF)',type='累計',@dt,@i  
insert into @temp  
select items='入庫金額 (USD)',type='累計',@dt,@j  
fetch next from c into @dt  
end   
close c  
deallocate c  



----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

sql基礎知識------------------------

新建表:
create table [表名]
(
[自动编号字段] int IDENTITY (1,1) PRIMARYKEY ,
[字段1] nVarChar(50) default \'默认值\' null ,
[字段2] ntext null ,
[字段3] datetime,
[字段4] money null ,
[字段5] int default 0,
[字段6] Decimal (12,4) default 0,
[字段7] image null ,
)

删除表:
Drop table [表名]

插入数据:
INSERT INTO [表名] (字段1,字段2) VALUES(100,\'51WINDOWS.NET\')

删除数据:
DELETE FROM [表名] WHERE [字段名]>100

更新数据:
UPDATE [表名] SET [字段1] = 200,[字段2] = \'51WINDOWS.NET\' WHERE [字段三] = \'HAIWA\'

新增字段:
ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL

删除字段:
ALTER TABLE [表名] DROP COLUMN [字段名]

修改字段:
ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR (50) NULL

重命名表:(Access 重命名表,请参考文章:在Access数据库中重命名表)
sp_rename \'表名\', \'新表名\', \'OBJECT\'

新建约束:
ALTER TABLE [表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= \'2000-1-1\')

删除约束:
ALTER TABLE [表名] DROP CONSTRAINT 约束名

新建默认值
ALTER TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT \'51WINDOWS.NET\' FOR [字段名]

删除默认值
ALTER TABLE [表名] DROP CONSTRAINT 默认值名

删除Sql Server 中的日志,减小数据库文件大小
dump transaction 数据库名 withno_log
backup log 数据库名 with no_log
dbcc shrinkdatabase(数据库名)
exec sp_dboption \'数据库名\',\'autoshrink\', \'true\'

\\\'添加字段通用函数
Sub AddColumn(TableName,ColumnName,ColumnType)
Conn.Execute(\"Alter Table \"&TableName&\" Add\"&ColumnName&\" \"&ColumnType&\"\")
End Sub

\\\'更改字段通用函数
Sub ModColumn(TableName,ColumnName,ColumnType)
Conn.Execute(\"Alter Table \"&TableName&\" Alter Column\"&ColumnName&\" \"&ColumnType&\"\")
End Sub

\\\'检查表是否存在

sql=\"select count(*) as dida from sysobjectswhere id = object_id(N\'[所有者].[表名]\') and OBJECTPROPERTY(id, N\'IsUserTable\') =1\"

set rs=conn.execute(sql)

response.write rs(\"dida\")\'返回一个数值,0代表没有,1代表存在


判断表的存在:
select * from sysobjects where id = object_id(N\'[dbo].[tablename]\') andOBJECTPROPERTY(id, N\'IsUserTable\') = 1

某个表的结构
select * from syscolumns where id = object_id(N\'[dbo].[你的表名]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1

 







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值