第3章SQL*Plus环境



















学习目标

 了解SQL*Plus 环境设置。

 掌握常用的SQL*Plus命令。

 熟悉SCOTT用户下的表。


SQL是数据库查询语言。Oracle提供了一个被称为SQL*Plus的工具,这是一个SQL的使用环境。利用此工具,既可以执行标准的SQL语句和特定的Oracle数据库管理命令,也可以编写应用程序模块。SQL*Plus是数据库管理员和开发人员最常使用的工具。



视频讲解


视频讲解

 3.1SQL*Plus命令和环境设置
3.1.1SQL*Plus命令

在登录和使用SQL*Plus的同时,要以数据库用户的身份连接某个数据库实例。在Oracle数据库创建过程中,选择通用目的安装,会创建一个用于测试和练习目的的账户——SCOTT。其中保存了一些数据库的实例,主要的两个表是雇员表EMP和部门表DEPT,通过登录SCOTT账户就可以访问这些表。

SCOTT账户的默认口令是TIGER。

假定Oracle数据已经安装在局域网的一台基于Windows操作系统的服务器上,服务器的名称为ORACLE,数据库实例的名称为ORCL。管理客户端和开发工具安装在其他基于Windows操作系统的客户机上,并且该机器通过网络能够访问到Oracle数据库服务器。这时,就可以使用管理客户端中的SQL*Plus工具进行登录了。登录前一般要由管理员使用
Oracle的网络配置工具创建一个网络服务名,作为客户端连接名。为了方便记忆,连接名可以与数据库实例名相同。假定创建的网络连接服务名为ORCL。

Oracle数据库的很多对象都是属于某个模式的,模式对应于某个账户,如SCOTT模式对应的SCOTT账户。我们往往不对模式和账户进行区分。数据库的表是模式对象中的一种,是最常见和最基本的数据库模式对象。一般情况下,如果没有特殊的授权,用户只能访问和操作属于自己的模式对象。比如以SCOTT账户登录时,只能访问属于SCOTT模式的表。因此,以不同的用户身份连接,可以访问属于不同用户模式的表。

在SQL*Plus中,可使用CONNECT命令连接或者切换到指定的数据库,使用DISCONNECT命令断开与数据库的连接。

1. CONN[ECT]命令

本命令的功能是先断开当前连接,然后建立新的连接。

语法格式: 



CONN[ECT][USERNAME]/[PASSWORD][@CONNECT_IDENTIFIER]


例: 



SQL>CONN SCOTT/TIGER@orcl;


如果要以特权用户的身份连接,则必须带AS SYSTEM或AS SYSOPER选项。

例: 



SQL>CONN SYS/SYS_PSW@orcl AS SYSDBA;


2. DISC[ONNECT]命令

本命令的功能是断开与数据库的连接,但不退出SQL*Plus环境。

例: 



SQL>DISC;


3. EXIT或QUIT命令

退出SQL*Plus环境,需使用EXIT或者QUIT命令。

例: 



SQL>EXIT


3.1.2环境设置命令

在SQL*Plus中,利用环境参数可以控制SQL*Plus的输出格式。SQL*Plus的环境参数一般由系统自动设置,用户可以根据需要将环境参数设置成自己所需要的值。系统提供了两种参数的方式: 第1种是使用对话框,第2种是使用SET命令。

1. 对话框方式

在SQL*Plus的环境下,选择菜单栏中的“选项”→“环境”命令,可得到如图31所示的“设置”环境对话框。



图31SQL*Plus环境设置


在“设定选项”列表框中列出了几十个环境参数,任选一项后,若“值”区域变为可用,表示可以进行设置。设置完成后,单击“确定”按钮即可完成该参数的设置。

2. 命令方式

SET命令可以改变SQL*Plus环境的值。

SET命令格式如下。



SET<选项><值或开关的状态>


其中,<选项>指环境参数的名称; <值或开关的状态>指参数可以被设置成ON或OFF,也可以被设置成某个具体的值。

系统提供了几十个环境参数,使用SHOW命令可以显示SQL*Plus环境参数的值。

SHOW命令格式1: 



SQL>SHOW ALL


功能: 显示所有参数的当前设置。

SHOW命令格式2: 



SQL<参数>


功能: 显示指定参数的当前设置。

3. 常用的主要参数

1) LINESIZE和PAGESIZE

