【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 父键字段名 = 主键字段名

 

posted @ 2022-03-05 17:47  emdzz  阅读(24)  评论(0编辑  收藏  举报