SQLServer 语句记录

  1. 查询全天的数据
    字段名 BETWEEN '2020-07-28' AND DATEADD(DAY,1,'2020-07-28')
    -- DAY表示日期类型 这里表示查询28号0点到29号0点的全部数据

     

  2. Sqlserver存储过程模板

    USE 数据库;
    -- 如果存储过程存在 先删除
    if Exists(select name from sysobjects where NAME = '存储过程名' and type='P')
    	drop procedure 存储过程名
    GO
    CREATE PROCEDURE 存储过程名 需要传递的参数逗号隔开
    AS
     -- 声明变量
    DECLARE 变量名 类型
     -- 条件判断
    IF 条件一 AND 条件二....
    BEGIN
        逻辑语句
    END
    ELSE IF .....
    BEGIN
        逻辑语句
    END
    ELSE
    BEGIN
        逻辑语句
    END
    
    sql语句
    	
    GO

     

  3. 触发

    -- 触发器测试
    IF EXISTS (SELECT *FROM sysobjects WHERE name='AddOutPut')
        DROP TRIGGER AddOutPut
    GO
    CREATE TRIGGER AddOutPut
    ON ProductionInputHistory FOR INSERT  -- FOR/AFTER为后触发器
    AS
        BEGIN
           UPDATE LineLedger SET Cumulative = Cumulative+(SELECT product_qty FROM Inserted ) WHERE line_id = (SELECT line_id FROM Inserted )
        END
    GO
    -- 触发器测试
    IF EXISTS (SELECT *FROM sysobjects WHERE name='DelOutPut')
        DROP TRIGGER DelOutPut
    GO
    CREATE TRIGGER DelOutPut
    ON ProductionInputHistory FOR DELETE  -- FOR/AFTER为后触发器
    AS
        BEGIN
           UPDATE LineLedger SET Cumulative = Cumulative-(SELECT product_qty FROM Inserted ) WHERE line_id = (SELECT line_id FROM Inserted )
        END
    GO
    -- 触发器测试
    IF EXISTS (SELECT *FROM sysobjects WHERE name='UpdateOutPut')
        DROP TRIGGER UpdateOutPut
    GO
    CREATE TRIGGER UpdateOutPut
    ON ProductionInputHistory FOR UPDATE  -- FOR/AFTER为后触发器
    AS
        BEGIN
           UPDATE LineLedger SET Cumulative = Cumulative+(SELECT product_qty FROM Inserted )-(SELECT product_qty FROM Deleted) WHERE line_id = (SELECT line_id FROM Inserted )
        END
    GO

    触发器分类:

    类型:

      1.后触发器 (AFTER,FOR)先执行对应语句,后执行触发器中的语句

      2.前触发器  并没有真正的执行触发语句(insert,update,delete),而是执行触发后的语句

      3.行级触发器 (FOR EACH ROW) 在SQL server 中不存在

    注意:触发器中有两个临时表 Inserted 、 Deleted分别表示新纪录和旧纪录。Insert 时可以根据inserted表数据(即将新增的数据)来进行相关语句操作  Delete时同上 可以对Deleted临时表(即将删除的数据)进行操作 Update时可以理解为 旧纪录(即将被替换掉的数据)存放在Deleted 新纪录(即将提交的数据)存放在Inserted临时表

  4. 游标cursor

    USE 数据库名
    DECLARE @plan_id INT = 2
    DECLARE @res nvarchar(20)
    DECLARE CUR CURSOR FOR SELECT task_id FROM Task WHERE plan_id = @plan_id -- 此处查询的个数要定影相应个数的变量来接手数据
    -- 打开游标
    open CUR
    fetch next FROM CUR into @res
    WHILE (@@fetch_status=0)
    BEGIN
    	print @res
    	
    	fetch next FROM CUR into @res
    END
    CLOSE CUR
    DEALLOCATE CUR
    

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值