廊坊市网站建设_网站建设公司_响应式开发_seo优化
2026/1/17 5:36:44 网站建设 项目流程

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. 配置环境变量:

    ORACLE_HOME=C:\app\oracle\product\19.0.0\dbhome_1PATH+=%ORACLE_HOME%\bin
  5. 打开命令提示符,输入:

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

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

  3. 设置环境变量:

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

    tnsnames.ora

    文件(若使用 TNS 连接):

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

    sqlplus username/password@ORCL

3. Linux 安装(简要)

# 下载 instantclient-basic-linux.x64-19.x.x.zip# 和 instantclient-sqlplus-linux.x64-19.x.x.zipunzipinstantclient-basic-linux.x64-19.20.0.0.0dbru.zipunzipinstantclient-sqlplus-linux.x64-19.20.0.0.0dbru.zipexportLD_LIBRARY_PATH=./instantclient_19_20:$LD_LIBRARY_PATHexportPATH=./instantclient_19_20:$PATHsqlplus user/pass@//localhost:1521/orclpdb1

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

1. 启动与连接

-- 方式1:启动后连接sqlplus/nologSQL>CONNECTscott/tiger@orcl-- 方式2:直接连接sqlplus scott/tiger@orcl-- 方式3:操作系统认证(需配置)sqlplus/assysdba

2. 执行 SQL 与 PL/SQL

-- 执行单条 SQLSELECT*FROMemp;-- 执行 PL/SQL 块BEGINDBMS_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

示例:设置查询环境

-- 设置每页50行,每行200字符SETPAGESIZE50SETLINESIZE200-- 关闭反馈信息(如 "7 rows selected.")SETFEEDBACKOFF-- 开启 DBMS_OUTPUT(用于 PL/SQL 调试)SETSERVEROUTPUTON-- 关闭变量验证(避免重复显示)SETVERIFYOFF-- 示例查询SELECTempno,ename,jobFROMempWHEREdeptno=20;

四、常用 SQL*Plus 命令详解

1. HELP 命令

显示 SQL*Plus 命令帮助。

HELPINDEX-- 列出所有可用命令HELPSET-- 查看 SET 命令帮助HELPCOLUMN-- 查看 COLUMN 命令帮助

2. DESCRIBE 命令(DESC)

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

-- 查看 emp 表结构DESCemp;-- 输出示例:-- 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 命令

将屏幕输出保存到文件。

-- 开始记录到 report.txtSPOOL report.txt-- 执行查询SELECTCOUNT(*)FROMemp;SELECTSYSDATEFROMdual;-- 停止记录并关闭文件SPOOLOFF

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

4. 其他常用命令

-- 清屏(仅 Windows/Linux 终端支持)CLEAR SCREEN-- 显示当前用户SHOWUSER-- 显示参数设置SHOWPAGESIZESHOWLINESIZE-- 退出 SQL*PlusEXIT或 QUIT

五、格式化查询结果

1. COLUMN 命令

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

语法:
COLUMNcolumn_name[option]
常用选项:
  • FORMAT A<n>:字符型,宽度 n
  • FORMAT 99999:数字型,指定位数
  • HEADING '新标题'
  • JUSTIFY LEFT/RIGHT/CENTER
  • WRAP / WORD_WRAPPED:自动换行
示例:
-- 格式化 emp 表查询输出COLUMNename HEADING"Employee Name"FORMAT A15 JUSTIFY CENTERCOLUMNsal HEADING"Salary ($)"FORMAT $99,999.99COLUMNhiredate HEADING"Hire Date"FORMAT A12SELECTename,sal,hiredateFROMempWHEREdeptno=10;-- 禁用某列格式COLUMNename CLEAR

2. TTITLE 和 BTITLE 命令

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

示例:
-- 设置页眉TTITLE CENTER'Employee Salary Report'SKIP2-- 设置页脚BTITLE CENTER'Confidential - Page &PAGE'-- 执行查询SELECTename,job,salFROMempORDERBYsalDESC;-- 清除标题TTITLEOFFBTITLEOFF

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


六、综合性实战案例

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

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

-- 1. 设置环境SETPAGESIZE30SETLINESIZE120SETFEEDBACKOFFSETVERIFYOFFSETECHOOFF-- 2. 设置标题TTITLE CENTER'Department-wise Salary Summary Report'SKIP1-CENTER'Generated on '_DATE SKIP2BTITLE CENTER'Page &PAGE of Total Results'-- 3. 格式化列COLUMNdeptno HEADING"Dept No"FORMAT999COLUMNdname HEADING"Department Name"FORMAT A20COLUMNtotal_sal HEADING"Total Salary ($)"FORMAT $999,999.99COLUMNemp_count HEADING"Employees"FORMAT999-- 4. 开始输出到文件SPOOL dept_salary_report.txt-- 5. 执行汇总查询SELECTd.deptno,d.dname,COUNT(e.empno)ASemp_count,SUM(e.sal)AStotal_salFROMdept dLEFTJOINemp eONd.deptno=e.deptnoGROUPBYd.deptno,d.dnameORDERBYtotal_salDESCNULLSLAST;-- 6. 结束输出SPOOLOFF-- 7. 清理设置CLEARCOLUMNSTTITLEOFFBTITLEOFFSETFEEDBACKON

输出效果(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 环境中仍不可替代。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询