第二章 SQL*Plus基础
1.SQL * Plus概念
是Oracle允许输入和执行SQL语句以及PL/SQL块的交换工具,能够运行脚本语言,生成简单的报表以格式化地方式输出。
利用SQL*Plus可以查询数据字典,DML、DDL、DCL都是SQL*Plus,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。
2.登陆SQL * Plus
登陆:运行——cmd——cd\——sqlplus "用户名/密码 as sysdba"
退出:exit
帮助命令:help index;
mount:???
3.基本查看命令
查看三种文件内容:
查看控制文件:select * from v$controlfile;
查看数据文件:select * from V$datafile
查看日志文件:select * from V$log(V$logfile)
查看数据字典:select * from dict
查看内部系统表:select * from V$fixed_view_definition
查看当前用户下的系统用户表:select * from user_talbes;
4.基本执行命令
(1).对当前的输入进行编辑
SQL>select * from V$log;
SQL>edit(进入文本编辑器对当前的sql语句进行编辑并保存)
SQL>/(执行编辑后的sql语句)
(2).执行一个SQL脚本文件
SQL>start file_name
SQL>@ file_name
我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。
@与@@的区别是什么?
@等于start命令,用来运行一个sql脚本文件。
@命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。该命令使用是一般要指定要执行的文件的全路径,否则从缺省路径(可用SQLPATH变量指定)下读取指定的文件。
@@用在sql脚本文件中,用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下,而不用指定要执行sql脚本文件的全路径,也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件,该命令一般用在脚本文件中。
如:在c:\temp目录下有文件start.sql和nest_start.sql,start.sql脚本文件的内容为:
@@nest_start.sql - - 相当于@ c:\temp\nest_start.sql
则我们在sql*plus中,这样执行:
SQL> @ c:\temp\start.sql
(3).将显示的内容输出到指定文件
SQL> SPOOL file_name (在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。)
(4).关闭spool输出
SQL> SPOOL OFF (只有关闭spool输出,才会在输出文件中看到输出的内容。)
(5).COL命令:
主要格式化列的显示形式。
该命令有许多选项,具体如下:
COL[UMN] [{ column|expr} [ option ...]]
Option选项可以是如下的子句:
ALI[AS] alias
CLE[AR]
FOLD_A[FTER]
FOLD_B[EFORE]
FOR[MAT] format
HEA[DING] text
JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
LIKE { expr|alias}
NEWL[INE]
NEW_V[ALUE] variable
NOPRI[NT]|PRI[NT]
NUL[L] text
OLD_V[ALUE] variable
ON|OFF
WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
1). 改变缺省的列标题
COLUMN column_name HEADING column_heading
For example:
Sql>select * from dept;
DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
sql>col LOC heading location
sql>select * from dept;
DEPTNO DNAME location
10 ACCOUNTING NEW YORK
(6).L(List)查看缓存中的SQL语句
SQL>L2 4 * from dept //从dept表中选出2到4行的记录
SQL>/ //在缓存区中以“/”表示执行命令
(7).删除行
Del 4 //删除第4行
Del 2 3 //删除2 3行
(8). 保存命令
SQL>Save c:oracle\text.txt //保存SQL语句
SQL>@ c:oracle\text.txt //打开SQL语句@等于start用来运行一个sql脚本文件
SQL>get c:oracle\text.txt //查看不执行