OpenSource Hardware, Back-End, CTF

Article List

Tag Cloud

tag1 tag2 tag3 tag4

About

关于关于关于关于关于关于关于

查看更多

Feeds

RSS feed
数据库与msSQL
19 September 2017

概念

把语句看成几个clause的组合,每个子句的输出是下一个子句的输入

DDL只有alter,drop,create

select操作的对象类型是表,relation

SELECT

select + 列名 + 字符串

select
from
where
group by
having
order by

select相关的运算顺序

  1. from
  2. where
  3. group by
  4. having
  5. select
  6. order by

GROUP BY

GROUP BY的输出结果,一行是之前很多行的一组,一般会违反原子性

SELECT count(*), sum(sal), avg(EMP)     -- 需要保证只出现一个值,无论是否有人为的控制,必须放到group子句去或者从语句上直接避免原子性,一个组的统计性质
FROM EMP
GROUP BY DEPTNO,DNAME(没出现过就不能select)

HAVING

对GROUP BY之后的结果进行过滤

内建函数

isnull(var, 0)
d between 1 and 2 --两边闭区间

select 1 form r,s

笛卡尔积

COUNT

逻辑表达式

SQL没有==,没有连续的比较运算符写法12<c<45

使用not时,需要括号

where 1=2 AND a is not NULL AND b is NULL

模糊匹配

字符串内部也不区分大小写

where ename='JonEs'
where ENAME like 'j%'   -- %匹配任意长度任意字符
where ENAME like '%j%' AND ENAME like '%s%'     -- 两个字符
where ENAME like '%s'
where ENAME like '_o%'  -- _匹配一个任意字符
where ENAME like 'M_%' ESCAPE 'M' -- 任意字符都可以作为转义符号
where ENAME like '[[]'  -- 通过[]也可以查询特殊字符
where ENAME like '[0-9]t' or ENAME like '[abc]e'    -- 从[]匹配一个字符
where ENAME like '[^0-4]t'  -- 排除[]中的字符

正则表达式

msSQL不支持完全的直接的正则函数,需要自己实现简单的函数

MySQL支持的正则表达式

待补充