c、SQLPlus命令

发布时间 2023-08-13 09:29:10作者: 昵称已经被使用

SQL*Plus命令

SQL*Plus与数据库的交互

Oracle的SQL*Plus是与Oracle进行交互的客户端工具,在 SQL*Plus中,可以运行SQL*Plus命令与SQL*Plus语句,主要介绍SQL*Plus命令。

SQL*Plus是一个基于C/S两层结构的客户端操作工具,包括客户层(即命令行窗口)和服务器层(即数据库实例),这两层既可以在一 台主机上,也可以在不同主机上。SQLPlus是一个非常重要的操作 Oracle数据库的实用工具,本书中大多数关于SQL和PL/SQL的示例都是在SQLPlus环境下进行演示的。

除了Oracle自身提供的SQLPlus工具以外,还有许多第三方的Oracle开发工具,如TOAD和PL/SQL Developer等,它们均具有与 SQL*Plus同样的功能,甚至还具备了SQL*Plus不具备的许多新功 能。

SQL*Plus工具主要用来进行数据查询和数据处理。利用 SQL*Plus可将SQL和Oracle专有的PL/SQL结合起来进行数据查询和处理。SQLPlus工具具备以下功能。

  • 定义变量,编写SQL语句。
  • 插入、修改、删除、查询,以及执行命令和PL/SQL语句。例如,执行SHOW PARAMETER命令。
  • 格式化查询结构、运算处理、保存、打印机输出等。
  • 显示任何一个表的字段定义,并实现与用户进行交互。
  • 完成数据库的几乎所有管理工作。例如,维护表空间和数据表。 运行存储在数据库中的子程序或包。
  • 以sysdba身份登录数据库实例,可以实现启动/停止数据库实例。

设置SQL*Plus的运行环境

SQL*Plus的运行环境是用来输入、执行SQL*Plus命令和显示返 回结果的场所,设置合适的SQL*Plus运行环境,可以使SQL*Plus能 够按照用户的要求运行和执行各种操作。SET命令也称SET变量或维护 系统变量,利用它可为SQL*Plus交互建立一个特殊的环境。例如,设置屏幕上每一行能够最多显示字符数、设置每页打印的行数、设置某个列的宽度等。下面将对SET命令进行详细讲解。

SET命令

在Oracle 11g数据库中,用户可以使用SET命令来设置SQL*Plus 的运行环境,SET命令的语法格式如下。

SET system_variable value
  • system_variable:变量名。
  • value:变量值。

SET命令的常用变量名、可选值及其说明如表所示。

image-20221201153709441

例如,用户可以设置在SQL*Plus命令提示符“SQL>前面显示当前的系统时间。但需要注意的是,通过SET命令设置的环境变量是临时的,不是永久的。当用户退出SQLPlus环境后,用户设置的环境参数会全部丢失。

常用SQL*Plus命令

在SQL*Plus环境中操作Oracle数据库,除了使用SQL语句外,用户接触比较多的就是SQLPlus命令,它执行完成后,不会保存在SQL缓冲区中。下面将介绍一些常用的SQLPlus命令。

HELP命令

SQL*Plus工具提供了许多操作Oracle数据库的命令,并且每个命令都有很多选项,把所有命令的选项都记住,这对于用户来说非常困难。为了解决这个难题,SQL*Plus提供了HELP命令来帮助用户查询指定命令的选项。HELP可以向用户提供被查询命令的标题、功能描述、缩写形式和参数选项(包括必选参数和可选参数)等信息。HELP命令的语法形式如下。

HELP|? [topic]

“?”表示一个命令的部分字符,这样就可以通过提供命令的部分 字符以模糊查询的方式来查询命令格式;topic参数表示将要查询的命 令的完整名称。若省略“?”和topic参数,直接执行HELP命令,则会 输出HELP命令本身的语法格式及其功能描述信息。

DESCRIBE命令

在SQL*Plus的众多命令中,DESCRIBE命令可能是被使用得最频繁的一个,它用来查询指定数据对象的组成结构。例如,通过DESCRIBE命令查询表和视图的结构,查询结果就可以列出相应对象各个列的名称、是否为空及类型等属性。DESCRIBE命令的语法格式如下。

DESC[RIBE] object_name;

DESCRIBE可以缩写为DESC,object_name表示将要查询的对象名称。

SPOOL命令

SPOOL命令可以把查询结果输出到指定文件中,这样可以保存查询结果并方便打印。SPOOL命令的语法格式如下。

SPO[OL] [file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]] |OFF | OUT

参数file_name用于指定脱机文件的名称,默认的文件扩展名为 LST。在该参数后面可以跟一个关键字,该关键字有以下几种情况。

  • CRE[ATE]:表示创建一个新的脱机文件,这也是SPOOL命令的默认状态。
  • REP[LACE]:表示替代已经存在的脱机文件。
  • APP[END]:表示把脱机内容附加到一个已经存在的脱机文件中。
  • OFF | OUT:表示关闭SPOOL输出。

注意:只有使用SPOOL OFF或SPOOL OUT命令关闭输出,才会在输出文件中看到输出的内容,否则输出文件中无内容或无更新内容。

DEFINE命令

该命令用来定义一个用户变量并且可以分配给它一个CHAR值,其 语法格式如下。

