Chinaunix首页 | 论坛 | 博客
  • 博客访问: 721470
  • 博文数量: 94
  • 博客积分: 1937
  • 博客等级: 上尉
  • 技术积分: 1618
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-04 18:46
个人简介

专注数据库开发管理

文章分类

全部博文(94)

文章存档

2015年(1)

2014年(2)

2013年(19)

2012年(32)

2011年(10)

2010年(30)

分类: 数据库开发技术

2012-10-26 16:00:22

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命令创建的持久变量一样。当用&&命令引用这个变量时,不会每次遇到该变量就提示用户键入值,而只是在第一次遇到时提示一次。
 
阅读(6518) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~