天天看點

Oracle筆記(二) SQLPlus指令

對于Oracle資料庫操作主要使用的是指令行方式,而所有的指令都使用sqlplus完成,對于sqlplus有兩種形式。

  • 一種是dos風格的sqlplus:sqlplus.exe;
  • 另一種是windows風格的sqlplus:sqlplusw.exe;

在Oracle 10g之中主要使用的是sqlplusw指令,因為其可以進行一些顯示資料的調整。

Oracle筆記(二) SQLPlus指令
Oracle筆記(二) SQLPlus指令

此時會找到預設的已經可以使用的資料庫執行個體。

範例:輸入查詢指令

SELECT * FROM emp;      
Oracle筆記(二) SQLPlus指令

此時的資料已經可以正常的顯示,但是依然會存在資料折行的問題,因為這個是預設的每行的資料大小,而現在可以通過兩個指令進行調整:

  • 設定每行顯示的記錄長度:SET LINESIZE 300;
  • 設定每頁顯示的記錄長度:SET PAGESIZE 30;
Oracle筆記(二) SQLPlus指令

以後這兩個指令統一被稱為格式化指令,但是這些格式化指令在sqlplus下的設定并不是很明顯。

但是sqlplusw雖然顯示上友善一些,可是對于指令的編輯上卻不是很友善,如正常的操作,指令寫錯了,則肯定使用方向鍵移到錯誤的位置上進行修改,但是在sqlplusw之中,方向鍵隻能控制螢幕的移動,是以這個指令根本就不适合于編輯,是以在sqlplusw之中提供了ed和@指令,可以進行記事本的調用和執行;

  • 使用ed,調用記事本程式:ed a;

      此時會提示使用者說,現在找不到“a.sql”的檔案,詢問是否建立,選擇“是”,但是使用ed打開記事本之後 ,Oracle中的sqlplusw視窗會進入到阻塞狀态,無法使用。

  • 使用@執行程式:@a;

      但是在windows之中,由于提供了許多友善的編輯軟體,是以一般會在外部編輯程式,例如,現在在D盤上建立一個demo.txt的檔案,裡面儲存程式代碼。

      這個時候要讀取在硬碟上的檔案,則必須寫上完整的路徑:@D:\demo.txt,而且如果現在這個檔案的字尾是“*.sql”的話,則不用輸入檔案字尾(demo.sql),輸入:@d:\demo,或者更省事直接輸入:@d:demo。

在一個資料庫之中,會有許多的使用者(現在已知的是四個使用者),這每一個使用者下都會有多張自己的資料表,是以要想檢視所有的資料表,則可以使用如下的指令:

SELECT * FROM tab;      

而且由于使用者衆多,是以如果要想知道目前的登入使用者,則可以使用:SHOW USER; 指令完成。

而且在sqlplusw之中也可以直接進行使用者的登入切換,使用如下的文法完成:

CONN 使用者名/密碼 [AS SYSDBA];      

使用sys使用者登入:CONN sys/change_on_install AS SYSDBA;

但是,一旦使用了sys連接配接之後,則無法直接查詢emp表資料。

對于每一張表,都有其屬于的使用者,是以一張表的完整名稱是“使用者名.表名稱”或者說是“模式名.表名稱”,是以不同的使用者要想通路其他使用者的表,則應該加上使用者名,即現在的通路名稱:

SELECT * FROM scott.emp;      

一旦使用了超級管理者登入的話,可以通過指令手工的控制資料庫執行個體的打開和關閉;

  • 關閉資料庫執行個體:SHUTDOWN IMMEDIATE;
    • 一旦關閉之後使用者無法直接連接配接sqlplusw指令,此時可以先使用“/nolog”登入,之後使用管理者登入;
SQL> conn sys/sys as sysdba;
已連接配接。
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL>       
Oracle筆記(二) SQLPlus指令
  •  啟動資料庫執行個體:STARTUP;
Oracle筆記(二) SQLPlus指令

另外,sqlplusw指令視窗也可以調用本機的操作指令,使用“host”作為字首。

HOST COPY d:\demo.sql d:\hello.txt      

以上指令必須掌握,以後肯定會使用到。