SQL PLUS容易遗忘之命令

来源:互联网 发布:福州锋芒网络 编辑:程序博客网 时间:2024/06/05 10:57

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>

原创粉丝点击