oracle學習 第三章 常用的SQL*PLUS命令 ——02

來源:互聯網
上載者:User

標籤:

今天接著昨天的RUN命令繼續講。

3.5 n(設定當前行)命令和A(PPEND)(附加)命令

設想,你輸入了例3-10的查詢語句

例 3-10

SQL> SELECT ename  2  FROM emp;

例 3-10 結果


看到以上輸出時,您發現在SELECT子句中忘了job,sal。這時您又如何修改您的SELECT子句呢?首先您應該使用SQL*PLUS的L(LIST)命令來顯示SQL緩衝中的內容。

例 3-11

SQL> L

例 3-11 結果

在例3-11顯示的結果中,2後面的“*”表示第二行為當前行。從例3-11顯示的結果發現 SELECT ename是SQL緩衝區中的第一行。為了在ename之後添加“,job,sal”您應該把第一行設定為當前行。於是輸入1,如例3-12,該命令把第一行置為當前行。

例 3-12

SQL> 1

例 3-12 結果


例3-12顯示的結果表明已成功將SQL緩衝區第一行設定為當前行。現在就可以使用例3-13的a命令(附加命令)把“,job,sal”添加到SELECT ename之後。

例 3-13

SQL> a,job,sal

例 3-13 結果


此時您應該再使用例3-14的L命令,來檢查您所做的修改是否正確

例 3-14

SQL> L

例 3-14 結果


看到了例3-14顯示的結果,您發現修改後的查詢語句正是您所希望的,於是您再一次輸入執行命令(/或R)來重新運行SQL緩衝區中的查詢語句。這次您就可以得到您所需要的結果了,如例3-15

例 3-15

SQL> R

例 3-15 結果


這與我們輸入SQL語句後立即執行所得的結果完全相同。

用n來指定第n行為當前行,這裡的n為自然數。那麼如果你想在第一行之前插入一行資料,又該怎麼辦呢?可以使用0 text在第一行之前插入一行資料。

如果發現SQL緩衝區中某行的內容需要去掉,又該怎麼處理呢?

3.6 del命令

可以使用del n刪除第n行。如果沒有指定n 就是刪除掉當前行。也可以使用del m,n命令刪除從m行到n行的所有內容。為了示範如何使用這個SQL*PLUS命令,您可以重新輸入與例3-5幾乎一樣的如例3-16的SQL語句。

例 3-16

SQL> SELECT empno,ename,job,sal  2  FROM emp  3  WHERE sal >= 1500  4  ORDER BY job,sal DESC;
為了準確的確定所要刪除的行號,您可以再次使用例3-17的SQL*PLUS命令。

例 3-17

SQL> L

例 3-17 結果


假設emp表是一個很大的表,為了提高查詢的效率,您決定去掉ORDER BY 子句,可以使用例 3-18的SQL*PLUS命令來完成這一決定。

例 3-18

SQL> del 4

現在還是應該使用例3-19的SQL*PLUS的L命令來檢查一下您所做的操作是否成功。

例 3-19

SQL> L

例 3-19 結果


例3-19顯示的結果表名已經成功的刪除了SQL緩衝區中包含ORDE BY 子句的第四行。此時,您可以再次使用例3-20的SQL*PLUS的“/”命令運行該句。

例 3-20

SQL> /

例 3-20 結果


很顯然例3-20顯示的結果是無序的,其易讀性也下降了。但是有時為了系統的整體效率,犧牲一些查詢結果的易讀性也是在所難免。這也就像社會上常說的“犧牲小家為大家”一樣。

在這裡我們並沒有給出del m,n命令和del 命令的例子,因為他們的用法與del m命令大同小異。如果讀者甘心去可以自己試一試就行。

除了以上所介紹的修改和刪除命令之外,還有沒有其他的SQL*PLUS的命令來完成相關的操作呢?


3.7 C(HANGE)命令

也可以使用C(HANGE)/原文/新的命令來修改SQL緩衝區中的語句。是在當前行中用“新的本文”替代“原文”。

為了示範該命令的用法,您可以重新輸入與例3-5完全相同的SQL語句,如例3-21.

例 3-21

