SQL PLUS与Oracle数据库的交互

一、SQL Plus与数据库的交互

可以 使用2种基本类型的命令与数据库进行交互:

服务器执行的命令:SQLQ命令(以;结束)和PL/SQL程序块(以/结束)

本地命令:SQL Plus命令

二、设置SQL Plus的运行环境

1.使用SET命令,可以设置图中项

2.语法

SET system_variable value

3.常用设置项

①SET PAGSIZE value设置从顶部标题至页结束之间的行数

②SET LINESIZE value设置一行所显示的最多字符数

③SET NEWPAGE value设置页与页的间隔,默认为一行

④SET PAUSE value设置结果是否滚动显示,value可取范围有ON/OFF/TEXT

=>注意,在sql plus客户端输入set命令做的设置是临时生效的,也就是说,你关掉sqlplus再打开,就又恢复到初始值了,要永久生效的话怎么操作呢

可以编辑D:\oracle\sqlplus\admin\glogin.sql文件,将SET命令写在里面,重启生效

三、SQL Plus管理命令

1.HELP命令

帮助,提示。

语法为HELP|?[topic],如HELP SHOW 等效于?SHOW

2.DESCRIBE

描述表、视图、索引等结构(字段名、是否为空、类型)

两种语法①为 desc objectname,如desc emp,需要单独执行该命令

SQL> desc 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)

②#desc objectname,适用于什么场景呢=>比如sql写一半,忘记字段名了,使用该命令可以查询 且不影响当前在编写的sql

SQL> select empno
  2  #desc 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  ,ename from emp;

     EMPNO ENAME
---------- --------------------
      7369 SMITH
      7499 ALLEN
      7521 WARD
      7566 JONES
      7654 MARTIN
      7698 BLAKE
      7782 CLARK
      7788 SCOTT
      7839 KING
      7844 TURNER

已选择 10 行。

3.SPOOL命令

将输出的结果写入到某个文件种

语法为 SPOOL [filename[CREATE|REPLACE|APPEND|OFF|OUT]] 创建|替换|引用|关闭输出|打印

SPOOL OFF和SPOOL OUT的区别:

OFF是关闭输出

OUT=OFF+PRINT

SQL> SPOOL E:\我的01文档\emp.txt
SQL> select empno,ename,sal,job from emp where job='SALESMAN';

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

SQL> spool off
--注意要关闭spool才能在txt里看到输出的内容

四、常用SQL Plus命令

1.编辑EDIT

ED filename[.ext]

SQL> ed E:\我的01文档\emp.txt

2.保存SAVE/EDIT

①SAVE用于将sql缓冲区最近一条sql保存到某个文件种

语法为SAVE file_name

SQL> select * from dept;

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

SQL> save E:\我的01文档\dept
已创建 file E:\我的01文档\dept.sql
SQL> clear buffer
buffer 已清除
SQL> save E:\我的01文档\dept
SP2-0107: 无须保存。
SQL>

3.运行命令

①命令行方式:sql命令后面加;
②SQL缓冲区方式

run或/

SQL> run
  1* select * from dept

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

SQL> /

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

SQL>
③命令文件方式

------start命令 只能在sqlplus中运行

start{url|file_name}

------@命令既能在sqlplus中运行又能在命令行中运行


SQL> start E:\我的01文档\dept.sql

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

SQL> @ E:\我的01文档\dept.sql

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

@命令在命令行中运行示例如下

五、格式化SQL Plus输出

1.格式化列

语法 COL[UMN] [COLNAME][OPTION]

1.1修改列标题
SQL> col empno heading 员工编号
SQL>col ename heading 员工名称
SQL> select empno,ename from emp;

  员工编号 员工名称
---------- --------------------
      7369 SMITH
      7499 ALLEN
      7521 WARD
      7566 JONES
      7654 MARTIN
      7698 BLAKE
      7782 CLARK
      7788 SCOTT
      7839 KING
      7844 TURNER

已选择 10 行。
1.2 格式化数字列

语法 COL[UMN] colum_name Format model

SQL> col sal format $999,999.00
SQL> select sal from emp;

         SAL
------------
     $800.00
   $1,600.00
   $1,250.00
   $2,975.00
   $1,250.00
   $2,850.00
   $2,450.00
   $3,000.00
   $5,000.00
   $1,500.00

已选择 10 行。
1.3格式化字符长度

如例子中,将ename字段长度格式化为3,超出就换行显示了

SQL> col ename format a3
SQL> seelct * from emp;
SP2-0734: 未知的命令开头 "seelct * f..." - 忽略了剩余的行。
SQL> select * from emp;

  员工编号 员  JOB                       MGR HIREDATE                SAL       COMM     DEPTNO
---------- --- ------------------ ---------- -------------- ------------ ---------- ----------
      7369 SMI CLERK                    7902 17-12月-80          $800.00                    20
           TH

      7499 ALL SALESMAN                 7698 20-2月 -81        $1,600.00        300         30
           EN
1.4格式化NULL值

COL col_name null text

SQL> col comm null null
SQL> select * from emp;

  员工编号 员  JOB                       MGR HIREDATE                SAL       COMM     DEPTNO
---------- --- ------------------ ---------- -------------- ------------ ---------- ----------
      7369 SMI CLERK                    7902 17-12月-80          $800.00 null               20
           TH

      7499 ALL SALESMAN                 7698 20-2月 -81        $1,600.00        300         30
           EN

      7521 WAR SALESMAN                 7698 22-2月 -81        $1,250.00        500         30
           D
1.5 控制格式化开关

COL col_name on/off

1.6 列出和重新设置列显示属性

①列出

COL col_name

SQL> col comm
COLUMN   comm ON
NULL     'null'

②重设

COL col_name clear

SQL> col comm
COLUMN   comm ON
NULL     'null'
SQL> col comm clear
SQL> col comm
SP2-0046: COLUMN 'comm' 未定义

2.定义页与报告的标题

2.1 定义页标题

TTI [ printspec[text|variable]...] [OFF|ON]

>>输出工资表所有数据,并设置头/底标题

SQL> ttit left '             工资登记表'
SQL> btit left '打印时间:2025.03.10 by addie'
SQL> SET pagesize 10
SQL> select * from salgrade;

             工资登记表
     GRADE      LOSAL      HISAL
---------- ---------- ----------
         2       1201       1400
         3       1401       2000
         4       2001       3000


打印时间:2025.03.10 by addie
2.2 定义报告(底)的标题

BTI [ printspec[text|variable]...] [OFF|ON]

效果见2.1

在退出sqlplus前,该设置对所有查询生效,注意手动关闭

ttitle off

btitle off

SQL> select * from salgrade;

             工资登记表
     GRADE      LOSAL      HISAL
---------- ---------- ----------
         2       1201       1400
         3       1401       2000
         4       2001       3000


打印时间:2025.03.10 by addie

SQL> btitle off
SQL> select * from salgrade;

             工资登记表
     GRADE      LOSAL      HISAL
---------- ---------- ----------
         2       1201       1400
         3       1401       2000
         4       2001       3000

SQL> ttitle off
SQL> select * from salgrade;

     GRADE      LOSAL      HISAL
---------- ---------- ----------
         2       1201       1400
         3       1401       2000
         4       2001       3000

That's all~

Have a nice study~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值