查询
┌简单查询┌语法 SELECT 列1,列2... FROM 表
│ ├注释 --单行注释 /*多行注释*/
│ ├类型┌数值型 NUMBER 直接写
│ │ ├字符型 CHAR VARCHAR2 '单引号'
│ │ └日期型 DATE DATE'年-月-日'
│ └别名┌表别名 SELECT 列1,列2... FROM 表 表别名
│ └列别名 SELECT 列1 [AS] 列别名,列2... FROM 表
├限定查询┌语法 SELECT 列1,列2... FROM 表 WHERE 条件(表达式)
│ ├操作符┌比较大小的运算符 > < >= <= = != <>
│ │ ├逻辑运算符 AND OR NOT
│ │ ├BETWEEN 小值 AND 大值
│ │ ├IN(值1,值2,值3...)
│ │ ├算数运算符 + - * /
│ │ ├连接符 ||
│ │ └空 IS NULL IS NOT NULL
│ ├隐式转换
│ ├优先级
│ └转义┌双写 ''''
│ ├Q'{'}'
│ └模糊查询 ESCAPE '\'
└模糊查询┌语法 SELECT 列1,列2... FROM 表 WHERE 列 LIKE '匹配的内容' --模糊查询属于限定查询
└通配符 % _
·函数
┌系统函数┌单列函数┌数值函数┌ABS(数) 绝对值
│ │ │ ├MOD(数1,数2) 取余
│ │ │ ├CEIL(数) 向上取整
│ │ │ ├FLOOR(数) 向下取整
│ │ │ ├ROUND(数1[,数2]) 四舍五入
│ │ │ ├TRUNC(数1[,数2]) 截断
│ │ │ └POWER(数1,数2) 幂运算
│ │ ├字符函数┌UPPER(STR) 转大写
│ │ │ ├LOWER(STR) 转小写
│ │ │ ├INITCAP(STR) 转首字母大写
│ │ │ ├LENGTH(STR) 求字符长度 LENGTHB(STR)字节
│ │ │ ├TRIM(STR) 去两端空格
│ │ │ ├LTRIM(STR1[,STR2])去左端字符 RTRIM(STR[,STR2])去右端字符
│ │ │ ├LPAD(STR1,数,STR2)左填充 RPAD(STR1,数,STR2)
│ │ │ ├INSTR(STR1,STR2[,数1[,数2]]) 字符串的位置
│ │ │ ├SUBSTR(STR,数1[,数2]) 截取字符串
│ │ │ ├REPLACE(STR1,STR2[,STR3]) 整体替换
│ │ │ ├TRANSLATE(STR1,STR2,STR3) 逐一替换
│ │ │ └CONCAT(STR1,STR2) 连接字符串 ||
│ │ ├日期函数┌SYSDATE 当前系统时间
│ │ │ ├ADD_MONTHS(日期,数) 日期加减月份
│ │ │ ├MONTHS_BETWEEN(日期1,日期2) 相差的月份数
│ │ │ ├NEXT_DAY(日期,星期几/对应的数字) 下个星期几
│ │ │ ├LAST_DAY(日期) 当月的最后一天
│ │ │ ├ROUND(日期,'格式')四舍五入,返回最近的日期之初
│ │ │ └TRUNC(日期,'格式')截取到日期之初
│ │ ├转换函数┌ASCII(STR) 字符转成阿斯克码--字符函数
│ │ │ ├CHR(数) 阿斯克码转成字符 --数值函数
│ │ │ ├TO_DATE(STR,'格式') 字符转成日期
│ │ │ ├TO_NUMBER(STR) 纯数字字符转成数值
│ │ │ └TO_CHAR┌(参) 参数转成字符
│ │ │ ├(日期,'格式') 日期转成字符--提取日期中的元素
│ │ │ └(数,'格式') 数值转成字符--转成格式化数字
│ │ └通用函数┌USERENV('language') 客户端字符集
│ │ ├COALESCE(参1,参2...)多个参数中第一个不为空的值
│ │ ├DISTINCT 列1,列2... 去重
│ │ ├CASE WHEN┌①CASE 列 WHEN 列中值1 THEN 值1
│ │ │ │ WHEN 列中值2 THEN 值2...
│ │ │ │ [ELSE 值N] END
│ │ │ └②CASE WHEN 条件1 THEN 值1
│ │ │ WHEN 条件2 THEN 值2...
│ │ │ [ELSE 值N] END
│ │ ├DECODE(列,列中值1,值1,列中值2,值2...[值N])
│ │ └NVL(参1,参2) 参数1的空处理成参数2
│ ├ 聚合函数 ┌MAX(列) 最大值
│ │(分组函数)├MIN(列) 最小值
│ │ ├SUM(列) 求和
│ │ ├AVG(列) 平均值
│ │ ├COUNT(列|*|值) 计数
│ │ ├[WMSYS.]WM_CONCAT(列) 分组连接字符串
│ │ └LISTAGG(列,'分隔符')WITHIN GROUP(ORDER BY 列) 分组连接字符串
│ └--分析函数
└自定义函数
执行顺序
SELECT --5 后加要查询的字段,可以用函数,可以是一个值
FROM --1 数据来源,一般是表或视图
WHERE --2 分组前的筛选条件,多个条件用逻辑符连接,注意优先级
GROUP BY --3 字段名,要按照哪个字段分组
HAVING --4 分组后的筛选条件
ORDER BY --6 排序,加字段名或数字,数字表示第几个字段