服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > Oracle开发 > 查看文档

oracle中sqlplus的常用指令收集与技巧 (1)

【赛迪网-it技术报道】安装了oracle9i,进入sal*plus需要输入用户名、口令和主机标志符

system/manager

sys/change_on_intall

scott/tiger

internal/oracle

以上为初始密码

主机字符串空或者是@+你的服务名,在本地登陆不需要本地服务名。

下面就介绍一下一些常用的sql*plus命令:

首先查看当前使用的数据库实例:

select name from v$database;

切换两个数据库实例

在sqlplus里connect username/password@sid

或host set oracle_sid=sid

或cmd里set oracle_sid=sid

或修改注册表里oracle_sid项

◆1. 执行一个sql脚本文件

sql>start file_name

sql>@ file_name

我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。

◆2. 对当前的输入进行编辑

sql>edit

◆3. 重新运行上一次运行的sql语句

sql>/

◆4. 将显示的内容输出到指定文件

sql> spool file_name

在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。

◆5. 关闭spool输出

sql> spool off

只有关闭spool输出,才会在输出文件中看到输出的内容。

◆6.显示一个表的结构

sql> desc table_name

◆7. col命令:

主要格式化列的显示形式。

该命令有许多选项,具体如下:

col[umn] [{ column|expr} [ option ...]]

option选项可以是如下的子句:

ali[as] alias

cle[ar]

fold_a[fter]

fold_b[efore]

for[mat] format

hea[ding] text

jus[tify] {l[eft]|c[enter]|c[entre]|r[ight]}

like { expr|alias}

newl[ine]

new_v[alue] variable

nopri[nt]|pri[nt]

nul[l] text

old_v[alue] variable

on|off

wra[pped]|wor[d_wrapped]|tru[ncated]

1). 改变缺省的列标题

column column_name heading column_heading

for example:

sql>select * from dept;

deptno dname loc

---------- ---------------------------- ---------

10 accounting new york

sql>col loc heading location

sql>select * from dept;

deptno dname location

--------- ---------------------------- -----------

10 accounting new york

2). 将列名ename改为新列名employee name并将新列名放在两行上:

sql>select * from emp

department name salary

---------- ---------- ----------

10 aaa 11

sql> column ename heading ’employee|name’

sql>select * from emp

employee

department name salary

---------- ---------- ----------

10 aaa 11

note: the col heading turn into two lines from one line.

3). 改变列的显示长度:

for[mat] format

sql>select empno,ename,job from emp;

empno ename job

---------- ---------- ---------

7369 smith clerk

7499 allen salesman

7521 ward salesman

sql> col ename format a40

empno ename job

---------- ---------------------------------------- ---------

7369 smith clerk

7499 allen salesman

7521 ward salesman

4). 设置列标题的对齐方式

jus[tify] {l[eft]|c[enter]|c[entre]|r[ight]}

sql> col ename justify center

sql> /

empno ename job

---------- ---------------------------------------- ---------

7369 smith clerk

7499 allen salesman

7521 ward salesman

对于number型的列,列标题缺省在右边,其它类型的列标题缺省在左边

5). 不让一个列显示在屏幕上

nopri[nt]|pri[nt]

sql> col job noprint

sql> /

empno ename

---------- ----------------------------------------

7369 smith

7499 allen

7521 ward

6). 格式化number类型列的显示:

sql> column sal format $99,990

sql> /

employee

department name salary commission

---------- ---------- --------- ----------

30 allen $1,600 300

7). 显示列值时,如果列值为null值,用text值代替null值

comm nul[l] text

sql>col comm nul[l] text

8). 设置一个列的回绕方式

wra[pped]|wor[d_wrapped]|tru[ncated]

col1

--------------------

how are you?

sql>col col1 format a5

sql>col col1 wrapped

col1

-----

how a

re yo

u?

sql> col col1 word_wrapped

col1

-----

how

are

you?

sql> col col1 word_wrapped

col1

-----

how a

9). 显示列的当前的显示属性值

sql> column column_name

10). 将所有列的显示属性设为缺省值

sql> clear columns

◆8. 屏蔽掉一个列中显示的相同的值

break on break_column

sql> break on deptno

sql> select deptno, ename, sal

from emp

where sal < 2500

order by deptno;

deptno ename sal

---------- ----------- ---------

10 clark 2450

miller 1300

20 smith 800

adams 1100

◆9. 在上面屏蔽掉一个列中显示的相同的值的显示中,每当列值变化时在值变化之前插入n个空行。

break on break_column skip n

sql> break on deptno skip 1

sql> /

deptno ename sal

---------- ----------- ---------

10 clark 2450

miller 1300

20 smith 800

adams 1100

◆10. 显示对break的设置

sql> break

◆11. 删除6、7的设置

sql> clear breaks

◆12. set 命令:

该命令包含许多子命令:

set system_variable value

system_variable value 可以是如下的子句之一:

