1、查看表结构:
1)describe 常用来查看表结构:
describe customers ;
但是通常可以简写为 :desc customers
2)编辑sql语句:
命令 说明
a[ppend] text 将 text 附加到当前行之后
c[hange]/old/new 将当前行中的old替换为new
cl[ear] buff[er] 清除缓存区中的所有行
del 删除当前行
del x 删除第 x 行(行号从 1 开始)
l[ist] 列出缓冲区中的所有的行
l[ist] x 列出第 x 行
r[un] 运行缓冲区中保存的语句
或 也可以使用 / 来运行缓冲区中保存的语句
/
x 将第 x 行作为当前行
append text 是在查询的内容后面的追加要重新进行查询的内容
3)保存、检索并运行文件
命令 说明
sav[e] filename 将sql*plus缓冲区的内容保存到由filename所指定的文件中。append选项说明将缓冲区中的内容追加到一个现有的文件
[{replace{append}}] 之后;replace选项说明覆盖一个现有文件
get filename 将filename所指定的的文件的内容读入sql*plus缓冲区中
sta[rt] filname 将有filname所制定的文件的内容读入sql*plus缓冲区中,然后试图运行缓冲区中的内容
@ filename 与start命令相同
ed[it] 将sql*plus缓冲区的内容复制到一个名为afiedt.buf的文件中,然后启动操作系统中默认的编辑器,
。在推出编辑器时,所编辑的文件将被复制到sql*plus缓冲区中。
ed[it] filename 与edit命令相同,但是可以指定要进行编辑的文件,它的文件名可以使用filename参数指定
spo[ol] filename 将sql*plus中输出的结果复制到filename所指定的文件中。
spo[ol] off 将sql*plus中的输出结果复制到filename所指定的文件中,并关闭该文件。
4)格式化列:(没有必要进行学习)
column命令用于格式化标题和列数据的显示格式。column命令的简化语法如下:
col[umn] {column | alias} [options]
· column 指定列名
· alias 指定要格式化的列的别名
· options 指定用于格式化列或者别名的一个或者多个选项
在column命令中,可以使用很多的选项:
选项 说明
for[amt] format 将列或者别名的显示格式设置为有format字符串指定的格式。
hea[ding] heading 将列或者别名的标题中的文本设置为由heading字符串指定的格式
jus[tify] 将列输出设置为左对齐、右对齐或者居中
[{left | center | right}]
wra[pped] 在输出结果中将一个字符串的末尾换行显示。该选项可能导致单个单词跨越多行。
wor[d_wrapped] 与wrapped选项类似,不同之处在于单个单词不能跨越两行
cle[ar] 清除列的任何格式化(将格式设置会默认)
5)使用变量:
变量在创建之后,可以再SQL语句中代替实际值使用。由于这些变量通常都用来代替值,因此被称为替代变量(substitution
variable),在SQL*PLUS中可以使用两种基本的变量类型:
· 临时变量: 只在使用它的SQL语句中有效,值不能保留
· 已定义变量: 已定义变量的值会一直保留到被显式地删除,重定义或者退出SQL*PLUS为止。
为什么变量非常的有用 ?
变量非常的有用是因为程序员可以使用变量创建一些不懂SQL语句的人也可以运行的脚本,这种脚本可以提示用户为变量
输入值,并在SQL语句中使用该值。
select customer_id , name , price
from customers
where customer_id = 1 ;
这个查询能够正常的进行,但是它只能检索出一个信息。如果能够不断地通过修改customer_id的值就源源不断的查找出
产品的信息。当然,通过使用变量这一手段就能够达到这样的效果。
【1】临时变量:
在SQL语句中,可以使用字符 & 定义临时变量,后面的跟上要定义的变量名。例如 &product_id_var 就定义了一个名为
product_id_var 的变量:
当运行下面的 select 语句时,SQL*PLUS就会提示用户为product_id_var 变量输入一个值,然后再select语句的
where子句中使用这个变量的值。如果 product_id_var 变量输入为 2 ,那么就会显示产品 #2 的详细信息:
select product_id , name , price
from products
where product_id = &product_id_var ;
***使用符号 / 可以重复不断地执行查询
(1)控制输出行:
原行和新行的输出可以使用 set verify 命令控制。如果输入 set verify off ,就会禁止显示原行和新行。
要重新显示这些行,输入 set verify on 命令。
(2) 修改变量定义字符:
set define 命令用于指定一个除字符 & 之外的字符,用来定义变量。下面的例子就显示了如何使用 set define
命令将变量定义字符设置为井号字符(#),并显示了一个新的 select 语句:
set define '#'
下面的这个例子使用 set define 命令将变量字符修改回字符 & :
set define '&'
(3)使用变量替换表明和列名
变量不但可以用来替换列值,还可以用来替换列名和表明。例如,下面这个查询定义了三个变量,分别需要输入一个
列名(col_var)和一个表名(table_var),以及一个列值(col_val_var):
select name , &col_var
from &table_var
where &col_var = &col_val_var ;
输入 col_var 的值: product_type_id
原值 1: select name , &col_var
新值 1: select name , product_type_id
输入 table_var 的值: products
原值 2: from &table_var
新值 2: from products
输入 col_var 的值: product_type_id
输入 col_val_var 的值: 1
原值 3: where &col_var = &col_val_var
新值 3: where product_type_id = 1
NAME PRODUCT_TYPE_ID
------------------------------ ---------------
Modern Science 1
Chemistry 1
*** && 用来防止重复输入一个变量。例如:
select name , &&col_var
from &table_var
where &&col_var = &col_val_var ;
【2】已定义变量:
在 SQL 语句中,可以再使用变量之前就对变量进行定义,在同一个SQL语句中还可以多次的使用这个变量。已定义变量会
一直保留到显式的将其删除、重定义或退出SQL*PLUS为止。
可以使用 define 命令定义变量。在使用完变量之后,可以使用 undefine 命令将其删除。本节还将会介绍 accept
命令,该命令可以定一个变量,同时为该变量指定一个数据类型。
(1)使用 define 命令定义并查看变量
define 命令既可以用来定义一个新的变量,也可以用来查看当前已经定义的变量。下面这个例子定义了一个名为
product_id_var的变量,并将其值设置为 7:
define product_id_var = 7 ;
使用 define 加上变量名就可以查看变量的定义。下面的这个例子就显示了 product_id_var 的定义:
define product_id_var ;
define product_id_var ;
DEFINE PRODUCT_ID_VAR = "7" (CHAR)
单独使用 define 命令 ,可以看到当前会话所有的变量
已定义变量可以用于指定一个元素,比如 SQL 语句中的一个列值。PS下面的这个查询使用了之前定义的变量
product_id_var,并且在where子句中引用该变量的值:
select product_id , name , price
from products
where product_id = & product_id_var ;
(2) 使用 accept 命令定义并设置变量:
accept 命令用于等待用户为变量输入一个值 。 accept 命令既可以将现有的变量设置为一个新值 , 也可以
定义一个新的变量,并使用一个值对该变量进行初始化。accept 命令还允许为变量指定数据类型 ,accept 命令的
简化语法如下所示:
accept variable_name [type] [FORMAT format] [PROMPT prompt] [HIDE]
其中:
· variable_name 指定了为变量分配的名字
· type 指定了变量的数据类型,可以使用的类型有char 、number 和 date。默认情况下,变量的类型为
char。date 类型的变量实际上也是以 char 变量储存的。
· fromat 指定变量的格式,例子包括A15(15个字符),9999(一个4位的数字)和 DD-MON-YYYY(日期)。
· HIDE 说明隐藏为变量输入的值。例如,用户可能希望隐藏密码或其他敏感信息。当输入字符时,隐藏值使
用星号(*)显示。
PS:
accept customer_id_var number format 99 prompt 'Customer id :' ;
(3) 使用 undefine 命令删除变量:
undefined 命令用于删除变量。
PS:
undefine customer_id_var ---------> 删除变量 customer_id_var
undifine date_var ---------> 删除变量 date_var
undifine password_var ---------> 删除变量 password_var
6) 创建简单报表:
(1)在脚本中临时使用变量:
下面的脚本 report.sql 在 select 语句的 where 子句中使用了一个名为 product_id_var的变量:
--suppress display of the statements and verification message
set echo off
set verify off
select product_id , name , price
from products
where product_id = &product_id_var ;
(2) 在脚本中使用已定义的变量:
下面的这个(名为report2.sql) 的脚本使用 accept 命令定义了一个名为product_id_var的变量:
set echo off
set verify off
accept product_id_var number format 99 prompt 'Enter product id:'
select product_id , name , price
from products
where product_id = &product_id_var ;
--clean up
undefine product_id_var
(3)向脚本中的变量添加值:
在运行脚本是可以向变量传递值。这样做时,必须使用一个数字来引用脚本中的变量。
下面这个脚本report3.sql就给出了这样一个例子;注意白能量被定义为 &1
set echo off
set verify off
select product_id , name , price
from products
where product_id = &1 ;
运行脚本时,需要在脚本后面提供变量的值 。
同时在脚本中我们也可以设置多个参数,下面的脚本 report4.sql 在脚本中设置了 &1 和 &2 两个参数。
set echo off
set verify off
select product_id_type , product_id , name , price
from products
where product_id_type = &1
and price > &2 ;
--clean up
undefine 1
undefine 2
(4) 添加页眉和页脚
title 和 btitle 命令可以用来向报表中添加页眉和页脚 。下面地这个脚本report5.sql
就显示了这样一个例子:
title 'Product Report'
btitle 'Thanks for running the report'
set echo off
set verify off
set pagesize 300
set linesize 300
clear columns
column product_id heading id format 99
column name heading 'Product Name' format a20 word_wrapped
column description heading description heading description format a30 word_wrapped
column price heading price format $99.99
select product_id , name , description , price
from products ;