SQL Server 2008常用的数据库知识整理

数据库知识点:

一、计算字段

1、NULLIF函数 将 null 的姓名转化为“佚名”;

    表达式:NULLIF ( expression1 , expression2 )
    含义:如果两个表达式不等价, 则 NULLIF 返回第一个 expression1的值。
         如果两个表达式等价, 则 NULLIF 返回第一个 expression1类型的空值。

2、Beween And 计算字段
   如:Fsalary Between Fage*1.5+2000 And Fage*1.8+5000

3、SQL的语法计算,取代代码的计算
   如: Update t set fgroup=id/10

 

二、组合查询 Union

1、UNION操作符可以将两个(或多个)查询语句的两个查询结果集合并成一个结果集;

2、连接原则:
   一是每个结果集必须有相同的列数; 二是每个结果集的列必须类型相容。

3、默认规则:
   UNION运算符合并了两个查询结果集, 其中完全重复的数据行被合并为了一条

4UNION ALL获得所有的结果集。

 

三、匹配

1、_(补位)----单字符匹配

2%(所有)----多字符匹配

3[]----集合匹配
   如:[AB]%,以“A” 或者“B“开头长度, 长度任意。
   注:集合取反,“^”,如“[^AB]%

 

四、in语句

1、多值检测
   如:SELECT FAge,FNumber,FName FROM T_Employee
   WHERE FAge IN (23, 25, 28)

2、范围值检测(不提倡,推荐用between...and...)

 

五、WHERE 1=1 使用动态组装的SQL

1、指定一个永远为真的条件,不需要再判断where是否存在了;
2、容易造成性能损失;
3、最好where与and都要拼接。 

六、窗口函数ROW_NUMBER()

1、含义:计算每一行数据在结果集中的行号(从1开始计数)


2、例:SELECT ROW_NUMBER() OVER(ORDER BY FSalary),FNumber,FName,FSalary,FAge
      FROM T_Employee


3、扩展:
   第3行到第5行的数据:
   SELECT * FROM
  (
   SELECT ROW_NUMBER() OVER(ORDER BY FSalary DESC) AS rownum,
   FNumber,FName,FSalary,FAge FROM T_Employee
  ) AS a
  WHERE a.rownum>=3 AND a.rownum<=5

七、数学函数

1ABS()函数,求绝对值;
2POWER()函数: 一般power(sex,2),第一个参数为待求幂的表达式, 第二个参数为幂。 如select POWER(2,3) 结果为8。
3SQRT()函数,计算平方根;
4RAND()函数,求随机数(select RAND();)
5、舍入到最大整数,CEILING()函数; 舍入到最小整数, FLOOR()函数; 四舍五入,ROUND()函数。 6DATENAME()函数 可选值 别名 说明 Year yy、 yyyy 年份 Quarter qq, q 季度 Month mm, m 月份 Dayofyear dy, y 每年的某一日 Day dd, d 日期 Week wk, ww 星期  Weekday dw 工作日 Hour hh 小时 Minute mi, n 分钟 Second ss, s 秒 Millisecond ms 毫秒 实例:select f_GUID,DATENAME(Weekday,BirthDate) 星期 from T_TeacherArchives
7CAST()和CONVERT()两个函数 实例: select IDnumber,RIGHT(IDnumber,6) 后六位 from T_TeacherArchives select IDnumber,cast(RIGHT(IDnumber,6) AS INTEGER)+1 as 后六位 from T_TeacherArchives select IDnumber,CONVERT(INTEGER,RIGHT(IDnumber,6))+1 as 后六位 from T_TeacherArchives(注意类型)

  8、COALESCE()函数
     功能:空值处理
   表达式:COALESCE ( expression,value1,value2……,valuen)
   实例:
        select f_name,f_csrq,COALESCE(f_csrq,‘2015-10-10‘) as 重要时期
       from T_studentArchives where f_name = ‘11‘
      (若f_csrq为NULL,则重要时期为2015-10-10;否则,重要时期为f_csrq)
       select f_name,f_csrq,f_zz,COALESCE(f_csrq,f_zz,‘2015-10-10‘)
      as 重要时期 from T_studentArchives where f_name = ‘11‘
      (若f_csrq为NULL,则再次判断f_zz,理解同上)
    简化版:ISNULL()函数

    技术分享

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。