第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的环境下,选择菜单栏中的“选项”→“环境”命令,可得到如图31所示的“设置”环境对话框。 图31SQL*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列。以下的训练是设置输出页面的大小,用户可以比较设置前后的输出效果。 【例31】设置输出页面的大小。 步骤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操作时都会自动提交。 【例32】显示或设置当前系统是否自动提交DML命令。 SQL>SHOW AUTOCOMMIT AUTOCOMMIT OFF SQL>SET AUTOCOMMIT ON 视频讲解 3.1.3常用的SQL*Plus命令 1. SHOW命令 如果用户忘了自己是以什么用户身份连接的,可以用以下的命令显示当前用户。 【例33】显示当前用户。 输入并执行以下命令: SHOW USER 执行结果是: USER 为"SCOTT" 说明: 显示的当前用户为SCOTT,即用户是以SCOTT账户登录的。 注意: 使用SELECT USER FROM dual命令也可以取得用户名。 2. SPOOL命令 语法格式: SPOOL spool_file_name 假脱机(SPOOLING)是将信息写到磁盘文件的一个过程。在假脱机文件名中可以包含一个路径,该路径是存储假脱机文件的磁盘驱动器和目录的名称。如果不包含路径,则假脱机文件将存储在ORACLE_HOME目录下面的bin子目录中。 通过适当的设置,可以把操作内容或结果记录到文本文件中。 【例34】使用SPOOL命令记录操作内容。 步骤1,执行以下命令: SPOOL C:\TEST 步骤2,执行以下命令: SELECT*FROM emp; 步骤3,执行以下命令: SELECT*FROM dept; 步骤4,执行以下命令: SPOOL OFF 3. DESCRIBE命令 Oracle中的DESCRIBE命令有两个功能: 一个功能是列出表的结构,另一个功能是列出有关函数、过程及包的信息。 【例35】列出emp的表结构。 SQL>DESC emp; 4. LIST命令 LIST命令用于列出当前缓冲区的内容。 【例36】在当前提示符下输入如下命令。 SELECT EMPNO, ENAME, JOB, SAL FROM EMP; 然后输入LIST,查看屏幕显示的信息。 5. RUN命令 RUN命令直接执行当前缓冲区内的命令。 【例37】在当前提示符下输入RUN,会直接运行当前缓冲区的命令。 6. EDIT命令 在SQL*Plus中运行操作系统默认的文本编辑程序(EDIT),命令形式为 EDIT 路径\文件名。 EDIT将缓冲区中的内容装入系统默认的文本编辑器,然后用文本编辑器的命令编辑文本。完成后保存编辑的文本,然后退出。该文本保存到当前的缓冲区。 【例38】EDIT D:\ET.TXT。 ET.TXT文件内输入“SELECT*FROM DEPT;”,然后保存并关闭该文件。再运行RUN命令,查看执行的命令是否是ET.TXT文件中的命令。 7. 运行命令文件 运行编辑好的命令文件可用命令START 文件名或者@文件名。 【例39】START D:\ET.TXT或@D:\ET.TXT。 视频讲解 3.1.4SQL*Plus环境设置的使用 在SQL*Plus环境下,命令可以在一行或多行输入,命令是不区分大小写的。SQL命令一般以“;”结尾。 可以在输入内容中书写注释,或将原有内容变为注释。注释的内容在执行时将被忽略。 在一行的开头处书写REM,可将一行注释掉。 在一行中插入“”,可将其后的内容注释掉。 使用/*…*/,可以注释任何一段的内容。 【例310】使用注释。 在输入区输入以下内容,按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表结构如图32所示。 图32EMP表结构 说明: 以上字段用到了数值型、字符型和日期型三种数据类型,它们都是常用的数据类型。 列表显示了字段名,字段是否为空,字段的数据类型和宽度。在“是否为空”域中的“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表结构如图33所示。 图3.3DEPT表结构 说明: 以上字段用到了数值型和字符型两种数据类型。DEPT表共有三个字段: DEPTNO是部门编号,数值型,长度为2B,不能为空。 DNAME是部门名称,字符型,长度为14B,可以为空。 LOC是所在城市,字符型,长度为13B,可以为空。 3.2.2表的内容 已知表的数据结构,还要通过查询命令来显示表的内容,这样就可以了解表的全貌。显示表的内容用查询语句进行。 1. 雇员表EMP的内容 输入并执行以下查询命令: SELECT* FROM EMP; EMP表中的记录如图34所示。 图34EMP表记录 说明: 观察表的内容,在显示结果中,虚线以上部分(第一行)称为表头,是EMP表的字段名列表。该表共有8个字段,显示为8列,虚线以下部分是该表的记录,共有14行,代表14个雇员的信息,如雇员7788的名字是SCOTT,职务为ANALYST等。 这个表在下面的练习中要反复使用,必须熟记字段名和表的内容。 2. 部门表DEPT的内容 输入并执行以下查询命令: SELECT* FROM DEPT; DEPT表中的记录如图35所示。 图35DEPT表记录 说明: 该表中共有三个字段: 部门编号DEPTNO、部门名称DNAME和所在城市LOC。该表共有4个记录,显示出4个部门的信息,如部门10的名称是ACCOUNTING,所在城市是NEW YORK。 习题 1. SQL*Plus环境下不同用户的登录切换命令是什么? 2. SPOOL的功能是什么? 3. 使用SQL*Plus环境时应注意什么? 4. 显示表EMP的结构的命令是什么?