Oracle學習筆記之二

uuxa發表於2007-02-04
18.Oracle中的索引分為兩大類:B-樹索引和點陣圖索引。

19.Order by 中的列必須是select 所選中的,如:
select id,name from sometab order by sex 這樣是不行的
正確的是:select id,name from sometab order by id
或select id,name from sometab order by name
[@more@]

20.在某個表(A)上所建立的觸發器,如果這個觸發器是在該表被修改時觸發,那麼這個觸發器內不能包含對錶A本身的查詢。如果資料庫的其它事務一樣,正在對一個表進行修改的同時,不能再對這個表進行查詢。

21.SQL*Plus中一些常用的命令及使用技巧
SQL> show user;顯示當前使用者(在SQL*Plus工具中專用的,更好的方式是使用SQL> select user from dual;語句進行檢視當前使用者,其中dual表是每個SQL*Plus使用者都可以使用的Oracle表,這裡真正重要的是要知道它只含有一行資料。);
SQL> set pagelize 20;設定每頁顯示行數為20;
SQL> set linesize 100;設定每行顯示的字元數為100;(如果嫌每次設定麻煩,可以將這兩條語句儲存在C:oracleora92sqlplusadminglogin.sql中,每次啟動是Oracle會自動執行glogin.sql檔案,相當於初始化)
SQL> show all;檢視當前的環境設定;
SQL> spool file_name;將顯示的內容輸出到指定檔案,例如spool c:spool.txt;
SQL> spool off;關閉spool輸出,只有關閉spool輸出,才會在輸出檔案中看到輸出的內容;
SQL> /;重新執行上一次命令;
SQL> set timing on/off;顯示、關閉每個sql語句花費的執行時間;
SQL> select * from tab;檢視當前使用者下所有表;
SQL> start file_name;或SQL> @ file_name;執行一個SQL指令碼檔案,我們可以將多條sql語句儲存在一個文字檔案中,這樣當要執行這個檔案中的所有的sql語句時,用上面的任一命令即可,這類似於dos中的批處理;
SQL> desc table_name;顯示錶的結構;

22.超級使用者密碼忘記的處理方式
1)、在開始執行中輸入sqlplusw /nolog登陸,即不啟動服務登陸。
2)、利用$ net start OracleServiceCHSTONE和$ net start OracleOraHome92TNSListener啟動兩個服務。
3)、以超級使用者身份連線資料庫 SQL> connect / as sysdba;
4)、修改system的密碼:SQL> alter user system identified by “password”。

23.nvl(expr1,expr2)函式:它的做作是當欄位expr1的值為null時,可以轉換成指定的返回值,如:select no,nvl(name,'No_Signed'),sex from UserInfo

24.nvl2(expr1,expr2,expr3):當expr1為null時,返回expr2,當expr1不為null時,返回expr3

25.以上SQL語句對錶都加上了行級鎖,
確認完成後, 必須加上事物處理結束的命令 COMMIT 才能正式生效,
否則改變不一定寫入資料庫裡.
如果想撤回這些操作, 可以用命令 ROLLBACK 復原.

26.在Select中的(+)表示:有(+)號的欄位位置自動補空值

27.每個表都有一個隱含的欄位ROWID, 它標記著記錄的唯一性

28.Oracle中的序列問題:Oracle匯入匯出資料時,如果是使用SQL指令碼Insert進和記錄,那麼對應表的序列是不會自己增加的,解決辦法:1.在Insert完記錄後,重新建立序列並將它的初始值指向記錄數的下一個值,如:序列對應的欄位是ID,那麼在insert完所有記錄後,應將序列的初始值設定成ID值的最大值加1。2.如果不自己重建序列,那麼就得在插入完記錄後,將序列動態的設定成所需的值,可以這樣實現:select 序列名.NextVal from dual;迴圈執行所需次數,每次序列的初始值加1。

29.trunc函式可以擷取時期,如:Select trunc(sysdate) from dual 那麼返回的只是‘年月日’格式的時間。

30.greatest(x,y,...)函式,返回引數列表中的最大值。least(x,y,......)函式,返回列表引數中的最小值。

31.NULLIF(a,b)如果A等於B返回NULL,如果不等於返回A。

32.外連線查詢:SELECT T1.COL,T2.COL FROM WHERE T1.COL(+)=T2.COL;左外連線所有T2的T1資訊。
SELECT T1.COL,T2.COL FROM WHERE T1.COL=T2.COL(+);右外連線所有T1的T2資訊。
為了看到與連線條件不匹配的資料,就必須得用外連線。

33.自連線:透過表的別名來建立虛擬邏輯表,進行自連線查詢。
select worker.last_name || 'work for' || manager.last_name
from employees worker,employees manager
where worker.manager_id=manager.employee_id;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7416120/viewspace-897176/,如需轉載,請註明出處,否則將追究法律責任。

相關文章