• Oracle SQLPlus命令


    SQLPlus是一个被DBA和开发人员广泛使用的功能强大的Oracle工具,可以在各个平台上拥有操作的一致性。SQLPlus可以执行输入的SQL语句和SQL文件,通过SQLPlus可以和数据库进行对话。以下例子基于Oracle 11g。

    set命令设置运行环境

    在Oracle 11g中,可以使用set命令来设置SQLPlus的运行环境。set命令语法如下:

    set variable value

    variable为变量名,value为变量值。下面介绍几个常用的set变量。

    pagesize变量

    pagesize变量用来设置从顶部标题到页结束行(包含页首的空行)之间的行数。pagesize的默认值为14:

    SQL> show pagesize
    pagesize 14

     

    使用set pagesize命令修改一页的行数为18:

    SQL> set pagesize 18;
    SQL> select user_id,username,account_status from dba_users;

      USER_ID USERNAME                       ACCOUNT_STATUS
    ---------- ------------------------------ --------------------------------
          74 MGMT_VIEW                     OPEN
            0 SYS                           OPEN
            5 SYSTEM                         OPEN
          30 DBSNMP                         OPEN
          72 SYSMAN                         OPEN
          84 SCOTT                         OPEN
            9 OUTLN                         EXPIRED & LOCKED
          75 FLOWS_FILES                   EXPIRED & LOCKED
          57 MDSYS                         EXPIRED & LOCKED
          53 ORDSYS                         EXPIRED & LOCKED
          42 EXFSYS                         EXPIRED & LOCKED
          32 WMSYS                         EXPIRED & LOCKED
          31 APPQOSSYS                     EXPIRED & LOCKED
          78 APEX_030200                   EXPIRED & LOCKED
          83 OWBSYS_AUDIT                   EXPIRED & LOCKED

     

    可手动数一下是不是18行(lll¬ω¬)。

    newpage变量

    该变量用于设置一页中空行的数量,默认值为1,可以使用set newpage命令改变该值:

    SQL> show newpage
    newpage 1
    SQL> set newpage 5
    SQL> select user_id,username,account_status from dba_users;





      USER_ID USERNAME                       ACCOUNT_STATUS
    ---------- ------------------------------ --------------------------------
          74 MGMT_VIEW                     OPEN
            0 SYS                           OPEN
            5 SYSTEM                         OPEN
          30 DBSNMP                         OPEN
          72 SYSMAN                         OPEN
          84 SCOTT                         OPEN
            9 OUTLN                         EXPIRED & LOCKED
          75 FLOWS_FILES                   EXPIRED & LOCKED
          57 MDSYS                         EXPIRED & LOCKED
          53 ORDSYS                         EXPIRED & LOCKED
          42 EXFSYS                         EXPIRED & LOCKED

     

    linesize变量

    该变量用于设置SQLPlus环境中一行所显示的最多字符总数,默认值为80,当pagesize过小时,数据就会出现折行显示的情况。可以使用set linesize命令来调整linesize的值:

    SQL> show linesize
    linesize 80
    SQL> set linesize 120

     

    pause变量

    用于设置输出结果翻页时,是否暂停,基本语法如下:

    set pause value

     

    value可取的值有:

    • off,默认值,返回结果一次性输出完毕,中间翻页不会暂停;

    • on,表示输出结果的每一页都暂停,用户按ENTER继续;

    • text,在设置为on之后,继续设置text的值,用于暂停时显示;

    比如:

    SQL> set pause on
    SQL> set pause '按<enter>键继续'
    SQL> select user_id,username,account_status from dba_users;
    按<enter>键继续

      USER_ID USERNAME                       ACCOUNT_STATUS
    ---------- ------------------------------ --------------------------------
          74 MGMT_VIEW                     OPEN
            0 SYS                           OPEN
            5 SYSTEM                         OPEN
          30 DBSNMP                         OPEN
          72 SYSMAN                         OPEN
          84 SCOTT                         OPEN
            9 OUTLN                         EXPIRED & LOCKED
          75 FLOWS_FILES                   EXPIRED & LOCKED
          57 MDSYS                         EXPIRED & LOCKED
          53 ORDSYS                         EXPIRED & LOCKED
          42 EXFSYS                         EXPIRED & LOCKED
          32 WMSYS                         EXPIRED & LOCKED
          31 APPQOSSYS                     EXPIRED & LOCKED
          78 APEX_030200                   EXPIRED & LOCKED
          83 OWBSYS_AUDIT                   EXPIRED & LOCKED
    按<enter>键继续

     

    numformat变量

    该变量值用于设置显示数值的默认格式,基本语法如下:

    set numformat format

     

    format为数值掩码,常用值及其说明如下:

    掩码说明举例
    9 查询结果中数字替换格式的掩码 999
    0 格式中的掩码屏蔽掉查询结果中的数字 999.00
    $ 在查询结果中的数字前添加美元前缀 $999
    S 为数字显示符号类型,通常用于显示查询结果中的正负数字 S999
    , 在字符,位置上放置都逗号/td> 999,99

    查看scott.emp表中的SAL字段值,然后使用”$999,999,999.00”格式显示:

    SQL> select ename,job,sal from scott.emp;

    ENAME     JOB             SAL
    ---------- --------- ----------
    SMITH     CLERK           800
    ALLEN     SALESMAN       1600
    WARD       SALESMAN       1250
    JONES     MANAGER         2975
    MARTIN     SALESMAN       1250
    BLAKE     MANAGER         2850
    CLARK     MANAGER         2450
    SCOTT     ANALYST         3000
    KING       PRESIDENT       5000
    TURNER     SALESMAN       1500
    ADAMS     CLERK           1100
    SQL> set numformat $999,999,999.00
    SQL> select ename,job,sal from scott.emp;

    ENAME     JOB                   SAL
    ---------- --------- ----------------
    SMITH     CLERK             $800.00
    ALLEN     SALESMAN         $1,600.00
    WARD       SALESMAN         $1,250.00
    JONES     MANAGER         $2,975.00
    MARTIN     SALESMAN         $1,250.00
    BLAKE     MANAGER         $2,850.00
    CLARK     MANAGER         $2,450.00
    SCOTT     ANALYST         $3,000.00
    KING       PRESIDENT       $5,000.00
    TURNER     SALESMAN         $1,500.00
    ADAMS     CLERK           $1,100.00

     

    timing变量

    该变量用于显示执行SQL语句所花的时间,默认值为off:

    SQL> set timing on
    SQL> select ename,job,sal from scott.emp;

    ENAME     JOB                   SAL
    ---------- --------- ----------------
    SMITH     CLERK             $800.00
    ALLEN     SALESMAN         $1,600.00
    WARD       SALESMAN         $1,250.00
    JONES     MANAGER         $2,975.00
    MARTIN     SALESMAN         $1,250.00
    BLAKE     MANAGER         $2,850.00
    CLARK     MANAGER         $2,450.00
    SCOTT     ANALYST         $3,000.00
    KING       PRESIDENT       $5,000.00
    TURNER     SALESMAN         $1,500.00
    ADAMS     CLERK           $1,100.00

    ENAME     JOB                   SAL
    ---------- --------- ----------------
    JAMES     CLERK             $950.00
    FORD       ANALYST         $3,000.00
    MILLER     CLERK           $1,300.00

    已选择14行。

    已用时间: 00: 00: 00.04

     

    set命令还有很多变量可用,可使用help set命令来查看。

    常用SQLPlus命令

    help命令

    help命令用来帮助用户查询指定命令详细介绍,类似于Linux的man,其的语法如下:

    help|? [topic]

     

    ?表示一个命令的部分字符,用于模糊查询;topic参数表示要查询的命令的完整名称。如果直接输入help,则显示的是命令本身的详细信息:

    SQL> help

    HELP
    ----

    Accesses this command line help system. Enter HELP INDEX or ? INDEX
    for a list of topics.

    You can view SQL*Plus resources at
        http://www.oracle.com/technology/tech/sql_plus/
    and the Oracle Database Library at
        http://www.oracle.com/technology/documentation/

    HELP|? [topic]


    SQL> help set

    SET
    ---

    Sets a system variable to alter the SQL*Plus environment settings
    for your current session. For example, to:
        -   set the display width for data
        -   customize HTML formatting
        -   enable or disable printing of column headings
        -   set the number of lines per page

    SET system_variable value

    where system_variable and value represent one of the following clauses:

      APPI[NFO]{OFF|ON|text}                   NEWP[AGE] {1|n|NONE}
      ARRAY[SIZE] {15|n}                       NULL text
      AUTO[COMMIT] {OFF|ON|IMM[EDIATE]|n}     NUMF[ORMAT] format
      AUTOP[RINT] {OFF|ON}                     NUM[WIDTH] {10|n}
      AUTORECOVERY {OFF|ON}                   PAGES[IZE] {14|n}
      AUTOT[RACE] {OFF|ON|TRACE[ONLY]}         PAU[SE] {OFF|ON|text}
        [EXP[LAIN]] [STAT[ISTICS]]             RECSEP {WR[APPED]|EA[CH]|OFF}
      BLO[CKTERMINATOR] {.|c|ON|OFF}           RECSEPCHAR {_|c}
      CMDS[EP] {;|c|OFF|ON}                   SERVEROUT[PUT] {ON|OFF}
      COLSEP {_|text}                           [SIZE {n | UNLIMITED}]
      CON[CAT] {.|c|ON|OFF}                     [FOR[MAT] {WRA[PPED] |
      COPYC[OMMIT] {0|n}                         WOR[D_WRAPPED] |
      COPYTYPECHECK {ON|OFF}                     TRU[NCATED]}]
      DEF[INE] {&|c|ON|OFF}                   SHIFT[INOUT] {VIS[IBLE] |
      DESCRIBE [DEPTH {1|n|ALL}]                 INV[ISIBLE]}
        [LINENUM {OFF|ON}] [INDENT {OFF|ON}]   SHOW[MODE] {OFF|ON}
      ECHO {OFF|ON}                           SQLBL[ANKLINES] {OFF|ON}
      EDITF[ILE] file_name[.ext]               SQLC[ASE] {MIX[ED] |
      EMB[EDDED] {OFF|ON}                       LO[WER] | UP[PER]}
      ERRORL[OGGING] {ON|OFF}                 SQLCO[NTINUE] {> | text}
        [TABLE [schema.]tablename]             SQLN[UMBER] {ON|OFF}
        [TRUNCATE] [IDENTIFIER identifier]     SQLPLUSCOMPAT[IBILITY] {x.y[.z]}
      ESC[APE] {|c|OFF|ON}                   SQLPRE[FIX] {#|c}
      ESCCHAR {@|?|%|$|OFF}                   SQLP[ROMPT] {SQL>|text}
      EXITC[OMMIT] {ON|OFF}                   SQLT[ERMINATOR] {;|c|ON|OFF}
      FEED[BACK] {6|n|ON|OFF}                 SUF[FIX] {SQL|text}
      FLAGGER {OFF|ENTRY|INTERMED[IATE]|FULL} TAB {ON|OFF}
      FLU[SH] {ON|OFF}                         TERM[OUT] {ON|OFF}
      HEA[DING] {ON|OFF}                       TI[ME] {OFF|ON}
      HEADS[EP] {||c|ON|OFF}                   TIMI[NG] {OFF|ON}
      INSTANCE [instance_path|LOCAL]           TRIM[OUT] {ON|OFF}
      LIN[ESIZE] {80|n}                       TRIMS[POOL] {OFF|ON}
      LOBOF[FSET] {1|n}                       UND[ERLINE] {-|c|ON|OFF}
      LOGSOURCE [pathname]                     VER[IFY] {ON|OFF}
      LONG {80|n}                             WRA[P] {ON|OFF}
      LONGC[HUNKSIZE] {80|n}                   XQUERY {BASEURI text|
      MARK[UP] HTML [OFF|ON]                     ORDERING{UNORDERED|
        [HEAD text] [BODY text] [TABLE text]             ORDERED|DEFAULT}|
        [ENTMAP {ON|OFF}]                       NODE{BYVALUE|BYREFERENCE|
        [SPOOL {OFF|ON}]                             DEFAULT}|
        [PRE[FORMAT] {OFF|ON}]                   CONTEXT text}

     

    也可以使用help index命令查看SQLPlus命令清单:

    SQL> help index

    Enter Help [topic] for help.

    @             COPY         PAUSE                   SHUTDOWN
    @@           DEFINE       PRINT                   SPOOL
    /             DEL         PROMPT                   SQLPLUS
    ACCEPT       DESCRIBE     QUIT                     START
    APPEND       DISCONNECT   RECOVER                 STARTUP
    ARCHIVE LOG   EDIT         REMARK                   STORE
    ATTRIBUTE     EXECUTE     REPFOOTER               TIMING
    BREAK         EXIT         REPHEADER               TTITLE
    BTITLE       GET         RESERVED WORDS (SQL)     UNDEFINE
    CHANGE       HELP         RESERVED WORDS (PL/SQL) VARIABLE
    CLEAR         HOST         RUN                     WHENEVER OSERROR
    COLUMN       INPUT       SAVE                     WHENEVER SQLERROR
    COMPUTE       LIST         SET                     XQUERY
    CONNECT       PASSWORD     SHOW

     

    describe命令

    该命令用于查询指定数据表的组成结构,语法如下:

    desc[ribe] object_name

     

    describe可缩写为desc。

    比如查询scott.emp表中SALESMAN的编号,姓名和工资,过程中,使用#desc scott.emp命令查询scott.emp表中工资字段的名称:

    SQL> select empno,ename,
    2 #desc scott.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)

    2 sal from scott.emp where job = 'SALESMAN';

        EMPNO ENAME             SAL
    ---------- ---------- ----------
        7499 ALLEN           1600
        7521 WARD             1250
        7654 MARTIN           1250
        7844 TURNER           1500

     

    spool命令

    该命令可以将查询结果输出到指定文件中,spool的语法格式如下:

    spo[ol] [file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]] | OFF | OUT]

     

    • cre[ate],表示创建一个新的文件,默认值;

    • rep[lace],表示覆盖已存在的文件;

    • app[end],表示追加到一个已存在的文件中;

    • off|out,表示关闭spool输出。

    比如:

    SQL> spool d:emp.txt
    SQL> select empno,ename,job,sal from scott.emp;

        EMPNO ENAME     JOB             SAL
    ---------- ---------- --------- ----------
        7369 SMITH     CLERK           800
        7499 ALLEN     SALESMAN       1600
        7521 WARD       SALESMAN       1250
        7566 JONES     MANAGER         2975
        7654 MARTIN     SALESMAN       1250
        7698 BLAKE     MANAGER         2850
        7782 CLARK     MANAGER         2450
        7788 SCOTT     ANALYST         3000
        7839 KING       PRESIDENT       5000
        7844 TURNER     SALESMAN       1500
        7876 ADAMS     CLERK           1100

        EMPNO ENAME     JOB             SAL
    ---------- ---------- --------- ----------
        7900 JAMES     CLERK           950
        7902 FORD       ANALYST         3000
        7934 MILLER     CLERK           1300

    已选择14行。

    SQL> spool off

     

    到D盘打开emp.txt如下:

    define命令

    该命令用来定义一个变量并赋值,基本语法如下:

    def[ine] [variable] | [variable = text]

     

    比如:

    SQL> define vjob='SALESMAN'
    SQL> define vjob
    DEFINE VJOB           = "SALESMAN" (CHAR)

     

    show命令

    show命令用来显示SQLPlus系统变量的值,语法如下:

    sho[w] option

     

    option表示要显示的系统选项,常用的值有:all,parameters [parameter_name],sga,spool和user等。

    SQL> show parameters db_block_size

    NAME                                 TYPE       VALUE
    ------------------------------------ ----------- ------------------------------
    db_block_size                       integer     8192
    SQL> show sga

    Total System Global Area 3373858816 bytes
    Fixed Size                 2180424 bytes
    Variable Size           1862273720 bytes
    Database Buffers         1493172224 bytes
    Redo Buffers               16232448 bytes
    SQL> show user
    USER 为 "SYSTEM"

     

    save命令

    该命令将SQL缓冲区的最近一条SQL或PL/SQL块保存到指定的文件中,语法如下:

    sav[e] [FILE] file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]]

     

    比如:

    SQL> select * from scott.dept;

      DEPTNO DNAME         LOC
    ---------- -------------- -------------
          10 ACCOUNTING     NEW YORK
          20 RESEARCH       DALLAS
          30 SALES         CHICAGO
          40 OPERATIONS     BOSTON

    SQL> save d:dept.sql
    已创建 file d:dept.sql

     

    如果不指定文件扩展名,默认为.sql。

    get命令

    该命令将一个SQL脚本文件的内容放进SQL的缓冲区,语法格式如下:

    get [FILE] file_name[.ext] [LIST | NOLIST]

     

    其中list表示加载到缓冲区的时候显示文件的内容,nolist则表示不显示。

    比如加载d:dept.sql到SQL缓冲区,并运行命令/执行该语句:

    SQL> get d:dept.sql list
    1* select * from scott.dept
    SQL> /

      DEPTNO DNAME         LOC
    ---------- -------------- -------------
          10 ACCOUNTING     NEW YORK
          20 RESEARCH       DALLAS
          30 SALES         CHICAGO
          40 OPERATIONS     BOSTON

     

    start和@

    两个命令都是用于执行一个sql脚本文件,比如:

    SQL> start d:dept.sql

      DEPTNO DNAME         LOC
    ---------- -------------- -------------
          10 ACCOUNTING     NEW YORK
          20 RESEARCH       DALLAS
          30 SALES         CHICAGO
          40 OPERATIONS     BOSTON

    SQL> @ d:dept.sql

      DEPTNO DNAME         LOC
    ---------- -------------- -------------
          10 ACCOUNTING     NEW YORK
          20 RESEARCH       DALLAS
          30 SALES         CHICAGO
          40 OPERATIONS     BOSTON

     

    格式化查询结果

    column

    该命令可以实现格式化查询结果,设置列宽,设置列标题等。语法如下:

    col[umn] [column_name|alias|option]

     

    column_name用于指定要设置的列的名称,alias用于指定列的别名,option用于指定列的显示格式,其值和说明如下表所示:

    option选项的值说明
    clear 清除指定列所设置的格式,恢复默认值
    format 格式化指定列
    heading 指定列标题
    justify 调整列标题的对齐方式,默认情况下:数值类型的右对齐,其他类型的左对齐
    null 替换null值
    print/noprint 显示列标题或隐藏列标题,默认为print
    on/off 控制定义的显示属性状态,off表示定义的所有显示属性都不起作用
    wrapped 当字符串的长度超过显示宽度时,将字符串的超出部分折叠到下一行显示
    word_wrapped 表示从一个完整的字符处折叠
    truncated 表示截取字符串尾部

    format选项

    使用format选项格式化scott.emp表中的sal列,格式为$999,999.00:

    SQL> column sal format $999,999.00
    SQL> select empno,ename,sal from scott.emp;

        EMPNO ENAME               SAL
    ---------- ---------- ------------
        7369 SMITH           $800.00
        7499 ALLEN         $1,600.00
        7521 WARD         $1,250.00
        7566 JONES         $2,975.00
        7654 MARTIN       $1,250.00
        7698 BLAKE         $2,850.00
        7782 CLARK         $2,450.00
        7788 SCOTT         $3,000.00
        7839 KING         $5,000.00
        7844 TURNER       $1,500.00
        7876 ADAMS         $1,100.00

        EMPNO ENAME               SAL
    ---------- ---------- ------------
        7900 JAMES           $950.00
        7902 FORD         $3,000.00
        7934 MILLER       $1,300.00

    已选择14行。

     

    heading选项

    使用heading选项将scott.emp表的empno,ename和sal三个列名转换为中文:

    SQL> column empno heading 员工编号
    SQL> column ename heading 员工姓名
    SQL> column sal heading 工资
    SQL> select empno,ename,sal from scott.emp;

    员工编号 员工姓名           工资
    ---------- ---------- ------------
        7369 SMITH           $800.00
        7499 ALLEN         $1,600.00
        7521 WARD         $1,250.00
        7566 JONES         $2,975.00
        7654 MARTIN       $1,250.00
        7698 BLAKE         $2,850.00
        7782 CLARK         $2,450.00
        7788 SCOTT         $3,000.00
        7839 KING         $5,000.00
        7844 TURNER       $1,500.00
        7876 ADAMS         $1,100.00

    员工编号 员工姓名           工资
    ---------- ---------- ------------
        7900 JAMES           $950.00
        7902 FORD         $3,000.00
        7934 MILLER       $1,300.00

    已选择14行。

     

    null选项

    使用null选项将scott.emp表中comm列值为null显示成“空值”:

    SQL> column comm null '空值'
    SQL> select empno,ename,comm from scott.emp where comm is null;

    员工编号 员工姓名         COMM
    ---------- ---------- ----------
        7369 SMITH     空值
        7566 JONES     空值
        7698 BLAKE     空值
        7782 CLARK     空值
        7788 SCOTT     空值
        7839 KING       空值
        7876 ADAMS     空值
        7900 JAMES     空值
        7902 FORD       空值
        7934 MILLER     空值

    已选择10行。

     

    wrapped/word_wrapped选项

    使用wrapped选项实现按照指定长度折行:

    SQL> create table test(
    2 col1 varchar2(100)
    3 );

    表已创建。

    SQL> insert into test(col1) values ('HOW ARE YOU?');

    已创建 1 行。

    SQL> select col1 from test;

    COL1
    --------------------------------------------------------------------------------
    HOW ARE YOU?

    SQL> column col1 format a5
    SQL> column col1 wrapped
    SQL> select col1 from test;

    COL1
    -----
    HOW A
    RE YO
    U?

     

    使用word_wrapped选项按照完整字符串折行

    SQL> column col1 word_wrapped
    SQL> select col1 from test;

    COL1
    -----
    HOW
    ARE
    YOU?

     

    ttitle和btitle命令

    这两个命令分别用来设置打印时每页的页首和页脚标题,其中ttitle语法如下(btitle语法类似):

    tti[tle] [printspec [text|variable] ...] | [OFF|ON]

     

    printspec作为头标题的修饰性选项,其值和说明如下表所示:

    printspec选项的值说明
    col 指定当前行的第几列打印头标题
    skip 跳到从下一行开始的第几行,默认为1
    left 在当前行中左对齐打印数据
    center 在当前行中间打印数据
    right 在当前行中右对齐打印数据
    bold 以黑体打印数据

    比如:打印输出scott.salgrade数据表中的记录,并设置标题:

    SQL> set pagesize 8
    SQL> ttitle left '销售情况排行表'
    SQL> btitle left '打印日期2017年11月5日 打印人 MrBird'
    SQL> select * from scott.salgrade;

    销售情况排行表
        GRADE     LOSAL     HISAL
    ---------- ---------- ----------
            1       700       1200
            2       1201       1400
            3       1401       2000
    打印日期2017年11月5日 打印人 aaa

    销售情况排行表
        GRADE     LOSAL     HISAL
    ---------- ---------- ----------
            4       2001       3000
            5       3001       9999

    打印日期2017年11月5日 打印人 aaa

     

  • 相关阅读:
    8、vue_map使用
    10、vue_待续
    vue_ref与reactive响应式数据
    vue
    vue
    9、vue_echarts
    vue
    6、vue_登录页
    7、vue_待续
    vue_axios获取数据
  • 原文地址:https://www.cnblogs.com/7788IT/p/11626504.html
Copyright © 2020-2023  润新知