通常需要对输出的显示环境进行设置,这样可以达到更理想的输出效果。显示输出结果是分页的,默认的页面大小是14行×80列。以下的训练是设置输出页面的大小,用户可以比较设置前后的输出效果。

【例31】设置输出页面的大小。

步骤1,输入并执行以下命令,观察显示结果: 



SELECT*FROM emp;


步骤2,在输入区输入并执行以下命令: 



SET PAGESIZE 100

SET LINESIZE 120


或



SET PAGESIZE 100 LINESIZE 120


步骤3,重新输入并执行以下命令,观察显示结果: 



SELECT*FROM emp;


说明: 命令SET PAGESIZE 100将页高设置为100行,命令SET LINESIZE 120将页宽设置为120个字符。通过页面的重新设置,消除了显示的折行现象。SELECT语句用来对数据库的表进行查询,这将在后面介绍。

2) AUTOCOMMIT

该变量用于设置是否自动提交DML语句,当设置为ON时,用户执行DML操作时都会自动提交。

【例32】显示或设置当前系统是否自动提交DML命令。



SQL>SHOW AUTOCOMMIT

AUTOCOMMIT OFF

SQL>SET AUTOCOMMIT ON




视频讲解

3.1.3常用的SQL*Plus命令
1. SHOW命令

如果用户忘了自己是以什么用户身份连接的,可以用以下的命令显示当前用户。

【例33】显示当前用户。

输入并执行以下命令: 



SHOW USER


执行结果是: 



USER 为"SCOTT"


说明: 显示的当前用户为SCOTT,即用户是以SCOTT账户登录的。

注意: 使用SELECT USER FROM dual命令也可以取得用户名。

2. SPOOL命令

语法格式: 



SPOOL spool_file_name


假脱机(SPOOLING)是将信息写到磁盘文件的一个过程。在假脱机文件名中可以包含一个路径,该路径是存储假脱机文件的磁盘驱动器和目录的名称。如果不包含路径,则假脱机文件将存储在ORACLE_HOME目录下面的bin子目录中。

通过适当的设置,可以把操作内容或结果记录到文本文件中。

【例34】使用SPOOL命令记录操作内容。

步骤1,执行以下命令: 



SPOOL C:\TEST


步骤2,执行以下命令: 



SELECT*FROM emp;


步骤3,执行以下命令: 



SELECT*FROM dept;


步骤4,执行以下命令: 



SPOOL OFF


3. DESCRIBE命令

Oracle中的DESCRIBE命令有两个功能: 一个功能是列出表的结构,另一个功能是列出有关函数、过程及包的信息。

【例35】列出emp的表结构。



SQL>DESC emp;


4. LIST命令

LIST命令用于列出当前缓冲区的内容。

【例36】在当前提示符下输入如下命令。



SELECT EMPNO, ENAME, JOB, SAL

FROM EMP; 


然后输入LIST,查看屏幕显示的信息。

5. RUN命令

RUN命令直接执行当前缓冲区内的命令。

【例37】在当前提示符下输入RUN,会直接运行当前缓冲区的命令。

6. EDIT命令

在SQL*Plus中运行操作系统默认的文本编辑程序(EDIT),命令形式为



EDIT 路径\文件名。


EDIT将缓冲区中的内容装入系统默认的文本编辑器,然后用文本编辑器的命令编辑文本。完成后保存编辑的文本,然后退出。该文本保存到当前的缓冲区。

【例38】EDIT D:\ET.TXT。

ET.TXT文件内输入“SELECT*FROM DEPT;”,然后保存并关闭该文件。再运行RUN命令,查看执行的命令是否是ET.TXT文件中的命令。

7. 运行命令文件

运行编辑好的命令文件可用命令START 文件名或者@文件名。

【例39】START D:\ET.TXT或@D:\ET.TXT。



视频讲解

3.1.4SQL*Plus环境设置的使用

在SQL*Plus环境下,命令可以在一行或多行输入,命令是不区分大小写的。SQL命令一般以“;”结尾。

可以在输入内容中书写注释,或将原有内容变为注释。注释的内容在执行时将被忽略。

在一行的开头处书写REM,可将一行注释掉。

在一行中插入“”,可将其后的内容注释掉。

使用/*…*/,可以注释任何一段的内容。

【例310】使用注释。

在输入区输入以下内容,按F5键执行。



REM本句是注释语句

