sql筆記(來自oracle 的scott用戶)

1.區分sql命令和sqlplus(oracle提供)-->sql不能縮寫,sqlplus能夠java

2.mysql 不區分字符串的大小寫, oracle區分mysql

3.oracle 查詢系統參數設置 : select * from v$nls_parameters;sql

      alter session set parameter ='  ';數據庫

空值問題:session

   (1)null !=null  數據庫中null是未賦值的意思,不是表明空格或0oracle

   (2)若是集合中含有null ,不能使用 not in 但能夠使用in 函數

如: select * from emp where deptno not in(10,20,null)-->錯誤性能

5ebda8c0-3b4d-4f63-9b76-7599bc1465f5

   (3)組函數會自動濾空,能夠嵌套濾空函數來屏蔽.net

如:comm中含有10個空值3d

       count(*)爲15行記錄

       count(comm)爲5行記錄(已經濾空值)

4.查詢帶有下滑線的名字-->select * from table where name like '%\_%' escape '\' ;

5.desc 排序只做用於 最近的一列

6.排序時null在最後 select * from table order by comm desc nulls last(只能在oracle中)

7.ROUND--> 四捨五入   TRUNC截斷  MOD求餘

8:條件表達式

       在sql語句中使用IF-THEN-ELSE邏輯

       使用兩種方法:

          CASE表達式:SQL99的語法,相似basic ,比較繁瑣

select ename,job,sal 漲前,

                 case job when 'PRESIDENT' then sal+1000

                          when 'MANAGER' then sal+800

                          else sal+400

                 end 漲後

from emp;

          DECODE函數:Oracle本身的語法,相似java,比較簡潔

select ename,job,sal 漲前,

                 decode(job,'PRESIDENT',sal+1000,

                                    'MANAGER',sal+800,

                                                       sal+400) 漲後

from emp

9:where 和having的區別-->where 條件中不能有組函數

10:group by 語句的加強

  group by deptno , job

     +group by deptno

     +group by null

     =

     group by rollup(deptno,job)

抽象:

    group by rollup(a,b) = group by a,b

                                        +group by a

                                        +group by null

81991f7b-9e51-48a7-a906-244a919008a1

11:笛卡爾全集:兩張 表的列數相加行數相成,應該儘可能使用鏈接條件,避免使用笛卡爾全集,由於笛卡爾全集中 可能有錯誤

004ae564-8d42-434c-a134-980613d38145

12:8f99c45a-5b6a-4819-a506-11bb7cd49d29

13:注意,自鏈接有性能問題(所產生的笛卡爾集是表記錄的平方,若是有1億條記錄,呵呵~)

63b8ef15-79b4-4caf-b212-08ba342c5edc

14:層次查詢,當你查詢的數據是一顆樹的時候,使用層次查詢取代自鏈接

23370753-31d4-43b4-8d15-67a475b8b9a2

     (1)僞列表示節點深度(能夠不寫)

select level , empno, ename, mgr

from emp

connect by prior empno=mgr 

start with mgr is null  (根節點)

order by empno

/

15

a43d43dc-1b16-462e-b80f-08330b7b636d

c09837f5-1c12-40a3-a301-8ba34fa2c284

16:

931a36a6-d56b-4446-841f-d2eda018893a

17:

e1a19b0e-b723-42a9-b9c3-fcc9f9e967ac

18:

b7c2203b-74c2-45da-ab82-987feaa86985

19:

44b67e7b-f559-4600-b8ff-f1f5c6b4852b

相關文章
相關標籤/搜索