DEF[INE] [variable] | [variable = text]
  • variable:表示定义的变量名。
  • text:变量的CHAR值。

SHOW命令

该命令用来显示SQLPlus系统变量的值或SQLPlus环境变量的值,其语法格式如下。

SHO[W] option

option表示要显示的系统选项,常用的选项有ALL、 PARAMETERS [parameter_name]、SGA、SPOOL、USER等。

EDIT命令

SQL语句或PL/SQL块在执行完毕之后,可以被存储在一个被称为 SQL缓冲区的内存区域中,用户可以从SQL缓冲区中重新调用、编辑或 运行最近输入的SQL语句。若要编辑SQL缓冲区中的最近一条SQL语句 或PL/SQL块,既可以在SQL*Plus环境中直接编辑,也可以使用EDIT 命令实现在记事本中编辑。EDIT命令用来编辑SQL缓冲区或指定磁盘 文件中的SQL语句或PL/SQL块,其语法格式如下。

EDIT [file_name[.ext]]

参数file_name表示要编辑的磁盘文件名。若在SQL*Plus中只输 入EDIT或者它的简写形式ED,而不指定file_name参数的值,则表示 编辑SQL缓冲区中的最近一条SQL语句或PL/SQL块。

执行EDIT命令后,SQL*Plus工具将打开一个包含SQL语句或 PL/SQL块的记事本,用户就可以在记事本环境下编辑SQL语句或 PL/SQL块。

技巧:如果要执行SQL缓冲区中最近一条SQL语句,可以使用运行命令“/”来执行,这样可以简化操作。

SAVE命令

该命令实现将SQL缓冲区中的最近一条SQL语句或PL/SQL块保存到一个文件中,其语法格式如下。

SAVE file_name

参数file_name表示要保存到的文件名,如果不为保存的文件指定路径,则该文件会保存在Oracle系统安装的主目录中(但不建议这样做)。如果不为保存的文件指定扩展名,则默认扩展名为SQL,即保存的文件为一个SQL脚本文件。

技巧:如果要清空SQL缓冲区中的内容,可以使用CLEAR BUFFER命令。

GET命令

该命令实现把一个SQL脚本文件的内容放进SQL缓冲区,其语法格式如下。

GET [FILE] file_name[.ext] [LIST | NOLIST]
  • file_name:要检索的文件名,如果省略了文件的扩展名,则默认文件的扩展名为SQL。
  • LIST:指定文件的内容加载到缓冲区时显示文件的内容。
  • NOLIST:指定文件的内容加载到缓冲区时不显示文件的内容。

执行GET命令时,如果file_name参数不包括被检索文件的路径, 则SQL*Plus工具会在Oracle系统安装的主目录下检索指定文件。在SQL*Plus找到指定文件后,会把文件中的内容加载到SQL*Plus缓冲区,并显示该文件的内容。

START和@命令

这两个命令都可以用来执行一个SQL脚本文件,它们的语法格式如下。

STA[RT] {url|file_name[.ext]} [arg ...]
@ {url|file_name[.ext]} [arg ...]
  • url:表示要执行的SQL脚本文件的路径。
  • file_name:表示包含SQL脚本的文件名。
  • arg:其他参数。

注意:上面的代码若使用“@ c:\emp.txt”命令可以得到同样的结果。

格式化查询结果

COLUMN命令

该命令可以实现格式化查询结果、设置列宽度、重新设置列标题等功能。其语法格式如下。

COL[UMN] [column_name | alias | option]
  • column_name:用于指定要设置的列的名称。
  • alias:用于指定列的别名,通过它可以把英文列标题设置为汉字。
  • option:用于指定某个列的显示格式,option选项的值及其说明如表所示。

image-20221201161511838

如果在关键字COLUMN后面未指定任何参数,则COLUMN命令将显示SQL*Plus环境中所有列的当前定义属性;如果在COLUMN后面指定某个列名,则显示指定列的当前定义属性。接下来将对表中的常用option选项值进行举例说明。

TTITLE和BTITLE命令

在SQL*Plus环境中,执行SQL语句后的显示结果在默认情况下包 括列标题、页分割线、查询结果和行数合计等内容,用这些默认的输出 信息打印报表,并不十分美观。如果能为整个输出结果设置报表头(即 头标题)、为每页都设置页标题和页码、为整个输出结果设置报表尾(如打印时间或打印人员),那么使用这样的输出结果打印报表一定非常美观。为了实现这些功能,SQL*Plus工具提供了TTITLE和BTITLE 命令,这两个命令分别用来设置打印时每页的顶部和底部标题。其中, TTITLE命令的语法格式如下。

TTI[TLE] [printspec [text|variable] ...] | [OFF|ON]
  • printspec:用来作为头标题的修饰性选项。printspec选项 的值及其说明如表所示。
  • text:用于设置输出结果的头标题(即报表头文字)。
  • variable:用于在头标题中输出相应的变量值。
  • OFF:表示禁止打印头标题。
  • ON:表示允许打印头标题。

image-20221201162057865

注意:BTITLE的语法格式与TTITLE的语法格式相同。如果在TTITLE或 BTITLE命令后没有任何参数,则显示当前的TTITLE或BTITLE的定义。