SQL PLUS容易遺忘之命令

來源:互聯網
上載者:User

sqlplus 使用者名稱/密碼@為串連oracle所添加的本網服務的名字。
C:\Users\haiyang>sqlplus scott/tiger@myoracle9i

SQL*Plus: Release 11.2.0.1.0 Production on 星期日 2月 20 22:12:15 2011

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


串連到:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production

SQL>

desc tablename 來顯示表的結構。

SQL> desc emp;
 名稱                                      是否為空白? 類型
 ----------------------------------------- -------- ----------------------------
 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)

SET LINE[SIZE] {80| n},其中n為自然數,80為預設值。該命令是將顯示屏的顯示輸出置為n個字元那麼寬,80個字元為此命令的預設顯示寬度。
set pagesize 120用來設定每頁輸入的行數。
col hiredate for a15用來指定用15個字元的長度來顯示列hiredate.

L(LIST)命令。該命令用來顯示SQL緩衝區中的內容。 
SQL> l
  1  select *
  2* from emp
SQL>

 n  text命令來修改出錯的部分,其中n為在SQL緩衝區中的SQL語句
的行號,text為替代出錯部分的SQL語句。
SQL> l
  1  select *
  2* from emp
SQL> 2 from dept
SQL> l
  1  select *
  2* from dept
SQL>

命令‘/’(RUN)來重新運行在SQL緩衝區中的SQL語句。
SQL> /

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

n命令設定當前行,a(append)命令在當前行新增內容。
SQL> l
  1  select ename
  2  from emp
  3* order by sal desc
SQL> 1
  1* select ename
SQL> a ,deptno,sal
  1* select ename,deptno,sal
SQL> l
  1  select ename,deptno,sal
  2  from emp
  3* order by sal desc
SQL> /

ENAME          DEPTNO        SAL
---------- ---------- ----------
KING               10       5000
SCOTT              20       3000
FORD               20       3000
JONES              20       2975
BLAKE              30       2850
CLARK              10       2450
ALLEN              30       1600
TURNER             30       1500
MILLER             10       1300
WARD               30       1250
MARTIN             30       1250
ADAMS              20       1100
JAMES              30        950
SMITH              20        800

已選擇14行。


使用0 text在第一行之前插入一行資料。也可以使用 當前最大的行數+1 text來增加一行。 
SQL> l
  1  select ename,deptno,sal
  2  from emp
  3* order by sal desc
SQL> 0 create table emp_temp as
SQL> l
  1  create table emp_temp as
  2  select ename,deptno,sal
  3  from emp
  4* order by sal desc
SQL> /

表已建立。

SQL>

使用del n刪除第n行。如果沒有指定n就是刪除掉當前行。也可以使用del m n命令刪除從m行到n行的所有內容。

SQL> l
  1  create table emp_temp as
  2  select ename,deptno,sal
  3  from emp
  4* order by sal desc
SQL> del 1
SQL> l
  1  select ename,deptno,sal
  2  from emp
  3* order by sal desc
SQL> del
SQL> l
  1  select ename,deptno,sal
  2* from emp
SQL>

SQL> l
  1  create table emp_temp as
  2  select ename,deptno,sal
  3  from emp
  4* order by sal
SQL> del 2 4
SQL> l
  1* create table emp_temp as
SQL>

使用C[HANGE]/原文/新的本文命令來修改SQL緩衝區中的語句。該命令是在當前行中用“新的本文”替代“原文”。
注意是c /oldtext/newtext,/oldtext和/newtext中間沒有空格。如果在下例中使用c /dept /emp,會出現”SP2-0023: 未找到字串“的錯誤。

SQL> select ename, deptno, sal
  2  from dept
  3  where sal > 1000
  4  order by sal desc;
where sal > 1000
      *
第 3 行出現錯誤:
ORA-00904: "SAL": 無效的標識符


SQL> l
  1  select ename, deptno, sal
  2  from dept
  3  where sal > 1000
  4* order by sal desc
SQL> 2
  2* from dept
SQL> c /dept/emp
  2* from emp
