【Oracle】SQL筆記
阿新 • • 發佈:2022-03-05
與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' DAYFROM 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 父鍵欄位名 = 主鍵欄位名