SQL> SELECT empno,ename,job,sal  2  FROM dept  3  WHERE sal >= 1500  4  ORDER BY job,sal DESC;

例 3-21 結果


現在試著用剛剛學過的C[HANGE]命令將SQL緩衝區中第二行的dept改為emp,使用了如例2-22的SQL*PLUS命令。

例 3-22

SQL> c /dept/emp

例 3-22 結果


例3-22顯示的結果是您感到意外。因為您有驚人的記憶力,所以堅信您所輸入的SQL*PLUS命令沒有任何錯誤。實際上例3-22的SQL*PLUS命令是完全正確的,只是當前行並不是第二行,即不包含dept,所以才造成了“未找到字串”的錯誤。現在您可以先輸入例3-23的SQL*PLUS命令將SQL緩衝區的中第二行設定為當前行。

例 3-23

SQL> 2

例 3-23 結果


之後可以重新輸入與例2-22完全相同,如例2-24的SQL*PLUS命令。

例 3-24

SQL> c /dept/emp

例 3-24 結果


例3-24顯示的結果表名您已經成功地將SQL緩衝區中第二行的dept修改為emp。但為了謹慎起見,您還是應該使用例3-25的L命令來驗證一下。

例 3-25 

SQL> L

例 3-25 結果


如果這時您再使用例3-26 的“/”命令,您就會得到與例3-9完全相同的結果。

例 3-26

SQL> R

例 3-26 結果


如果您想輸出的記過只按工資(sal)由大小排序,您首先應該使用例3-27的SQL*PLUS命令將SQL緩衝區中第四行設定為當前行。

例 3-27

SQL> 4

例 3-27 結果


之後就可以使用例3-28 的C命令將job從SQL緩衝區第四行中刪去。

例 3-28

SQL> C /job,/

例 3-28 結果


現在應該再使用例 3-29的L命令來驗證一下修改是否成功了。

例 3-29

SQL> L

例 3-29 結果


最後您可以使用例3-30的/命令來運行緩衝區中的語句。

例 3-30

SQL> /

例 3-30 結果


從本節的討論可以看出,在某些情況下使用C命令進行修改或者刪除操作可能比使用其他的命令更方便。

3.8 如何產生指令碼

為了示範乘產生指令檔,可以重新輸入例3-31的查詢語句。

例 3-31

SQL> SELECT empno,ename,job,sal  2  FROM emp  3  WHERE sal >= 1500  4  ORDER BY job,sal DESC;

例 3-31 結果


現在您可以輸入如例 3-32的SQL*PLUS的命令,將SQL緩衝區的語句存入D:\SQL\SAMPLE.sql檔案中,該檔案也叫指令檔。

注意:在執行SQL×PLUS命令之前,您要先是用系統命令來建立D:\SQL目錄(問價夾),意思就是SQL*PLUS命令不會自動為您建立不存在的檔案夾。

例 3-32

SQL> SAVE D:\SQL\SAMPLE

例 3-32 結果


SAVE命令把SQL緩衝區的內容存入指定的檔案,這個檔案叫做指令檔。此時如果您使用本文編輯器開啟檔案D:\SQL\SAMPLE.sql,您會在檔案中看到如下內容

例 3-33


測試剮實行SQL×PLUS的L命令,您將會看到您以前輸入的SQL語句不是SQL*PLUS的命令SAVE D:\SQL\SAMPLE。這說明,SQL*PLUS的命令不被存入SQL緩衝區。請看例3-34.

例 3-34

SQL> L

例 3-34 結果

現在如果您輸入例3-35的SQL語句,會發現在SQL緩衝區中會有哪些變化呢?

例 3-35

SQL> SELECT *  2  FROM dept;

例 3-35 結果


之後再發例3-36的SQL*PLUS的L命令,您會發現SQL緩衝區寸的內容已經變為剛才輸入的語句。

例 3-36 

SQL> L

例 3-36 結果


以上的例子也證明 了SQl緩衝區只能儲存一個SQL語句。

------------------------------------------分割線---------

今天是周日,多學習一些。^_^

-----------------------------------------------------------

上一篇:oracle學習 第三章 常用的SQL*PLUS命令 ——01

下一篇:

oracle學習 第三章 常用的SQL*PLUS命令 ——02

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.