Sql*plus是oracle提供的一個工具程序,既可以在oracle服務器使用,也可以在oracle客戶端使用。在windows下分兩種,sqlplus.exe是命令行程序,sqlplusw.exe是窗體程序,通常我們在開始菜單中啟動的是後者,兩者的功能是一致的。
Sql*plus是一個最常用的工具,具有很強的功能,主要有:
1. 數據庫的維護,如啟動,關閉等,這一般在服務器上操作。
2. 執行sql語句執行pl/sql。
3. 執行sql腳本。
4. 數據的導出,報表。
5. 應用程序開發、測試sql/plsql。
6. 生成新的sql腳本。
7. 供應用程序調用,如安裝程序中進行腳本的安裝。
2 dual表
dual是一張系統表,同時也被定義成了public同義詞。它只有一個字段和一條記錄。該表本身的結構和數據沒有什麼意義,主要是借助該表進行其它操作。如:
select sysdate from dual; --獲取函數值
select 21+15*3 from dual; --計算表達式的值
說明:不要對dual表進行ddl與dml操作,只進行查詢操作。
3 sql*plus使用
3.1 啟動sql*plus
1. 不帶參數啟動
啟動sqlplusw.exe程序,會彈出登陸框,讓輸入用戶名、密碼和連接字符串,在用戶名中輸入“/nolog”,表示先進入sql>提示符,先不連接數據庫,下面可以利用connect命令連接數據庫。啟動sqlplus.exe程序,會提示輸入用戶名與密碼。如果用戶名輸入
2. 帶參數啟動
下面列舉一些最常見的方式,還有很多可選參數。
1) 不連接數據庫
sqlplus /nolog
2) 連接數據庫
sqlplus username/password
3) 使用net8連接字符串連接數據庫
sqlplus username/password@connstr
4) 連接後執行filename指定的sql腳本,sql腳本中是sql命令和sql*plus的設置命令
sqlplus username/password[@connstr] @filename
3.2 sql*plus的命令
3.2.1 幫助命令
1. help命令
格式:help 命令名 ,用於知道某個具體命令的幫助信息。
如:help connect
2. describe命令
用戶查看表的結構;獲取函數,存儲過程和包的描述。這是非常有用和常用的一個命令。
如:desc user_tables
說明:在sql*plus中,所有命令都可以用前面的四個字母作為整個命令。
3.2.2 編輯命令
sql*plus會將上一次執行過的sql命令(包括sql語句和pl/sql語句,包括一行或多行)保存到緩存區中,可以對緩存區中信息進行編輯。
編輯後可以通過 “/ ”命令執行修改後的緩存區中的命令,如果不休改,則是執行原有命令。
1. list [n] 命令
顯示上一條命令中的第n行,如果不指定n,則顯示上一命令的所有行,這樣當前行就是最後一行。其它操作會對當前行進行操作,所以其它操作需要先執行list命令。
如:
begin
insert into test values(1);
end;
/
list
2. change命令
編輯當前行的內容,先用list命令指定當前行。語法為:
change /被修改字串/修改後的串
如:
list 2
change /(1)/(20)
3. 增加新行
在第一行插入一行,方法為:輸入0,在0後輸入文本。如:
0 insert into test values(2);
在當前行後插入一行,方法為:輸入input(或i),回車,輸入新行,再回車,會提示再輸入新行,如不想輸入,輸入點號,回車。如:
4. 刪除行
del --刪除緩存區當前行,執行前先用list命令指定當前行
del n 刪除緩存區指定的行
5. 使用操作系統編輯器編輯命令
在 sql*plus中輸入edit命令,會自動打開系統的缺省的文本編輯器(windows下為notepad),緩存區中內容被裝到文本編輯器中,這時可以對其中的內容進行編輯(這時sql*plus處於等待狀態),修改完畢後,保存文件後。被修改的內容就會被寫入緩存區。這對於修改錯誤命令很方便。
6. save命令
格式:save 文件名 [replace | append]
save命令的作用是將緩存區中內容保存到指定文件中。如果指定的文件不存在,將會創建,但如果文件目錄不存在,將會失敗。如果指定文件名的文件已存在,不指定replace或append參數將會失敗。指定replace表示將覆蓋原文件內容,指定append表示將緩存區內容加到文件後。
7. get命令
格式:get 文件名
get命令的作用是將指定文件的內容加載到緩存區中,以供編輯或執行。
3.2.3 spool命令
sql> spool 文件名
執行該命令後,如果指定的文件不存在,則會按指定的文件名創建一個空文本文件,如果目錄不存在,會失敗。如果指定的文件已存在,則文件內容將會被清空。
執行上述命令後,此命令後的所有輸出(包括命令、輸出提示信息、錯誤信息等)都會被寫入指定的文件。需要說明的時,並不是每輸出一行信息,就會立即寫入文件,有個緩存過程。
Sql>spool off
上述命令就是停止存儲,將前面所有輸出立即寫入文件。
Sql>spool out
除完成spool off命令的功能外,還打印輸出的信息。
說明:spool off/out命令必須與spool命令一一對應。
Spool命令的用途主要有如下:
1) 導出數據