Oracle 19c入门学习教程,从入门到精通,SQL*Plus命令详解:语法、使用方法与综合案例 -知识点详解(4)

SQL*Plus命令详解:语法、使用方法与综合案例

SQLPlus 是 Oracle 数据库自带的命令行工具,用于执行 SQL 语句、PL/SQL 块以及管理数据库会话。本章将系统讲解 SQLPlus 的核心命令及其使用方法,并提供详细的安装说明、语法解析、注释丰富的示例代码及综合性实战案例。


一、SQL*Plus 安装与配置(以 Windows 和 Linux 为例)

1. 安装前提

  • 已安装 Oracle Database(如 Oracle 19c/21c)或 Oracle Instant Client。
  • 若仅需连接远程数据库,可只安装 Oracle Instant Client

2. 安装步骤(Windows)

方法一:通过 Oracle Database 安装包
  1. 下载 Oracle Database 安装包(如 Oracle 19c for Windows x64)。

  2. 运行安装程序,选择"桌面类"或"服务器类"。

  3. 安装完成后,SQL*Plus 自动包含在 %ORACLE_HOME%\bin 目录中。

  4. 配置环境变量:

    bash 复制代码
    ORACLE_HOME = C:\app\oracle\product\19.0.0\dbhome_1
    PATH += %ORACLE_HOME%\bin
  5. 打开命令提示符,输入:

    bash 复制代码
    sqlplus /nolog
方法二:仅安装 Instant Client(轻量级)
  1. 下载 Oracle Instant Client Basic + SQL*Plus 包

  2. 解压到目录(如 C:\instantclient_19_20)。

  3. 设置环境变量:

    bash 复制代码
    PATH = C:\instantclient_19_20
    TNS_ADMIN = C:\instantclient_19_20\network\admin  # 可选,用于 tnsnames.ora
  4. 创建

    复制代码
    tnsnames.ora

    文件(若使用 TNS 连接):

    ini 复制代码
    ORCL =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orclpdb1)
        )
      )
  5. 启动 SQL*Plus:

    bash 复制代码
    sqlplus username/password@ORCL

3. Linux 安装(简要)

bash 复制代码
# 下载 instantclient-basic-linux.x64-19.x.x.zip
# 和 instantclient-sqlplus-linux.x64-19.x.x.zip
unzip instantclient-basic-linux.x64-19.20.0.0.0dbru.zip
unzip instantclient-sqlplus-linux.x64-19.20.0.0.0dbru.zip
export LD_LIBRARY_PATH=./instantclient_19_20:$LD_LIBRARY_PATH
export PATH=./instantclient_19_20:$PATH
sqlplus user/pass@//localhost:1521/orclpdb1

二、SQL*Plus 与数据库的交互

1. 启动与连接

sql 复制代码
-- 方式1:启动后连接
sqlplus /nolog
SQL> CONNECT scott/tiger@orcl

-- 方式2:直接连接
sqlplus scott/tiger@orcl

-- 方式3:操作系统认证(需配置)
sqlplus / as sysdba

2. 执行 SQL 与 PL/SQL

sql 复制代码
-- 执行单条 SQL
SELECT * FROM emp;

-- 执行 PL/SQL 块
BEGIN
  DBMS_OUTPUT.PUT_LINE('Hello from PL/SQL!');
END;
/

注意:PL/SQL 块必须以 / 结尾才能执行。


三、SET 命令简介与常用设置

SET 命令用于控制 SQL*Plus 的运行环境。

常用 SET 选项

选项 作用 默认值
PAGESIZE n 每页显示行数 14
LINESIZE n 每行字符数 80
FEEDBACK ON/OFF 显示返回行数 ON
VERIFY ON/OFF 显示替换变量前后值 ON
ECHO ON/OFF 显示脚本中的命令 OFF
HEADING ON/OFF 是否显示列标题 ON
SERVEROUTPUT ON 显示 DBMS_OUTPUT 输出 OFF

示例:设置查询环境

sql 复制代码
-- 设置每页50行,每行200字符
SET PAGESIZE 50
SET LINESIZE 200

-- 关闭反馈信息(如 "7 rows selected.")
SET FEEDBACK OFF

-- 开启 DBMS_OUTPUT(用于 PL/SQL 调试)
SET SERVEROUTPUT ON

-- 关闭变量验证(避免重复显示)
SET VERIFY OFF

-- 示例查询
SELECT empno, ename, job FROM emp WHERE deptno = 20;

四、常用 SQL*Plus 命令详解

1. HELP 命令

显示 SQL*Plus 命令帮助。

sql 复制代码
HELP INDEX      -- 列出所有可用命令
HELP SET        -- 查看 SET 命令帮助
HELP COLUMN     -- 查看 COLUMN 命令帮助

2. DESCRIBE 命令(DESC)

查看表、视图或存储过程的结构。

sql 复制代码
-- 查看 emp 表结构
DESC emp;

-- 输出示例:
-- Name     Null?    Type
-- -------- -------- -------------
-- 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)

3. SPOOL 命令

将屏幕输出保存到文件。

sql 复制代码
-- 开始记录到 report.txt
SPOOL report.txt

-- 执行查询
SELECT COUNT(*) FROM emp;
SELECT SYSDATE FROM dual;

-- 停止记录并关闭文件
SPOOL OFF

文件默认保存在当前工作目录。

4. 其他常用命令

sql 复制代码
-- 清屏(仅 Windows/Linux 终端支持)
CLEAR SCREEN

