oracle 學習入門,記錄學習過程中的知識點。
1. 位圖索引:應用於列中值有限量時,例如boolean型變量。 對於使用位圖索引列鎖定時,oracle會鎖定所有值爲此的行。
2. 使用變量比使用常量更節省資源。因爲使用常量,oracle每次在執行的時候,都要編譯,而使用變量,編譯一次後,存在庫緩存中,下次直接調用。而且使用常量更容易被“SQL注入”。
3.數據補全的sql: 表格中必須有4行數據,但是查詢結果只有一條數據,其他行以空數據填充:
select wonum,devicedescription,x.pow_ZXQK,rownum myno,x.*,y.l from
(SELECT t.*, lo.pow_zxqk, ROWNUM RN FROM wolockout t left join WOTAGLOCK lo on t.lockoutid=lo.lockoutid
WHERE ROWNUM < 6 and lck02='DYP1' and t.wonum=lo.wonum and t.wonum='1044' and t.wonum=lo.wonum order by t.lockoutid asc) x,(SELECT LEVEL L FROM DUAL CONNECT BY LEVEL <= 5) Y where X.RN(+) = Y.L
對於where X.RN(+) = Y.L 這一句比較迷惑,不懂什麼意思。。。。 將Y.L 替換爲具體數字也會出錯。
4. rownum的使用:ROWNUM是對結果集加的一個僞列,即先查到結果集之後再加上去的一個列 (強調:先要有結果集)。簡單的說 rownum 是對符合條件結果的序列號。它總是從1開始排起的。所以你選出的結果不可能沒有1,而有其他大於1的值。 假設某個表 t1(c1) 有 20 條記錄如果用 select rownum,c1 from t1 where rownum < 10, 只要是用小於號,查出來的結果很容易地與一般理解在概念上能達成一致,應該不會有任何疑問的。可如果用 select rownum,c1 from t1 where rownum > 10 (如果寫下這樣的查詢語句,這時候在您的頭腦中應該是想得到表中後面10條記錄),你就會發現,顯示出來的結果要讓您失望了,會是一個空集。