appi[nfo]{on|off|text}

array[size] {15|n}

auto[commit]{on|off|imm[ediate]|n}

autop[rint] {on|off}

autorecovery [on|off]

autot[race] {on|off|trace[only]} [exp[lain]] [stat[istics]]

blo[ckterminator] {.|c}

cmds[ep] {;|c|on|off}

colsep {_|text}

com[patibility]{v7|v8|native}

con[cat] {.|c|on|off}

copyc[ommit] {0|n}

copytypecheck {on|off}

def[ine] {&|c|on|off}

describe [depth {1|n|all}][linenum {on|off}][indent {on|off}]

echo {on|off}

editf[ile] file_name[.ext]

emb[edded] {on|off}

esc[ape] {|c|on|off}

feed[back] {6|n|on|off}

flagger {off|entry |intermed[iate]|full}

flu[sh] {on|off}

hea[ding] {on|off}

heads[ep] {||c|on|off}

instance [instance_path|local]

lin[esize] {80|n}

lobof[fset] {n|1}

logsource [pathname]

long {80|n}

longc[hunksize] {80|n}

mark[up] html [on|off] [head text] [body text] [entmap {on|off}] [spool

{on|off}] [pre[format] {on|off}]

newp[age] {1|n|none}

null text

numf[ormat] format

num[width] {10|n}

pages[ize] {24|n}

pau[se] {on|off|text}

recsep {wr[apped]|ea[ch]|off}

recsepchar {_|c}

serverout[put] {on|off} [size n] [for[mat] {wra[pped]|wor[d_

wrapped]|tru[ncated]}]

shift[inout] {vis[ible]|inv[isible]}

show[mode] {on|off}

sqlbl[anklines] {on|off}

sqlc[ase] {mix[ed]|lo[wer]|up[per]}

sqlco[ntinue] {> |text}

sqln[umber] {on|off}

sqlpre[fix] {#|c}

sqlp[rompt] {sql>|text}

sqlt[erminator] {;|c|on|off}

suf[fix] {sql|text}

tab {on|off}

term[out] {on|off}

ti[me] {on|off}

timi[ng] {on|off}

trim[out] {on|off}

trims[pool] {on|off}

und[erline] {-|c|on|off}

ver[ify] {on|off}

wra[p] {on|off}

1). 设置当前session是否对修改的数据进行自动提交

sql>set auto[commit] {on|off|imm[ediate]| n}

2).在用start命令执行一个sql脚本时,是否显示脚本中正在执行的sql语句

sql> set echo {on|off}

3).是否显示当前sql语句查询或修改的行数

sql> set feed[back] {6|n|on|off}

默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数

4).是否显示列标题

sql> set hea[ding] {on|off}

当set heading off 时,在每页的上面不显示列标题,而是以空白行代替

5).设置一行可以容纳的字符数

sql> set lin[esize] {80|n}

如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。

6).设置页与页之间的分隔

sql> set newp[age] {1|n|none}

当set newpage 0 时,会在每页的开头有一个小的黑方框。

当set newpage n 时,会在页和页之间隔着n个空行。

当set newpage none 时,会在页和页之间没有任何间隔。

7).显示时,用text值代替null值

sql> set null text

8).设置一页有多少行数

sql> set pages[ize] {24|n}

如果设为0,则所有的输出内容为一页并且不显示列标题

9).是否显示用dbms_output.put_line包进行输出的信息。

sql> set serverout[put] {on|off}

在编写存储过程时,我们有时会用dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上。

10).当sql语句的长度大于linesize时,是否在显示时截取sql语句。

sql> set wra[p] {on|off}

当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),当set wrap on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。

11).是否在屏幕上显示输出的内容,主要用与spool结合使用。

sql> set term[out] {on|off}

在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。

12).将spool输出中每行后面多余的空格去掉

sql> set trims[out] {on|off}

13)显示每个sql语句花费的执行时间

set timing {on|off}

◆14.修改sql buffer中的当前行中,第一个出现的字符串

c[hange] /old_value/new_value

sql> l

1* select * from dept

sql> c/dept/emp

1* select * from emp

◆15.编辑sql buffer中的sql语句

edi[t]

◆16.显示sql buffer中的sql语句,list n显示sql buffer中的第n行,并使第n行成为当前行

l[ist] [n]

◆17.在sql buffer的当前行下面加一行或多行

i[nput]

◆18.将指定的文本加到sql buffer的当前行后面

a[ppend]

sql> select deptno,

2 dname

3 from dept;

deptno dname

---------- --------------

10 accounting

20 research

30 sales

40 operations

sql> l 2

2* dname

sql> a ,loc

2* dname,loc

sql> l

1 select deptno,

2 dname,loc

3* from dept

sql> /

deptno dname loc

---------- -------------- -------------

10 accounting new york

20 research dallas

30 sales chicago

40 operations boston

扫描关注微信公众号