关于sql的一些学习心得

因为最近的项目的存储过程都是由我做的,关于一些sql的语法以及心得记录一下:

  1.首先是cast:

            

      CAST是将一种数据类型的表达式转换为另一种数据类型的表达式。
     语法
CAST (expression AS data_type [ (length ) ] )
功能分解步骤
1. CAST(id AS VARCHAR(20)) 将 id转换为类型 VARCHAR(20),若 CAST(2011 AS VARCHAR(20))转换结果为 '2011'
   如我想取今天生成的所有数据对于时间比对有三种方法:
    1.1 用cast:cast(getdate() as date)=cast(a.CreateTime as date)
    1.2 Month(getdate())=Month(a.CreateTime) and day(getdate())=day(a.CreateTime)
    1.3 convert(char(10),getdate(),120)=convert(char(10),a.CreateTime,120)
2.case,case when语法如何使用呢
  举例:
    select 
         case SuervyTitle.SuervyTypeId when 1 then '产品'
	 else '未知' end
    from SuervyTitle
   重点是:必须要有 End ,Else写不写都可以,如果不写esle不满足条件的会以null填充
3. Exists 对于Exists,不得不提In
   select * from Customer where OpenId in(select OpenId from JoinNumber)  这样一个子查询就很明显的阐述In可以
   有返回值的,但是Exists是没有的,Exists返回的是true或者false
   SELECT *
  FROM [abbottdiabeteswechat].[dbo].[DD_CustomerAddress] DDC
  where EXISTS(SELECT 1 FROM #D WHERE #D.OpenId=DDC.OpenId)
  这也是一个子查询机制,exists在表数据多的时候要比in快,因为exists可以用到索引,如果上例中子查询中的where条件后面   的字段带索引就会比in快 ,为什么会select 1 呢 就是不在乎返回什么只要查询的出来就可以,曾经我犯过一个错误
 IF exists(select count(1) from Customer) 因为count(1)如果没有值的话也会返回0,所以这个exists返回的就是真,if语句    会永远进去。注意注意!
4.sql 事务
 事务其实概念很简单 就是一起执行,中间出错就回滚,主要是写法笔者比较陌生,看了大神的代码又跟try糅合在一起

        BEGIN -- 首先外面先来个begin end
            begin try-- 然后放try
                  begin tran
                  commit
            end try
            begin catch--有try就有catch
                rollback--回滚
            end catch
        END
博客里又练了一遍写法嘻嘻
5.NEWID()
 这个NEWID()方法最近经常使用,是随机排序的作用,对于从数据库抽题后随机对题目和选项排序,很方便
 order by NEWID()

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值