【Oracle】SQL笔记
与MySQL的区分
https://www.cnblogs.com/bailing80/p/11440927.html
获取当前系统时间
-- 查询当前系统时间,DUAL为一张临时表 SELECT SYSDATE FROM DUAL
获取时差
-- 7分钟前 SELECT SYSDATE, SYSDATE - INTERVAL '7' MINUTE FROM DUAL; -- 7小时前 SELECT SYSDATE, SYSDATE - INTERVAL '7' HOUR FROM DUAL; -- 7天前 SELECT SYSDATE, SYSDATE - INTERVAL '7' DAY FROM DUAL; -- 7月前 SELECT SYSDATE, SYSDATE - INTERVAL '7' MONTH FROM DUAL; -- 7年前 SELECT SYSDATE, SYSDATE - INTERVAL '7' YEAR FROM DUAL; -- 7分钟后 SELECT SYSDATE, SYSDATE + INTERVAL '7' MINUTE FROM DUAL; -- 7小时后 SELECT SYSDATE, SYSDATE + INTERVAL '7' HOUR FROM DUAL; -- 7天后 SELECT SYSDATE, SYSDATE + INTERVAL '7' DAY FROM DUAL; -- 7月后 SELECT SYSDATE, SYSDATE + INTERVAL '7' MONTH FROM DUAL; -- 7年后 SELECT SYSDATE, SYSDATE + INTERVAL '7' YEAR FROM DUAL;
字符模糊查询
-- ORACLE LIKE查询 SELECT * FROM 表名 WHERE INSTR(字段, '目标字符') > 0
分页查询样例:
SELECT * FROM ( SELECT ROWNUM R, 别名A.* FROM 表名 别名A WHERE ROWNUM <= 当前页 * 每页记录数 ) 别名B WHERE 别名B.R > (当前页 - 1) * 每页记录数;
分页还需要排序处理
SELECT * FROM ( SELECT ROWNUM RN,别名A.* FROM ( SELECT -- 需要的字段 FROM 表名 -- 这里可以是多表 -- WHERE 筛选条件 ORDER BY 排序字段 [ASC, DESC] ) 别名A WHERE ROWNUM < 当前页数 * 每页记录数 ) WHERE RN > (当前页数 - 1)* 每页记录数
递归查询:
https://www.cnblogs.com/Soprano/p/10659127.html
查询目标节点和所有下级
-- Oracle递归查询 SELECT * FROM 表名 START WITH 字符字段名 ='条件值' -- (起始条件) CONNECT BY PRIOR 主键字段名 = 父键字段名 -- 主键 等于 父建
查询目标节点和所有上级,就是把PRIOR条件倒过来
-- Oracle递归查询 SELECT * FROM 表名 START WITH 字符字段名 ='条件值' -- (起始条件) CONNECT BY PRIOR 父键字段名 = 主键字段名