--SELECT *FROM emp; 该句也被注释


执行后没有产生任何输出。

说明: REM和“”产生注释作用,语句不执行,所以没有输出,注释后的内容将变成红色显示。

如果需要,可以分别将输入区或输出区的内容以文本文件的形式存盘,供以后查看或重新使用。



视频讲解

 3.2SCOTT用户表
3.2.1表的结构

SCOTT账户拥有若干个表,其中主要有一个EMP表,用于存储公司雇员的信息,还有一个DEPT表,用于存储公司的部门信息。表是用来存储二维信息的,由行和列组成。行一般称为表的记录,列称为表的字段。要了解一个表的结构,就要知道表由哪些字段组成,各字段是什么数据类型,有什么属性。要看表的内容,就要通过查询显示表的记录。

Oracle常用的表字段数据类型有以下几种。

CHAR: 固定长度的字符串,没有存储字符的位置,用空格填充。

VARCHAR2: 可变长度的字符串,自动去掉前后的空格。

NUMBER(M,N): 数字型,M是位数总长度,N是小数的长度。

DATE: 日期类型,包括日期和时间在内。

BOOLEAN: 布尔型,即逻辑型。

可以使用DESCRIBE命令(DESCRIBE可简写成DESC)来检查表的结构信息。

1. 雇员表EMP的结构

输入并执行以下命令(EMP为要显示结构的表名): 



DESCRIBE EMP;


EMP表结构如图32所示。



图32EMP表结构


说明: 以上字段用到了数值型、字符型和日期型三种数据类型,它们都是常用的数据类型。

列表显示了字段名,字段是否为空,字段的数据类型和宽度。在“是否为空”域中的“NOT NULL”代表该字段的内容不能为空,即在插入新记录时必须填写; 否则代表可以为空。括号中的数字表示字段的宽度。日期型数据是固定宽度,无须指明。该表共有8个字段,或者说有8列,各字段的名称和含义解释如下。

EMPNO是雇员编号,数值型,长度为4B,不能为空。

ENAME是雇员姓名,字符型,长度为10B,可以为空。

JOB是雇员职务,字符型,长度为9B,可以为空。

MGR是雇员经理的编号,数值型,长度为4B,可以为空。

HIREDATE是雇员雇佣日期,日期型,可以为空。

SAL是雇员工资,数值型,长度为7B,小数位有2位,可以为空。

COMM是雇员津贴,数值型,长度为7B,小数位有2位,可以为空。

DEPTNO是雇员所在部门的编号,数值型,长度为2B的整数,可以为空。

2. 部门表DEPT的结构

输入以下命令: 



DESCRIBE DEPT; 


DEPT表结构如图33所示。



图3.3DEPT表结构


说明: 以上字段用到了数值型和字符型两种数据类型。DEPT表共有三个字段: 

DEPTNO是部门编号,数值型,长度为2B,不能为空。

DNAME是部门名称,字符型,长度为14B,可以为空。

LOC是所在城市,字符型,长度为13B,可以为空。

3.2.2表的内容

已知表的数据结构,还要通过查询命令来显示表的内容,这样就可以了解表的全貌。显示表的内容用查询语句进行。

1. 雇员表EMP的内容

输入并执行以下查询命令: 



SELECT*

FROM EMP; 


EMP表中的记录如图34所示。



图34EMP表记录


说明: 观察表的内容,在显示结果中,虚线以上部分(第一行)称为表头,是EMP表的字段名列表。该表共有8个字段,显示为8列,虚线以下部分是该表的记录,共有14行,代表14个雇员的信息,如雇员7788的名字是SCOTT,职务为ANALYST等。

这个表在下面的练习中要反复使用,必须熟记字段名和表的内容。

2. 部门表DEPT的内容

输入并执行以下查询命令: 



SELECT*

FROM DEPT; 


DEPT表中的记录如图35所示。



图35DEPT表记录


说明: 该表中共有三个字段: 部门编号DEPTNO、部门名称DNAME和所在城市LOC。该表共有4个记录,显示出4个部门的信息,如部门10的名称是ACCOUNTING,所在城市是NEW YORK。

 习题

1. SQL*Plus环境下不同用户的登录切换命令是什么?

2. SPOOL的功能是什么?

3. 使用SQL*Plus环境时应注意什么?

4. 显示表EMP的结构的命令是什么?