SQL*PLUS的使用
1.查看表结构
DESCRIBE TABLENAME
DESC TABLENAME
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] | 运行缓冲区中保存的语句 |
/ | 等同于RUN |
x | 将第x行作为当前行 |
3.保存、检索并运行文件
SAV[E] filename [{REPLACE | APPEND}] | 将Sql*Plus缓冲区的内容保存到由filename指定的文件中。APPEND选项说明将缓冲区中的内容追加到一个现有文件之后;APPLACE说明覆盖现有的文件。 |
---|---|
GET filename | 将filename指定的文件的内容读入SQL*PLUS缓冲区 |
STA[RT] filename | 将filename指定的文件的内容读入SQL*PLUS缓冲区,然后运行缓冲区中的内容 |
@filename | 与START命令相同 |
ED[IT] | 将SQL/PLUS缓冲区的内容复制到一个临时文件中,然后启动操作系统中默认的编辑器,在退出编辑器时,所编辑的文件内容将被复制到SQL*PLUS缓冲区中。 |
ED[IT] filename | 与EDIT命令相同,但是可以指定要编辑的文件,使用filename参数指定文件名 |
SPO[OL] filename | 将SQL*PLUS中的输出结果复制到filename指定的文件,复制时从SPOOL命令后面开始,并在SPOOL OFF命令处结束 |
SPO[OL] OFF | 停止将SQL*PLUS中的输出结果复制到filename指定的文件中,并关闭该文件 |
4.变量的使用
变量被创建后,可以在SQL语句中替代实际值使用。由于这些变量通常都用来替代值,因此也被称为替换变量(substitution variable)。在运行SQL语句时为变量输入值,就会在SQL语句中将变量替换为这些值。
替换变量有两种类型:
- 临时变量 temporary variable
- 已定义变量 defined variable,一直保留,知道被显式的删除、重定义或退出SQL*PLUS为止
4.1临时变量
使用字符&定义临时变量,后面跟上要定义的变量名。
例如,&v_acct_id就定义了一个名为v_acct_id的变量。
SQL> SELECT ACCT_ID, NAME, ADDRESS
2 FROM S_CORP_ACCT
3 WHERE ACCT_ID = &V_ACCT_ID;
Enter value for V_ACCT_ID: 2
old 3: WHERE ACCT_ID = &V_ACCT_ID
new 3: WHERE ACCT_ID = 2
如果使用斜线字符(/)再次运行查询,SQL*Plus就是提示要为V_ACCT_ID变量输入一个新值。
4.1.1 控制输出行
--旧行和新航的输入可以使用SET VERIFY命令控制。如果输入SET VERIFY OFF,就会禁止显示旧行和新行。
SQL> SET VERIFY OFF
SQL> /
Enter value for v_acct_id: 4
SET VERIFY ON
4.1.2 修改变量定义符
SET DEFINE命令用于指定一个除&之外的字符,用来定义变量。
下面这个例子将使用SET DEFINE命令将变量定义符设置为井号字符(#).
SQL> SET DEFINE '#'
SQL> SELECT ACCT_ID, NAME, ADDRESS
2 FROM S_CORP_ACCT
3 WHERE ACCT_ID = #V_ACCT_ID;
Enter value for V_ACCT_ID: 3
old 3: WHERE ACCT_ID = #V_ACCT_ID
new 3: WHERE ACCT_ID = 3
SQL> SET DEFINE '&'
4.1.3 使用变量替换表名和列名
变量不但可以用来替换列值,还可以用来替换表名和列名。
SQL> SELECT NAME,&V_COL
2 FROM &V_TABLE
3 WHERE &V_COL = &V_VALUE
Enter value for V_COL: acct_id
# The 1st line
Enter value for V_TABLE: S_CORP_ACCT
# The 2nd line
Enter value for V_COL: ACCT_ID
Enter value for V_VAL: 1
# The last line
##使用&&可以避免重复输入变量
SQL>SELECT NAME,&&V_COL
2 FROM &V_TABLE
3 WHERE &&V_COL = &V_VAL;
4.2 已定义变量
在SQL语句中,使用变量前对其进行定义;在同一条SQL语句中还可以多次使用这个变量。知道被显式的删除、重定义或退出SQL*PLUS为止。
可以使用DEFINE命令定义变量。使用完滞后,可以使用UNDEFINE命令将其删除。
ACCEPT命令:可以定义变量,同时为变量指定数据类型
4.2.1 使用DEFINE命令定义并查看变量
DEFINE命令既可以用来定义新变量,也可以用来查看当前已经定义的变量
SQL> DEFINE V_ACCT_ID = 7
使用DEFINE命令加上变量名就可以用来查看变量的定义
SQL> DEFINE V_ACCT_ID
define v_ACCT_ID = "7"(CHAR)
单独输入DEFINE命令,可以看到当前会话的所有变量。
SQL> DEFINE
DEFINE _DATE = "06-MAY-12"(CHAR)
DEFINE _CONNECT_IDENTIFIER ="orcl"(CHAR)
DEFINE _USER = "STORE"(CHAR)
DEFINE _PRIVILEGE =""(CHAR)
DEFINE _SQLPLUS_RELEASE ="1201000001"(CHAR)
DEFINE _EDITOR ="vi"(CHAR)
DEFINE _O_RELEASE = "1201000001" (CHAR)
DEFINE 1 = "employee_id"(CHAR) DEFINE 2 = "=" (CHAR)
DEFINE 3 ="1"(CHAR)
DEFINE _RC = "0" (CHAR)
DEFINE V_STATEMENT_ID = "NO_HINT"(CHAR)
DEFINE V_CoL = "product_type_id"(CHAR) DEFINE V_PRODUCT_ID = b "7"(CHAR)