zoukankan      html  css  js  c++  java
  • SQL学习笔记

    1 distince 值能作用于列名 distince id  不能 distince *

    2 时间函数 day(getdate()) 获取天  year(getdate()) 获取年  month(getdate())  月 datediff(day,getdate(),'2015-12-14') 获取时间差,dateadd 加时间 datepart  datename   获取时间的一部分

    3 存储过程归根还是sql语句拼装  ,对于频繁用到的数据源 用临时表,可以吧临时表写成临时变量的形式,

    表临时变量

    4  select
    'INSERT INTO [dbo].[Common_Street] VALUES('
    +Convert(varchar(20),ID)
    +','''+ StreetName+''''
    +','''''
    +','+Convert(varchar(20),SUBSTRING(StreetCode,0,7))
    +','+Convert(varchar(20),IsDeleted)
    +','''+ StreetCode+''''
    +',0'
    +')'
    from TempStreet 利用拼接字符串,写批量插入语句,主要还是思维限制

    5 临时表 临时变量 临时表变量

    declare @ltable table
    (
    id int IDENTITY PRIMARY KEY not null,
    ldate datetime null,
    lmoney money null
    )

    6 存储过程 SET NOCOUNT ON:

    当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。

    如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。
    存储过程到最后还是sql语句的拼写和拼装

    7
    保证数据的完整性 要么全部执行 要不不执行
    • BEGIN TRAN:设置起始点。
    • COMMIT TRAN:使事务成为数据库中永久的、不可逆转的一部分。
    • ROLLBACK TRAN:本质上说想要忘记它曾经发生过。
    • SAVE TRAN:创建一个特定标记符,只允许部分回滚。
    
    

    BEGIN TRAN Tran_Money --开始事务

    
    

    DECLARE @tran_error int;
    SET @tran_error = 0;
    BEGIN TRY
    if(select lmoney from ListData where lid=2)>0
    begin
    update ListData set lmoney=lmoney-10000 where lid=2
    end
    else
    begin
    SET @tran_error = 1
    end
    SET @tran_error = @tran_error + @@ERROR;
    --测试出错代码,看看刘备的钱减少,关羽的钱是否会增加
    --SET @tran_error = 1;
    update ListData set lmoney=lmoney+10000 where lid=4
    SET @tran_error = @tran_error + @@ERROR;
    END TRY

    
    

    BEGIN CATCH
    PRINT '出现异常,错误编号:' + convert(varchar,error_number()) + ',错误消息:' + error_message()
    SET @tran_error = @tran_error + 1
    END CATCH

    
    

    IF(@tran_error > 0)
    BEGIN
    --执行出错,回滚事务
    ROLLBACK TRAN;
    PRINT '转账失败,取消交易!';
    END
    ELSE
    BEGIN
    --没有异常,提交事务
    COMMIT TRAN;
    PRINT '转账成功!';
    END

    
    

    go

  • 相关阅读:
    对ManualResetEvent和AutoResetEvent的巩固练习
    经纬度点距离的那点儿事
    【读书笔记】C++Primer---第三章
    .NET应用程序调试—原理、工具、方法
    【读书笔记】C++Primer---第二章
    【读书笔记】C++Primer---第一章
    8 个最好的 jQuery 树形 Tree 插件
    C++中引用(&)的用法和应用实例
    自娱自乐之直接插入排序
    自娱自乐之堆排序
  • 原文地址:https://www.cnblogs.com/q101301/p/4207716.html
Copyright © 2011-2022 走看看