Oracle:使用SQL*Plus

来源:互联网 发布:autodesk公司的软件 编辑:程序博客网 时间:2024/05/18 18:54

一.查看表结构

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 idSQL>APPEND ,id_type --添加id_type列结果:select id,id_typeSQL>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.txtSQL>SPOOL OFF

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

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

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

例如:

SQL>COLUMN id_type FORMAT A1 WORD_WRAPPEDSQL>select id,id_type from testwhere id = 1id id_type-------------1 01

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

SQL>COLUMN id CLEAR

清除所有的格式化

SQL>COLUMN CLEAR

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

使用SET PAGESIZE

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

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

使用SET LINESIZE

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

五.变量

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

SQL>select id,id_type from testwhere id = &v_id;Enter value for v_id : 1old 3: where id = &idnew 3: where id = 1id id_type-----------1 01

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

SQL>SET VERIFY OFFSQL>/结果:id id_type-----------1 01

1.2**改回&**

SQL>SET DEFINE '&'

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

SQL>select id,&id_type from &testwhere &id_type = &v_val;Enter value for &id_type : id_typeold 1: select id,&id_type new 1: select id,id_type Enter value for &test : testold 2: from &test new 2: from testEnter value for &id_type : id_typeEnter value for &v_val : 01old 3: where &id_type = &v_valnew 3: where id_type = '01'id id_type-----------1 012 01

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

SQL>select id,&&id_type from &testwhere &&id_type = &v_val;Enter value for &&id_type : id_typeold 1: select id,&&id_type new 1: select id,id_type Enter value for &test : testold 2: from &test new 2: from testEnter value for &v_val : 01old 3: where &&id_type = &v_valnew 3: where id_type = '01'id id_type-----------1 012 01

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

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

2.1.DEFINE :定义并查看变量

SQL>DEFINE v_id_type = '01'SQL>DEFINE v_id_typeDEFINE V_ID_TYPE = '01';--查看当前会话的所有变量SQL>DEFINEDEFINE V_ID_TYPE = '01';--指定元素SQL>select id,id_type from testwhere id_type = &v_id_type;old 3: where id_type = &v_id_typenew 3: where id_type = '01'id id_type-----------1 012 01

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

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

隐藏输入的值

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

输入时什么也不显示

日期

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 testwhere id = &v_id;然后通过@ C:\sql\report1.sql 运行命令SQL>@ C:\sql\report1.sqlEnter value for v_id: 1id 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 testwhere id = &v_id;--clean upUNDEFINE v_idSQL>@ C:\sql\report2.sqlEnter id: 1id id_type----------1 01

七.获取帮助信息

SQL>HELPSQL>HELP INDEXSQL>HELP EDIT
原创粉丝点击