当前位置:数据库 > SQLServer >>

关于sqlplus常用命令的一些记录

关于sqlplus常用命令的一些记录

     这两天去参加了一个关于orcale 12C release1的技术交流会,主要关注的是orcale Spatial 在12C上面的一些新的变化,一起交流的有学校的教授学者,也有我们这样一些从企业一线项目实施来的工程师们,大家在一起畅所欲言,关于技术交流的好不热闹!

交流过程中一些orcale的dba们的表现着实让我感觉自我鄙视了一把,他们每个人对于orcale数据库的使用以及各个参数的配置的熟悉程度真是让我这个自认为对于oracle 操作有一定了解的人开眼界了,不用说别的,就说最常用的sqlplus工具,命令熟悉自然是不用说,他们居然对于其中一些十分生僻的命令参数也能十分熟练地顺手拈来,在交流的过程中,涉及到具体操作的时候需要搭建一个虚拟的操作环境,在使用oracle virtual box搭建一个环境的时候,有一个参加讨论的同事的环境总是跑不起来,报告一个message错误信息,提示内存无效,这时候走过来一个oracle的美女,没说什么,坐下来三下两下就搞定了,临了还赠送一个甜甜的微笑,瞬间我们一帮老爷们儿就被秒杀了!

郁闷了良久,还是要从最基础的开始,今天就在这里利用上课的一点时间将sqlplus的命令总结一下(台上的法国老外的英语感觉是退化了,有些发音总是感觉是英文和法文的混合体,长长的卷舌音让我第一次感觉到国人的英语水平其实也不是很烂嘛);

要说学习sqlplus的命令使用,最好的教材应该是sqlplus 的user guide refrence了,因此我就采用了一种最为原始的方法,按照sqlplus界面中的help解释来温习了一下,记录在下面:

Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。 
   我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。 
   除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。 
   下面就介绍一下一些常用的sql*plus命令: 
  
1. 执行一个SQL脚本文件 
SQL>start file_name 
SQL>@ file_name 
我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 

@与@@的区别是什么? 
@等于start命令,用来运行一个sql脚本文件。 
@命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。该命令使用是一般要指定要执行的文件的全路径,否则从缺省路径(可用SQLPATH变量指定)下读取指定的文件。 
@@用在sql脚本文件中,用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下,而不用指定要执行sql脚本文件的全路径,也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件,该命令一般用在脚本文件中。 
如:在c:\temp目录下有文件start.sql和nest_start.sql,start.sql脚本文件的内容为: 
@@nest_start.sql     - - 相当于@ c:\temp\nest_start.sql 
则我们在sql*plus中,这样执行: 
SQL> @ c:\temp\start.sql 


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 
 
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,