Oracle:使用SQL*Plus

一.查看表结构

DESC test;

二.编辑sql语句
A[PPEND] text :将text附加到当前行之后
C[HANGE]/old/new:将当前行中的old替换成new
CL[EAR]BUFF[ER]:清除缓冲区中的所有行
DEL:删除当前行
DEL x:删除第X行
L[IST]:列出缓冲区中所有的行
L[IST] x:列出第X行
R[UN]或/:运行缓冲区中保存的语句
x:将第X行作为当前行
例子:

SQL>1 --显示第一行
结果:select id
SQL>APPEND ,id_type --添加id_type列
结果:select id,id_type
SQL>LIST --显示缓冲区中的所有行
结果:select id,id_type
            from test
            where id = 1;
SQL>CHANGE/id = 1/id = 2
结果: where id = 2;
SQL>RUN --运行缓冲区的所有行 也可以使用/
结果:select id,id_type
            from test
             where id = 2;
id     id_type
---------------
2       01

三.保存检索、并运行文件
SAV[E] filename[{REPLACE|APPEND}] :将SQL*Plus缓冲区的内容保存到由filename指定的文件中。append选项说明在将缓冲区中的内容追加到一个现有的文件之后;replace选项说明覆盖一个现有的文件

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指定的文件中,并关闭该文件
例子:

SQL>select id, id_type 
from test 
where id = 1;

1:保存sql到test_query.sql中 ,在运行这个例子前,请先在c盘创建sql_files

环境:windows环境

SQL>SAVE C:\sql_files\test_query.sql 

环境:Linux环境

SQL>SAVE /sql_files/test_query.sql

2:检索test_query.sql中的内容
环境:windows环境

SQL>GET C:\sql_files\test_query.sql 
select id, id_type 
from test 
where id = 1;

环境:Linux环境

SQL>GET /sql_files/test_query.sql

3:使用/进行查询此查询:

SQL>/
结果:

id id_type
------------
1 01

4:使用START进行加载并查询:
环境:windows环境

SQL>START C:\sql_files\test_query.sql 

结果:
id id_type
------------
1 01

环境:Linux环境

SQL>START /sql_files/test_query.sql

5:EDIT启动默认的编辑器,windows中默认编辑器时notepad,linux和unix中默认编辑器是ed。

SQL>EDIT
--在编辑器中修改sql

修改为
select id, id_type 
from test 
where id = 2;

SQL>/
id id_type
------------
2 01

6:spool将SQL*Plus的输出结果复制到文件中。

SQL>SPOOL C:\sql_files\test_results.txt
SQL>SPOOL OFF

四.设置显示格式与设置页面显示大小

1:格式化列与清除格式化:
格式化COL[UMN] {column | alias} [options]

column :列名
alias:指定要格式化的列的名称。
options:指定用于格式化列或别名的一个或多个选项

例如:

SQL>COLUMN id_type FORMAT A1 WORD_WRAPPED

SQL>select id,id_type 
from test
where id = 1

id id_type
-------------
1 0
1

清除格式化
清除某一列的格式化

SQL>COLUMN id CLEAR

清除所有的格式化

SQL>COLUMN CLEAR

2:设置页面大小(默认为14,最大为50000)

使用SET PAGESIZE

SQL>SET PAGESIZE 1
SQL>/
id id_type
-------------
1 01

3:设置行大小(默认为80,最大为32767)

使用SET LINESIZE

SQL>SET LINESIZE 10
SQL>/
id id_type
-------------
1 01

五.变量

1:临时变量
使用&字符定义临时变量,后面跟上要定义的变量名

SQL>select id,id_type 
from test
where id = &v_id;

Enter value for v_id : 1
old 3: where id = &id
new 3: where id = 1
id id_type
-----------
1 01

1.1.控制输出行:
禁止显示旧行和新行

SQL>SET VERIFY OFF
SQL>/

结果:
id id_type
-----------
1 01

1.2**改回&**

SQL>SET DEFINE '&'

1.3.使用变量替换表名和列名

SQL>select id,&id_type 
from &test
where &id_type = &v_val;

Enter value for &id_type : id_type
old 1: select id,&id_type 
new 1: select id,id_type 
Enter value for &test : test
old 2: from &test 
new 2: from test
Enter value for &id_type : id_type
Enter value for &v_val : 01
old 3: where &id_type = &v_val
new 3: where id_type = '01'

id id_type
-----------
1 01
2 01

使用&&可以避免重复输入变量

SQL>select id,&&id_type 
from &test
where &&id_type = &v_val;

Enter value for &&id_type : id_type
old 1: select id,&&id_type 
new 1: select id,id_type 
Enter value for &test : test
old 2: from &test 
new 2: from test
Enter value for &v_val : 01
old 3: where &&id_type = &v_val
new 3: where id_type = '01'

id id_type
-----------
1 01
2 01

2:已定义变量
在同一条SQL语句中可以多次使用这个变量,已定义变量会一直保留,知道显式地将其删除、重定义或退出SQL*Plus为止。

DEFINE 定义变量
ACCEPT 定义并设置变量
UNDEFINE 删除变量

2.1.DEFINE :定义并查看变量

SQL>DEFINE v_id_type = '01'
SQL>DEFINE v_id_type
DEFINE V_ID_TYPE = '01';
--查看当前会话的所有变量
SQL>DEFINE
DEFINE V_ID_TYPE = '01';

--指定元素
SQL>select id,id_type 
from test
where id_type = &v_id_type;

old 3: where id_type = &v_id_type
new 3: where id_type = '01'
id id_type
-----------
1 01
2 01

2.2.ACCEPT :定义并设置变量
用于等待用户为变量输入值。
ACCEPT命令既可以将现有的变量设置为新值,也可以定义新变量,并使用值对新变量进行初始化。还允许为变量指定数据类型。

SQL>ACCEPT v_id NUMBER FORMAT 99 PROMPT 'id:'
id: 1

隐藏输入的值

SQL>ACCEPT v_password CHAR PROMPT 'Password: ' HIDE
Password:

输入时什么也不显示

日期

SQL>ACCEPT v_date DATE PROMPT 'DD-MON-YYYY' PROMPT 'Date: ' 
Date: 02-OCT-2017

2.3.UNDEFINE:删除变量 (如果不显示删除,也会在SQL*Plus退出时全部被删除)

SQL>UNDEFINE v_id_type

六.简单报表

1.在脚本中使用临时变量

SET ECHO OFF --禁止SQL*Plus显示脚本中的sql语句和命令
SET VERIFY OFF --禁止显示验证消息

select id,id_type 
from test
where id = &v_id;


然后通过@ C:\sql\report1.sql 运行命令
SQL>@ C:\sql\report1.sql
Enter value for v_id: 1
id id_type
----------
1 01

2.在脚本中使用已定义变量

SET ECHO OFF --禁止SQL*Plus显示脚本中的sql语句和命令
SET VERIFY OFF --禁止显示验证消息

ACCEPT v_id NUMBER FORMAT 99 PROMPT 'Enter id: '

select id,id_type 
from test
where id = &v_id;

--clean up
UNDEFINE v_id

SQL>@ C:\sql\report2.sql
Enter id: 1
id id_type
----------
1 01

七.获取帮助信息

SQL>HELP
SQL>HELP INDEX
SQL>HELP EDIT

你可能感兴趣的:(oracle)