SQL PLUS与Oracle数据库的交互
一、SQL Plus与数据库的交互
可以 使用2种基本类型的命令与数据库进行交互:
服务器执行的命令:SQLQ命令(以;结束)和PL/SQL程序块(以/结束)
本地命令:SQL Plus命令
二、设置SQL Plus的运行环境
1.使用SET命令,可以设置图中项
2.语法
SET system_variable value
3.常用设置项
①SET PAGSIZE value设置从顶部标题至页结束之间的行数
②SET LINESIZE value设置一行所显示的最多字符数
③SET NEWPAGE value设置页与页的间隔,默认为一行
④SET PAUSE value设置结果是否滚动显示,value可取范围有ON/OFF/TEXT
=>注意,在sql plus客户端输入set命令做的设置是临时生效的,也就是说,你关掉sqlplus再打开,就又恢复到初始值了,要永久生效的话怎么操作呢
可以编辑D:\oracle\sqlplus\admin\glogin.sql文件,将SET命令写在里面,重启生效
三、SQL Plus管理命令
1.HELP命令
帮助,提示。
语法为HELP|?[topic],如HELP SHOW 等效于?SHOW
2.DESCRIBE
描述表、视图、索引等结构(字段名、是否为空、类型)
两种语法①为 desc objectname,如desc emp,需要单独执行该命令
SQL> desc emp
名称 是否为空? 类型
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------- --------------------------------------------------------------------------------------------------------------------
EMPNO
NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
②#desc objectname,适用于什么场景呢=>比如sql写一半,忘记字段名了,使用该命令可以查询 且不影响当前在编写的sql
SQL> select empno
2 #desc emp
名称 是否为空? 类型
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------- --------------------------------------------------------------------------------------------------------------------
EMPNO
NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
2 ,ename from emp;
EMPNO ENAME
---------- --------------------
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
7788 SCOTT
7839 KING
7844 TURNER
已选择 10 行。
3.SPOOL命令
将输出的结果写入到某个文件种
语法为 SPOOL [filename[CREATE|REPLACE|APPEND|OFF|OUT]] 创建|替换|引用|关闭输出|打印
SPOOL OFF和SPOOL OUT的区别:
OFF是关闭输出
OUT=OFF+PRINT
SQL> SPOOL E:\我的01文档\emp.txt
SQL> select empno,ename,sal,job from emp where job='SALESMAN';
EMPNO ENAME SAL JOB
---------- -------------------- ---------- ------------------
7499 ALLEN 1600 SALESMAN
7521 WARD 1250 SALESMAN
7654 MARTIN 1250 SALESMAN
7844 TURNER 1500 SALESMAN
SQL> spool off
--注意要关闭spool才能在txt里看到输出的内容
四、常用SQL Plus命令
1.编辑EDIT
ED filename[.ext]
SQL> ed E:\我的01文档\emp.txt
2.保存SAVE/EDIT
①SAVE用于将sql缓冲区最近一条sql保存到某个文件种
语法为SAVE file_name
SQL> select * from dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
40 OPERATIONS BOSTON
20 RESEARCH DALLAS
30 SALES CHICAGO
SQL> save E:\我的01文档\dept
已创建 file E:\我的01文档\dept.sql
SQL> clear buffer
buffer 已清除
SQL> save E:\我的01文档\dept
SP2-0107: 无须保存。
SQL>
3.运行命令
①命令行方式:sql命令后面加;
②SQL缓冲区方式
run或/
SQL> run
1* select * from dept
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
40 OPERATIONS BOSTON
20 RESEARCH DALLAS
30 SALES CHICAGO
SQL> /
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
40 OPERATIONS BOSTON
20 RESEARCH DALLAS
30 SALES CHICAGO
SQL>
③命令文件方式
------start命令 只能在sqlplus中运行
start{url|file_name}
------@命令既能在sqlplus中运行又能在命令行中运行
SQL> start E:\我的01文档\dept.sql
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
40 OPERATIONS BOSTON
20 RESEARCH DALLAS
30 SALES CHICAGO
SQL> @ E:\我的01文档\dept.sql
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
10 ACCOUNTING NEW YORK
40 OPERATIONS BOSTON
20 RESEARCH DALLAS
30 SALES CHICAGO
@命令在命令行中运行示例如下