SQL> l
  1  select ename, deptno, sal
  2  from emp
  3  where sal > 1000
  4* order by sal desc
SQL> /

ENAME          DEPTNO        SAL
---------- ---------- ----------
KING               10       5000
SCOTT              20       3000
FORD               20       3000
JONES              20       2975
BLAKE              30       2850
CLARK              10       2450
ALLEN              30       1600
TURNER             30       1500
MILLER             10       1300
WARD               30       1250
MARTIN             30       1250
ADAMS              20       1100

已選擇12行。

SQL>

SAVE命令把SQL緩衝區的內容存入指定的檔案,這個檔案叫指令檔。save命令會建立指定的檔案,但是要求路徑已經存在,否則無法建立儲存檔案。
SQL*PLUS的命令不被存入SQL緩衝區,SQL緩衝區中只儲存上一個sql。SQL緩衝區只能儲存一個SQL語句。 
產生了指令檔之後,可以使用SQL*PLUS的GET命令將這個指令檔裝入SQL緩衝區。

SQL> l
  1  select ename, deptno, sal
  2  from emp
  3  where sal > 1000
  4* order by sal desc
SQL> save d:\sql_test\sample
SP2-0110: 無法建立儲存檔案 "d:\sql_test\sample.sql"
SQL> save d:\oracle_sql_study\sample
已建立 file d:\oracle_sql_study\sample.sql
SQL> select distinct deptno from emp;

    DEPTNO
----------
        10
        20
        30

SQL> l
  1* select distinct deptno from emp
SQL> get d:\oracle_sql_study\sample.sql
  1  select ename, deptno, sal
  2  from emp
  3  where sal > 1000
  4* order by sal desc
SQL> /

ENAME          DEPTNO        SAL
---------- ---------- ----------
KING               10       5000
SCOTT              20       3000
FORD               20       3000
JONES              20       2975
BLAKE              30       2850
CLARK              10       2450
ALLEN              30       1600
TURNER             30       1500
MILLER             10       1300
WARD               30       1250
MARTIN             30       1250
ADAMS              20       1100

已選擇12行。

SQL>

可以使用SQL*PLUS的ed[it]命令來直接編輯d:\oracle_sql_study\sample.sql。

可以使用SQL*PLUS的@ 或START命令來直接運行指令檔D:\SQL\SAMPLE.sql。 
@ 或START命令是把指定指令檔的內容裝入SQL緩衝區中並運行。

SQL> @d:\oracle_sql_study\sample.sql

ENAME          DEPTNO        SAL
---------- ---------- ----------
ALLEN              30       1600
WARD               30       1250
JONES              20       2975
MARTIN             30       1250
BLAKE              30       2850
CLARK              10       2450
SCOTT              20       3000
KING               10       5000
TURNER             30       1500
ADAMS              20       1100
FORD               20       3000
MILLER             10       1300

已選擇12行。

SQL>


SPOOL D:\SQL\OUTPUT中SPOOL之後為檔案名稱,該命令的意思是在該命令之後屏
所顯示的一切都要存到D:\SQL目錄下的OUTPUT檔案中。只有當輸入SPOOL OFF之
才能看到OUTPUT檔案中的內容。如果您輸入SPOOL OUT表示其內容將送到印表機。

spool命令會建立指定的檔案,但是要求路徑已經存在,否則無法建立spool檔案。

SQL> spool d:\sql_test\output
SP2-0606: 無法建立 SPOOL 檔案 "d:\sql_test\output.LST"
SQL> spool d:\oracle_sql_study\output
SQL> l
  1  select ename, deptno, sal
  2  from emp
  3* where sal > 1000
SQL> /

ENAME          DEPTNO        SAL
---------- ---------- ----------
ALLEN              30       1600
WARD               30       1250
JONES              20       2975
MARTIN             30       1250
BLAKE              30       2850
CLARK              10       2450
SCOTT              20       3000
KING               10       5000
TURNER             30       1500
ADAMS              20       1100
FORD               20       3000
MILLER             10       1300

已選擇12行。

SQL> spool off
SQL>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.