您的位置:首页 > 数据库 > Oracle

Oracle PL/SQL自学(二):常用的SQL*PLUS命令

2020-05-06 04:30 1296 查看

1.回顾

前篇整理了一些PL/SQL的相关概念,对PL/SQL这一结构性编程语言有了基本的了解,本篇开始学习一些SQLPLUS的常用基本命令,为后续的PL/SQL编程做准备。
前文链接:
Oracle PL/SQL自学(一):初识PL/SQL

2.常用命令

2.1 DESC[RIBE]命令
功能:查询表结构;
示例:

SQL> DESC emp

2.2 SET LINE[SIZE] n 和SET PAGESIZE n命令
功能:设置显示屏的显示输出宽度/行数,默认值分别为80/14;
示例:

SQL> SET LINE 100
SQL> SET PAGESIZE 30

2.3 L命令和n text命令
功能:L 显示缓存区内容;n text 使用text替代第n行的内容;
示例:

SQL> L
1  SELECT JOB
2* FROM emp
SQL> 1 SELECT SAL
SQL> L
1  SELECT SAL
2* FROM emp

2.4 “/”命令
功能:执行缓存区语句;
示例:

SQL> SELECT * FROM emp
/**
emp表内容
**/
SQL> /
/**
emp表内容
**/

2.5 n命令和A[PPEND]命令
功能:n 设置当前行;A[PPEND] text 在当前行后追加text;
示例:

SQL> L
1  SELECT JOB
2* FROM emp
SQL> 1---------------------------------------设置当前行1
SQL> L
1* SELECT JOB
2  FROM emp
SQL> A ,SAL,ENAME----------------------------在行1后追加内容 ,SAL,ENAME
SQL> L
1* SELECT JOB,SAL,ENAME
2  FROM emp

2.6 DEL 命令
功能:删除行;
示例:

SQL> l
1  SELECT job,sal
2  FROM emp
3  WHERE sal>2800
4* ORDER BY job,sal DESC
SQL> DEL 4
SQL> L
1  SELECT job,sal
2  FROM emp
3* WHERE sal>2800

2.7 C[HANGE] 命令
功能:使用新的正文替代原文;
示例:

SQL> L
1  SELECT job,sal
2  FROM emp
3* WHERE sal>2800
SQL> 1
1* SELECT job,sal
SQL> C /job/ename
1* SELECT ename,sal
SQL> l
1  SELECT ename,sal
2  FROM emp
3* WHERE sal>2800

2.8 SAVE 命令
功能:将缓存区的语句存入脚本文件;
示例:

SQL> SAVE G:\Oracle\sql\test
已创建 file G:\Oracle\sql\test.sql

2.9 GET 命令
功能:将指定脚本文件的内容装入缓冲区;
示例:

SQL> l
1  select job,ename
2  FROM emp
3* WHERE sal>2800
SQL> GET G:\Oracle\sql\test
1  SELECT ename,sal
2  FROM emp
3* WHERE sal>2800
SQL> l
1  SELECT ename,sal
2  FROM emp
3* WHERE sal>2800
SQL>

2.10 @ 命令
功能:直接运行脚本;
示例:

SQL> @G:\Oracle\sql\test

ENAME             SAL
---------- ----------
JONES            2975
BLAKE            2850
SCOTT            3000
KING             5000
FORD             3000

SQL>

2.11 SPOOL 命令
功能:导出显示内容;
示例:

SQL> SPOOL G:\Oracle\sql\info-----------------------------开始记录
SQL> SPOOL OFF--------------------------------------------结束记录

2.12 HELP xx 命令
功能:获取如何使用命令xx的信息,help index可列出所有命令;

2.13 show all 命令
功能:查询所有的参数设置;

3.利用AUTOTRACE追踪SQL语句

SQL*PLUS本身就内置了追踪SQL语句的功能,可以通过设置autotrace参数来开关这一功能。

SQL> show autotrace
autorace OFF
SQL> set autotrace ON
SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色
SP2-0611: 启用 STATISTICS 报告时出错

之所以出现这个问题是因为PLUSTRACE角色没有授予当前用户,或者是没有创建PLUSTRACE角色。
要解决这个问题,执行如下语句即可:

SQL> conn / as sysdba
SQL> @G:\oracle\product\10.2.0\db_1\sqlplus\admin\plustrce.sql

然后autotrace就能正常开启了。

SQL> set autotrace ON
SQL>

问题解决。

以下是plustrace.sql的内容:

--
-- Copyright (c) Oracle Corporation 1995, 2002.  All Rights Reserved.
--
-- NAME
--   plustrce.sql
--
-- DESCRIPTION
--   Creates a role with access to Dynamic Performance Tables
--   for the SQL*Plus SET AUTOTRACE ... STATISTICS command.
--   After this script has been run, each user requiring access to
--   the AUTOTRACE feature should be granted the PLUSTRACE role by
--   the DBA.
--
-- USAGE
--   sqlplus "/ as sysdba" @plustrce
--
--   Catalog.sql must have been run before this file is run.
--   This file must be run while connected to a DBA schema.

set echo on

drop role plustrace;
create role plustrace;

grant select on v_$sesstat to plustrace;
grant select on v_$statname to plustrace;
grant select on v_$mystat to plustrace;
grant plustrace to dba with admin option;

set echo off

随意执行一个查询语句

SQL> set autotrace traceonly explain-------------------只显示执行计划
SQL> select job,ename from emp;
执行计划
----------------------------------------------------------
Plan hash value: 3956160932

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    14 |   196 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| EMP  |    14 |   196 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------

Time是衡量系统效率的重要指标。关于autotrace,在本文中只做粗浅了解,如何使用这个功能来实现对SQL的优化,会放到后面来讨论。

参考:https://docs.oracle.com/cd/B10500_01/server.920/a96533/autotrac.htm

4.Q&A

4.1 Q:何如编辑脚本文件?
A:(1)通过ed直接进行编辑;

SQL> ed G:\Oracle\sql\test
(2)GET指令先将文件内容存入缓存,再使用C、A、n、DEL等指令进行修改,最后SAVE;
SQL> GET G:\Oracle\sql\test
SQL> /*修改缓存区内容*/
SQL> SAVE G:\Oracle\sql\test
已创建 file G:\Oracle\sql\test.sql
m0_37868329 原创文章 4获赞 0访问量 216 关注 私信
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: