首页 > 技术文章 > SQL21日自学通笔记(1)

jspdelphi 2016-04-11 00:28 原文

查找不重复数据

         DISTINCT

查询日期

         在access中格式是yyyy-mm-dd,Query执行的语句中用‘#’+Formatdata(‘yyyy-mm-dd’,date)+‘#’

SQL运算符

         取模%,MOD()

         +,-,*,%

         比较运算(true,false,Unknow)

         比较运算(<,>,<>,!=)

         逻辑运算(And,OR,Not)

                   为提高效率一般不用OR改用IN

         ||连接,CONCAT

         Like通配符%,_

SQL中排序大写字母总在小写的后面,不论是在ASCII,还是EBCDIC

SQL对大小写不敏感,但是数据库对大小写是敏感的

判断字段为空,非法

         Select * from 学生 where Number IS NULL

                                               IS  NOT NULL

集合运算(SET)

         就是高中数学中的集合操作

         UNION   并集

         INTERSECT 交集

         [.ɪntər'sekt]

         UNION ALL  两数据集的全部结果

         MINUS 相减

IN

统计函数

         CONUT,SUM,AVG,MAX,MIN

         方差  VARIANCE

         标准差 STDDEV

日期函数

         ADD_MONTHS(date,2)  加两个月

         LAST_DAY(date)指定月的最后一天

                                                                   

                                                                           正值

MONTHS_BETWEEN(S,E)         0

                                 负值(E早于S)

NEW_TIME修改时区

NEXT_DAY(date,’FRIDAY’)date最近一个周五的日期,本周或者下周

SYSDATE系统时间

数学函数

         ABS绝对值

         CELL 减去小数部分

         FLOOR 去掉小数加1

         三角函数 COS,COSH,SIN,SINH,TAN,TANH(都是弧度制)

         EXP自然指数

         LN自然对数

         LOG(n,m)  LogmN

         MOD

         POWER(a,b)a的b次方

         SIGN(n)判断n是不是正值

         SQRT平方根

字符函数

         CHR 跟 delphi的用法一样

         CONCAT 同||

         INITCAP  把 COME  变成Come

         LOWER,UPPER

         LPAD,RPAD

         LTRIM,RTRIM

         REPLACE(字段,‘目标’,‘替换为’)

         SUBSTR            跟delphi的Copy函数用法一样,当index是负值的时候 是倒着数

         TRANSLATE(字段,目标集合,替换为集合)

         INSERT(字段,‘目标’,StartIndex,EndIndex)

         LENGTH

转换函数

         TO_CHAR,TO_NUMBER

其他

         GREATEST集合中的最大值    

 LEAST中的最小值

USER使用者用户名

注意

         汇总函数不能在Where中使用

 

WHERE

STRING WITH 类似 LIKE(exp%)

ORDER BY

GROUP BY         

         明 SQL 无法把正常的列和汇总函数结合在一起 这时就需要 GROUP BY 子

句 它可以对 SELECT 的结果进行分组后在应用汇总函数 查询 SELECT * FROM CHECKS

返回了 14 行 而 SELECT PAYEE SUM AMOUNT FROM CHECKS GROUP BY

PAYEE 则把返回的 14 行分成了 7 组 然后对每组应用了汇总函数

当要求分组结果返回多个数值时不能在在 SELECT 子句中使用除分组列以外

的列 这将会导致错误的返回值 你可以使用在 SELECT 中未列出的列进行分组

HAVING 

         HAVING后面可以使用汇总函数

表的联合

         交叉联合  等值联合 不等值联合

JOIN ON

RIGHT OUTER JOIN ON

返回右表的所有的内容,不合条件的返回控值

LEFT OUTER JOIN  ON

联合的where部分的第一个子句是联合的条件

子查询

         子查询应该只返回一个值

IN

EXISTS

         如果子查询结果非空返回True

Any,Some

         对查询结果中的每一个真值返回一个True

         同IN相比,IN相当是多个选号的使用;ANY,SOME可以使用其他的比较运算

ALL

         一般用于排除

         WHERE Name<>ALL(子查询)

推荐阅读