1、启动sqlplus:
sqlplus [username]/[password][@server]
例:
C:\>sqlplus
C:\>sqlplus /nolog
2、连接命令
connect [username]/[password];
DISCONNECT //断开连接不退出
password
exit/quit //断开并退出sqlplus
例:
SQL> conn
Connected.
SQL> PASSWORD //相当于alter USER SYSTEM IDENTIFIED BY SYS;
Changing password for SYSTEM
Old password: //输入原密码system
New password: //输入新密码sys
Retype new password:
Password changed
SQL> conn
Connected.
SQL> disconn //断开连接
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
SQL> quit //退出
C:\>
3、编辑命令
List:列出缓冲区的sql命令
Append:在缓冲区当前行添加内容
Change 字符1 字符2 :改变缓冲区的字符
input:在当前行后增加一行
n:把第n行设定为当前行
Edit:编辑缓冲区
run /:运行缓冲区的命令
-- (a)ppend 添加文本到缓冲区当前行尾
sql> select object_id from t where rownum<=5;
OBJECT_ID
----------
20
46
28
15
29
-- 前一条命令后加order by 1 (注:a后面跟2个空格)
sql> a order by 1;
1* select object_id from t where rownum<=5 order by 1
sql> r
1* select object_id from t where rownum<=5 order by 1
OBJECT_ID
----------
15
20
28
29
46
-- (c)hange/old/new 在当前行用新的文本替换旧的文本 c/*/tname
-- 将上条命令中的object_id替换成owner
sql> c/object_id/owner
1* select owner from t where rownum<=5 order by 1
-- (c)hange/text 从当前行删除文本 c/tab
-- 删除order by 1
sql> c/order by 1
1* select owner from t where rownum<=5
sql> select owner
2 from t
3 where rownum=1
4 order by 1;
OWNER
------------------------------
SYS
-- del 删除当前行
-- 当前行为第4行
sql> del
sql> l
1 select owner
2 from t
3* where rownum=1
-- del n 删除第n行
-- 删除第2行
sql> del 2
sql> l
1 select owner
2* where rownum=1
-- (i)nput 文本 在当前行之后添加一行
-- 每1行后增加order by 1
(l)ist 显示缓冲区中所有行
(l)ist n 显示缓冲区中第 n 行,设置n行为当前行,*标志
(l)ist m n 显示缓冲区中 m 到 n 行
(r)un 执行当前缓冲区的命令
/ 执行当前缓冲区的命令
run与/区别:run显示buffer的命令,/则不然。
@文件名 运行调入内存的sql文件
START 等同于@
@@文件名 在.sql文件中调用令一个.sql文件时使用,嵌套调用
设C盘有文件a.sql(内容为:@@b.sql) 和文件b.sql(内容为:SELECT object_id FROM t WHERE ROWNUM<=2;),则:
SQL> start c:\a.sql;
OBJECT_ID
----------
2
2
SQL> edit s<回车> 如果当前目录下不存在s.sql文件,则系统自动生成s.sql文件,
在其中输入"select * from tab;",存盘退出。
SQL> @s<回车>
系统会自动查询当前用户下的所有表、视图、同义词。
start 文件名 运行调入内存的sql文件
exit 退出SQL*PLUS
edit 打开默认编辑器,Windows系统中默认是notepad.exe,把缓冲区中最后一条SQL语句调入afiedt.buf文件中进行编辑
edit 文件名 把当前目录中指定的.sql文件调入编辑器进行编辑
clear screen 清空当前屏幕显示
//col(umn) 设置列名显示格式
SQL> col object_name format a10
SQL> select object_name from t where rownum<=2;
OBJECT_NAM
----------
ICOL$
I_USER1
SQL> col object_id format 999.90
SQL> select object_id from t where rownum<=2;
OBJECT_ID
---------
2.00
2.00
host //返回命令提示符
SQL> host
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users>exit //exit命令返回SQL*PLUS
SQL>
$ //windows下与host命令一致
SQL> $dir //等同于host dir
驱动器 C 中的卷没有标签。
卷的序列号是 B457-9723
C:\Users 的目录
2012/10/25 13:49
.
2012/10/25 13:49 ..
! //unix下与host命令一致
4、文件操作命令:
save:把sql缓冲区保存为文件
get:与save相反
save 文件名 将缓冲区的命令以文件方式存盘,缺省文件扩展名为.sql
get 文件名 调入存盘的sql文件
SQL> create table t(id int);
SQL> insert into t values(1);
SQL> commit;
Commit complete.
SQL> save ab.sql
Created file ab.sql
SQL> get ab.sql
1* commit
// abc.sql只有commit,说明buffer只保存了最后一条命令。
start @:运行保存的sql文件
@@:如果两个脚本在同一个文件夹内的话,可以用@@a2.spl引用
Edit:编辑sql脚本,如Edit c:/a.spl
spool:把sqlplus的屏幕内容存放到输出文件
如:spool filename [append][create][replace]
-- 用(spool filename.txt/spool off)命令保存SQL语句块
SQL> SPOOL 'c:\abc.sql'
SQL> SELECT * FROM t;
SQL> INSERT INTO t VALUES(1);
SQL> COMMIT;
SQL> SPOOL OFF
-- spool 显示当前的"假脱机"状态
SQL> spool c:\c.txt
SQL> spool
currently spooling to c:\c.txt
SQL> spool off
SQL> spool
not spooling currently
// 换行句点表示终止命令不执行退出
sql> select owner from t
2 . -- 终止命令
sql> input -- 补充上一条命令
2 where rownum=1;
OWNER
------------------------------
SYS
sql> l -- 完整命令
1 select owner from t
2* where rownum=1
5、格式命令:
cloumn:控制列显示格式
column 列名 [heading] [formart] [justify]
其中heading指显示的列名,format指显示值的时候的格式,justify指显示对其格式(left|center|right)
格式有:An:字符串显示长度
9:数字列类型列禁止显示前导0
0:数字列强制显示前导0
$:在数字列前面显示美元符号
L:在数字列前面显示本地货币符号
.:指定数字类型列的小数点位置
,:指定数字列的千分隔符
其中,当column 字段名 表示显示此字段的col设置
ttitle:页头
btitle:页脚
break:如果在列上有重复的此字段行,则用空白表示这个字段 如:break on 字段名;
DESC 查看表结构
6、交互式命令:
&:引用替代变量,必须代这个符号,如果替代标量已经定义,那么就会直接使用去数据,如果没有定义
如果替代变量是字符串或者日期的时候,引用的时候必须用'&name',是数字则可以是&name
那么,就会临时定义替代变量,(该变量只有在当前语句中起作用)
&&:定义的变量在当前的sqlplus都起作用;
DEFINE :定义char的替代变量,如:DEFINE work=CLECK
sql> define a=1;
sql> select &a from dual;
old 1: select &a from dual
new 1: select 1 from dual
1
----------
1
sql> define a='abc'
sql> select &a from dual;
old 1: select &a from dual
new 1: select abc from dual
select abc from dual
*
ERROR at line 1:
ORA-00904: "ABC": invalid identifier
-- 不能使用双引号""
sql> define a="abcd"
sql> select &a from dual;
old 1: select &a from dual
new 1: select abcd from dual
select abcd from dual
*
ERROR at line 1:
ORA-00904: "ABCD": invalid IDENTIFIER
ACCEPT:定义char NUMBER DATE类型的替代变量,其中,可以输出提示信息,设定格式,隐藏用户输入
如:ACCEPT work PROMPT ‘清输入work信息:’
ACCEPT pwd HIDE #隐藏用户输入
PROMPT ‘输出提示信息’
PAUSE:暂停sql命令,按下回车会继续执行
VARIABLE:该命令在sqlplus中帮定变量,当在sql一句或者pl/sql快中引用帮定变量时必须在帮定的变量前面
加:,当直接给帮定的变量赋值时,需要使用EXECUTE命令,(类似于调用存储过程)
-- 赋值
SQL> var x number;
SQL> exec :x:=90
PL/SQL procedure successfully completed.
-- 显示变量值
SQL> select :x from dual;
:X
----------
90
SQL> print x
X
----------
90
7、环境变量
1) ARRAYSIZE 默认值15,该值越大,网络开销越低,但是占用内存会多,默认为15,比如传送50行,默认要4此,如果改为25行,那么之需要2次
2) AUTOCOMMIT:是否自动提交DML语句
3) COLSEP:列之间的分隔符
4) FEEDBACK:显示返回行数(OFF|1)
5) HEADING:是否显示列标题,默认值为ON
6) LINESIZE:设置行宽度
7) LONG:设置LONG,LOB的显示长度
8) PAGESIZE:每页行数
9) SERVEROUTPUT:控制服务端屏幕输出
10) TERMOUT:是否输出屏幕sql的结果
11) TIME:是否在sql提示符前显示系统时间
例:
SQL> set time on
17:13:37 SQL>
12) TIMING:是否显示sql语句执行的时间
13) sqlprompt "SQL> " 设置默认提示符,默认值就是"SQL> set "
例:
SQL> set sqlprompt "oracle> "
oracle>
14) PAUSE --默认为OFF,设置暂停,会使屏幕显示停止,等待按下ENTER键,再显示下一页
-- 系统环境变量
1) show recyclebin --显示数据库回收站中当前用户对象,里面是当前用户执行drop table删除的表
2 show all --查看所有68个系统变量值
3) show user --显示当前连接用户
4) show error --显示错误
@与@@区别
@c:\a.sql; //执行a.sql中的命令
@@ //在.sql文件中调用令一个.sql文件时使用,嵌套调用
&与&&区别
&用来创建一个临时变量,每当遇到这个临时变量时,都会提示你输入一个值。
&&用来创建一个持久变量,就像用用define命令或带new_vlaue字句的column命令创建的持久变量一样。当用&&命令引用这个变量时,不会每次遇到该变量就提示用户键入值,而只是在第一次遇到时提示一次。