第2章 SQL*Plus用法指南
在第1章中我们介绍了SQL的基本用法。SQL是一种命令式的语言,它是用户操作数据库的最重要的一种方式。SQL语句在执行时,需要有一个执行环境。开发人员在开发软件时,最终的结果是形成一个应用程序。在应用程序中可以嵌入SQL语句,利用这些SQL语句可以访问数据库。这时应用程序作为数据库服务器的客户,与数据库服务器以客户/服务器模式工作。把SQL语句嵌入到应用程序中的好处是使最终用户无需了解SQL的工作原理,也不需要知道SQL命令的使用方法,只要能够正确操作应用程序,就能够与数据库服务器进行交互。
然而对于数据库管理员,应用程序远远不能达到他们的目的,访问数据库最直接的方式是利用数据库软件提供的实用程序。Oracle提供了一个功能强大的实用工具—SQLPlus。SQLPlus是Oracle提供的一个客户端工具,也是远程客户访问数据库的一种重要途径。在SQLPlus中可以执行任一条SQL语句,可以执行一个PL/SQL块,也可以执行SQLPlus本身的命令,而且几乎所有的管理任务都可以在SQL*Plus中完成。
2.1 SQL*Plus的基本用法
如果要使用SQLPlus与数据库服务器进行交互,首先要登录到数据库服务器上,这时在SQLPlus进程和数据库服务器之间将建立一条连接,它们以客户/服务器模式工作。
2.1.1 登录与退出
启动SQLPlus的命令是sqlplus,在操作系统提示符下输入sqlplus,系统将显示版本、日期、版权等信息,然后提示用户输入用户名和口令。如果输入正确,则在SQLPlus和数据库服务器之间将建立一条连接,并显示服务器的信息,最后出现SQL*Plus的提示符“SQL>”,在这个提示符下就可以输入需要执行的命令了。例如:
$sqlplus
SQL*Plus:Release 11.2.0.1.0 Production on Sun Apr 11 16:21:57 2010
Copyright(c)1982,2009,Oracle.All rights reserved.
请输入用户名:scott
请输入口令:*
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0-64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
如果以sys用户身份登录,在用户名之后还应该指定身份“as sysdba”或“as sysoper”。例如:
$sqlplus
SQL*Plus:Release 11.2.0.1.0 Production on Sun Apr 11 16:21:57 2010
Copyright(c)1982,2009,Oracle.All rights reserved.请
输入用户名:sys as sysdba
请输入口令:*
连接到:
启动SQL*Plus时,还可以在sqlplus命令之后直接指定用户名和口令,这时系统将不再提示输入用户名和口令,而是直接登录到数据库服务器。格式是:用户名/口令。例如:
$sqlplus scott/tiger
$sqlplus sys/1234 as sysdba
如果在一台计算机上安装了多个数据库服务器,为了登录到正确的数据库,在进入SQL*Plus之前,先要设置环境变量ORACLE_SID,将其值设置为要登录的数据库。例如:
c:\>SET ORACLE_SID=ORCL
如果数据库服务器运行在UNIX下,通过以下方式设置环境变量:
ORACLE_SID:$ORACLE_SID=ORCL
$export ORACLE_SID
在默认情况下,SQLPlus和Oracle服务器位于同一台计算机上,启动SQLPlus时,它将自动登录到本机的数据库服务器上。如果SQL*Plus和Oracle服务器不在同一台计算机上,在登录时还要指定所使用的网络服务名。例如:
C:\>sqlplus scott/tiger@netsvr
其中netsvr是已经定义的网络服务名。这时SQL*Plus和Oracle服务器将通过Oracle Net进行通信。
无论采用哪种登录方式,登录成功后将出现SQLPlus的提示符“SQL>”。SQLPlus是一个基于字符界面的工具,所有的命令都需要手工输入。在提示符之后输入的命令以分号结束。如果命令太长,可以输入回车,在换行之后继续输入,这时在每行之前将自动出现当前的行号。在命令的最后输入分号,然后回车,这条命令将提交给数据库服务器执行。需要注意的是,分号并不是SQL命令的一部分,而是一条SQL命令结束的标志。例如:
SQL>SELECT empno, sal
2 FROM emp
3 WHERE deptno=10;
退出SQLPlus时,在提示符之后输入命令QUIT或EXIT即可。如果要在不退出SQLPlus的情况下断开与数据库服务器的连接,则输入DISCONNECT命令。如果要重新连接,或者在已经连接的情况下以另一个用户的身份连接,则使用CONNECT命令。这条命令的格式为:
CONNECT用户名/口令as sysdba
如果是SYS用户,则使用“as sysdba”或者“as sysoper”参数。如果是远程登录,还要在用户名和口令之后输入网络服务名。
在SQLPlus中还可以执行操作系统命令。host命令使得用户可以在不退出SQLPlus的情况下执行操作系统命令。在SQLPlus提示符下执行host命令后,将进入操作系统提示符,在这里可以执行操作系统命令。在操作系统提示符下输入exit命令,将返回SQLPlus。
SQLPlus的UNIX版本还提供了一个“!”命令,它使得用户可以在SQLPlus提示符下直接执行UNIX命令。UNIX命令执行结束后重新显示SQL*Plus提示符。例如:
SQL>!vi/etc/host.conf