您的位置:首页 > 数据库

SQL PLUS容易遗忘之命令

2012-07-20 13:18 183 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql oracle table 脚本 output c