-- 显示当前用户
SHOW USER

-- 显示参数设置
SHOW PAGESIZE
SHOW LINESIZE

-- 退出 SQL*Plus
EXIT 或 QUIT

五、格式化查询结果

1. COLUMN 命令

用于格式化特定列的显示方式。

语法:
sql 复制代码
COLUMN column_name [option]
常用选项:
  • FORMAT A<n>:字符型,宽度 n
  • FORMAT 99999:数字型,指定位数
  • HEADING '新标题'
  • JUSTIFY LEFT/RIGHT/CENTER
  • WRAP / WORD_WRAPPED:自动换行
示例:
sql 复制代码
-- 格式化 emp 表查询输出
COLUMN ename HEADING "Employee Name" FORMAT A15 JUSTIFY CENTER
COLUMN sal   HEADING "Salary ($)"    FORMAT $99,999.99
COLUMN hiredate HEADING "Hire Date"  FORMAT A12

SELECT ename, sal, hiredate FROM emp WHERE deptno = 10;

-- 禁用某列格式
COLUMN ename CLEAR

2. TTITLE 和 BTITLE 命令

设置报表的页眉(Top Title)和页脚(Bottom Title)。

示例:
sql 复制代码
-- 设置页眉
TTITLE CENTER 'Employee Salary Report' SKIP 2

-- 设置页脚
BTITLE CENTER 'Confidential - Page &PAGE'

-- 执行查询
SELECT ename, job, sal FROM emp ORDER BY sal DESC;

-- 清除标题
TTITLE OFF
BTITLE OFF

&PAGE 是 SQL*Plus 内置变量,表示当前页码。


六、综合性实战案例

案例:生成部门工资汇总报告

目标:为 HR 部门生成一份格式化的部门工资汇总报告,包含页眉页脚、列格式、分页控制,并输出到文件。

sql 复制代码
-- 1. 设置环境
SET PAGESIZE 30
SET LINESIZE 120
SET FEEDBACK OFF
SET VERIFY OFF
SET ECHO OFF

-- 2. 设置标题
TTITLE CENTER 'Department-wise Salary Summary Report' SKIP 1 -
       CENTER 'Generated on ' _DATE SKIP 2
BTITLE CENTER 'Page &PAGE of Total Results'

-- 3. 格式化列
COLUMN deptno HEADING "Dept No" FORMAT 999
COLUMN dname  HEADING "Department Name" FORMAT A20
COLUMN total_sal HEADING "Total Salary ($)" FORMAT $999,999.99
COLUMN emp_count HEADING "Employees" FORMAT 999

-- 4. 开始输出到文件
SPOOL dept_salary_report.txt

-- 5. 执行汇总查询
SELECT 
  d.deptno,
  d.dname,
  COUNT(e.empno) AS emp_count,
  SUM(e.sal) AS total_sal
FROM 
  dept d
  LEFT JOIN emp e ON d.deptno = e.deptno
GROUP BY 
  d.deptno, d.dname
ORDER BY 
  total_sal DESC NULLS LAST;

-- 6. 结束输出
SPOOL OFF

-- 7. 清理设置
CLEAR COLUMNS
TTITLE OFF
BTITLE OFF
SET FEEDBACK ON

输出效果(dept_salary_report.txt 片段):

复制代码
           Department-wise Salary Summary Report
                 Generated on 14-JAN-2026

Dept No Department Name      Employees Total Salary ($)
------- -------------------- --------- -----------------
     20 RESEARCH                    5        $10,875.00
     30 SALES                       6         $9,400.00
     10 ACCOUNTING                 3         $8,750.00
     40 OPERATIONS                 0              $.00

                Page 1 of Total Results

七、总结

功能 命令 用途
环境设置 SET 控制输出格式、反馈等
结构查看 DESC 查看表/对象结构
输出重定向 SPOOL 保存结果到文件
列格式化 COLUMN 美化查询结果
报表标题 TTITLE/BTITLE 添加页眉页脚
帮助 HELP 获取命令帮助

掌握这些命令,可大幅提升 SQL*Plus 的使用效率,尤其适用于自动化脚本、报表生成和数据库日常维护。

⚠️ 注意:SQLPlus 是传统工具,现代开发推荐使用 SQL DeveloperVS Code + Oracle 插件,但 SQLPlus 在脚本自动化和服务器无 GUI 环境中仍不可替代。

相关推荐
燃犀知不可乎骤得2 小时前
MFC学习记录
c++·学习·mfc
星火开发设计2 小时前
C++ 运算符全解析:算术、关系、逻辑与位运算
java·开发语言·c++·学习·位运算·知识·操作符
AI_56782 小时前
Postman接口测试极速入门指南
开发语言·人工智能·学习·测试工具·lua
deng-c-f2 小时前
Linux C/C++ 学习日记(61):Redis(二):多种数据结构的操作指令
学习
AI_gurubar2 小时前
最新的大模型推理加速技术的学习路线是什么?
学习
qeen872 小时前
【数据结构】顺序表的详细解析及其简单通讯录实现
c语言·数据结构·学习
IT邦德2 小时前
PostgreSQL通过Oracle_FDW连通Oracle实战
数据库·postgresql·oracle
峥嵘life3 小时前
Android16 EDLA中GMS导入和更新
android·linux·学习
li星野3 小时前
OpenCV4X学习—图像平滑、几何变换
图像处理·学习·计算机视觉