
1. 執(zhí)行順序:FROM ON JOIN WHERE GROUP BY HAVING SELECT ORDER BY2. 模糊查詢:LIKE %(通配符) 如LIKE %A%LIKE _(占位符) 如LIKE A__3.INNOT INJOB IN (SALESMAN,CLERK)4.BETWEEN ... AND ...NOT BETWEEN... AND ...5.查詢去重 DISTINCTSELECT DISTINCT DEPTNO,JOB FROM EMP6.查詢排序 ORDER BYASC 升序可以省略默認由小到大排序即升序排列DESC 降序SELECT EMPNO,ENAME,DEPTNO,SAL FROM EMPORDER BY DEPTNO,SAL DESC;7. 關鍵詞SELECTFROMWHEREGROUP BYHAVINGORDER BYVARCHAR2NUMBERDATESUM()、和AVG()、平均值COUNT()、總個數MAX()、最大值MIN()、最小值MEDIAN() 中間值OVER() 開窗函數:SELECT EMPNO,ENAME,SAL,SUM(SAL)OVER() FROM EMP;8. 去nullNVL(COMM,0)9. 約束PRIMARY KEY 主鍵約束NOT NULL 非空約束DEFAULT 0 無約束,默認為0DEFAULT SYSDATE 添加系統(tǒng)時間為默認入職時間10.①加別名 ASSELECT SUM(SAL) AS 合計工資,AVG(SAL) 平均工資, -- 這里省略了 ASCOUNT(*) AS CT, -- 工作中表頭和表名盡量用英文表示MAX(SAL) AS MAX_SAL1, -- 可以使用英文 下劃線 數字表示注意不能數字開頭FROM EMP②虛擬列 ASCREATE TABLE PRORE(ID NUMBER,名稱 VARCHAR2(20),數量 NUMBER,單價 NUMBER,金額 AS (數量 * 單價), -- 虛擬列由數量乘以單價得來其他名稱 AS (名稱||國產) -- 虛擬列由名稱拼接國產得來);SELECT * FROM PRORE;11. ASCII碼12. 刪除語句----刪除表結構和數據DORP DDL----刪除指定條件數據語句DELETE DML----刪除所有數據語句TRUNCATE DDL不能回滾13.① CONSTRAINT 限制② COMMIT; 提交 TCL 語句③ ROLLBACK; 回滾④ COMMENT 注釋COMMENT ON TABLE EMP240515 IS 這是一個員工表用于存儲員工的相關信息;--給表添加注釋COMMENT ON COLUMN EMP240515.EMPNO IS 這是一個員工號;--給EMMPNO添加注釋COMMENT ON COLUMN EMP240515.HIREDATE IS 默認獲取系統(tǒng)時間為入職時間;--給HIREDATE添加注釋14. 集合UNION ALL(并集)UNION(并集)INTERSECT(交集)MINUS(補集)SELECT DEPTNO FROM DEPT --4 AMINUSSELECT DEPTNO FROM EMP --14 B A-B15. 分組拼接明細數據: LISTAGGSELECT JOB,COUNT(*),SUM(SAL),LISTAGG(ENAME, , )WITHIN GROUP(ORDER BY SAL) AS ENAME,LISTAGG(SAL, )WITHIN GROUP(ORDER BY SAL) AS SALFROM EMPGROUP BY JOB-- MYSQL分組拼接明細數據SELECT JOB,GROUP_CONCAT(ENAME SEPARATOR ,)FROM EMPGROUP BY JOB;ORACLE函數分為系統(tǒng)函數和自定義函數--系統(tǒng)函數又分為單行函數、聚合函數、開窗函數/分析函數--單行函數又分為數字函數、字符函數、日期函數--數字函數①ABS() --取絕對值②ROUND(X,Y) --對數字X保留Y位小數并進行四舍五入SELECT ROUND(3.146,2) FROM DUAL; --3.15SELECT ROUND(3.141) FROM DUAL; --3③TRUNC(X,Y) --對數字X保留Y位小數但不會進行 四舍五入SELECT TRUNC(3.146,2) FROM DUAL; --3.14SELECT TRUNC(3.646) FROM DUAL; --3④POWER(X,Y) --返回X的Y次方求冪SELECT POWER(3,2) FROM DUAL; --9⑤MOD(X,Y) --對X取Y的余數SELECT MOD(5,2) FROM DUAL ; --1--日期函數--日期-日期天數系統(tǒng)時間:SYSDATESELECT SYSDATE - TO_DATE(2026-8-1,YYYY-MM-DD) FROM DUAL;--日期數字日期SELECT SYSDATE 7 FROM DUAL; --2026/8/31 9:37:12①ROUND(日期,截取單位)SELECT ROUND(TO_DATE(20260824133423,YYYYMMDDHH24MISS),DD) FROM DUAL; --2026/8/25SELECT ROUND(TO_DATE(20260813,YYYYMMDD),MM) FROM DUAL; --2026/8/01SELECT ROUND(TO_DATE(20260413,YYYYMMDD),YYYY) FROM DUAL;--2026/1/01②TRUNC(日期,截取單位) --用法跟ROUND一致唯一區(qū)別是TRUNC不會四舍五入③ADD_MONTHS(日期,數字) --返回幾個月之后的當前時間SELECT ADD_MONTHS(SYSDATE,2) FROM DUAL; --2026/10/24 9:45:55SELECT ADD_MONTHS(SYSDATE,-2) FROM DUAL; --2026/6/24 9:46:10④LAST_DAY(日期) --返回日期對應月份的最后一天SELECT LAST_DAY(SYSDATE) FROM DUAL;⑤MONTHS_BETWEEN(日期,日期) --返回兩個日期相差的月份數SELECT MONTHS_BETWEEN(SYSDATE,TO_DATE(20260521,YYYYMMDD)) FROM DUAL; --3.11084826762246--字符函數LENGTH() --返回字符串的長度SELECT LENGTH(SCOTT) FROM DUAL; --5--去空值時好用REPLACE(X,Y,Z) --將字符串X中的Y替換成Z,Z不寫默認替換成空值SELECT REPLACE(SCOTT,S,T) FROM DUAL;INSTR(X,Y,Z,M) --查找字符串X中字符Y的位置從第Z為開始找找第M次出現(xiàn)Y的位置--示例查找字符串ABCDEFCG中第一次出現(xiàn)C的位置SELECT INSTR(ABCDEFCG,C,1,1) FROM DUAL; --3SELECT INSTR(ABCDEFCG,C,4,2) FROM DUAL; --0SUBSTR(X,Y,Z)--截取函數對字符串X進行截取從第Y為開始截--截取Z為長度,Y為負數時表示從右往左數Z不寫表示截取第Y為之后的所有字符SELECT SUBSTR(20260824,1,4) FROM DUAL;--2026⑥CONCAT(X,Y) --拼接字符串X和Y,一次只能拼接兩個參數SELECT CONCAT(2026,08) FROM DUAL;--202608SELECT CONCAT(CONCAT(2026,08),24) FROM DUAL;--20260824⑦|| --管道符也可以拼接多個字符串WM_CONCAT() --拼接整個字段的值默認用逗號拼接SELECT WM_CONCAT(ENAME) FROM EMP;將EMP表的工作用橫杠-拼接起來并且不能重復--輸出CLERK-SALESMAN-MANAGER-ANALYST-PRESIDENTSELECT REPLACE(WM_CONCAT(DISTINCT JOB),,,-) FROM EMPUPPER() 小寫轉大寫LOWER() 大寫轉小寫TRIM() --去左右空格SELECT TRIM( A B C ) FROM DUAL; --A B CLTRIM() --去左空格SELECT LTRIM( A B C ) FROM DUAL; --A B CRTRIM() --去右空格SELECT RTRIM( A B C ) FROM DUAL; -- A B C--函數總結分析函數/開窗函數可以同時輸出明細數據和聚合值主要有聚合型和非聚合型--聚合型SUM/AVG/MAX/MIN/COUNT()OVER([PARTITION BY ...][ORDER BY ...])--加了ORDER BY 有累計效果--非聚合型RATIO_TO_REPORT()OVER([PARTITION BY ...]) --占比函數FIRST_VALUE()OVER([PARTITION BY ...][ORDER BY ...]) --取第一個值NTILE()OVER([PARTITION BY ...][ORDER BY ...]) --切片函數WM_CONCAT()OVER([PARTITION BY ...][ORDER BY ...]) --拼接函數--排名ROW_NUMBER()OVER([PARTITION BY ...][ORDER BY ...]) --不考慮并列1 2 3 4RANK()OVER([PARTITION BY ...][ORDER BY ...]) --考慮并列并空出排名1 2 2 4DENSE_RANK()OVER([PARTITION BY ...][ORDER BY ...]) --考慮并列不會空出排名1 2 2 3--偏移LAG()OVER([PARTITION BY ...][ORDER BY ...]) --向上偏移LEAD()OVER([PARTITION BY ...][ORDER BY ...]) --向下偏移--注意分析函數不能直接用在WHERE之后一般分析函數不會跟GROUP BY 一起使用