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>