下面我们开始新的一章学习!
当输入SQL语句时,该语句被存在SQL缓冲区中(即一个内存区)。这个SQL缓冲区很小,只能存一个SQL语句,当下一条SQL语句输入时,原来在缓冲区中的SQL语句被覆盖掉。SQL*PLUS是一个工具(环境)。正像我们所看到的,我们可以用它来输入SQL语句。为了有效的输入和编辑SQL语句,SQL*PLUS还提供了一些常用的命令。与SQL语句不同的是SQL*PLUS的命令是可以缩写的。下面就简单的介绍一些常用的SQL*PLUS命令。
3.1 DESC[RIBE]命令
一般在操作之前我们总是想知道表的结构。我们可以使用DESC[RIBE]命令来完成此事。您可以使用例3-1的例子来显示emp表的结构。
例 3-1
SQL> DESC emp
例 3-1 结果
从例3-1的显示结果克制:所谓一个表的结构,就是该表中包含了多少个列,每一列的数据类型和它的最大长度,以及该列是否可以为空(NULL)(也叫约束,这个将在后面的学习中进一步的讲解)。
例3-1显示的结果告诉我们:emp表中包含了8列,其中只有empno这列不能为空,各列数据类型如下:
■ EMPNO列为整数,最大长度为4位
■ ENAME列为长字符型,最大长度为10个字符。
■ JOB 列也为长字符型,最大长度为9个字符。
■ MGR 列为整数,最大长度为4位。
■ HIREDATE列为日期型(我们将在后面的章节中详细介绍这种数据类型)。
■ SAL为浮点数(即包含小数的数),最大长度为7位,其中有两位是小数。
■ COMM列也为浮点数,最大长度也是7位,起哄有两位是小数。
■ DEPTNO列为整数,最大长度为两位。
也可以使用例3-2来显示dept表的结构。
例 3-2
SQL> DESC dept
例 3-2 结果
例 3-2显示的结告诉我们:dept表中包含了3个列,其中只有DEPTNO这一列不能为空。各列的数据类型如下:
■ DEPTNO为整数,最大长度为两位。
■ DNAME列为变长字符型,最大长度为14个字符。
■ LOC列也为变长字符型,最大长度为13个字符。
从上面的例3-1和例3-2可以看出,SQL*PLUS命令的结尾可以不使用分号(;)。
DESC[RIBE]命令是经常使用的SQL*PLUS命令。一般拥有经验的开发人员(程序员)在使用SQL语句开发程序之前,都要使用DESC[RIBE]命令来查看一下SQL语句要操作的表的结构,因为一旦开发人员清楚了表的结构,可以明显的减少程序出错的概率。
3.2 SET LINE[SIZE]{80|n}命令
另外一个有用的SQL*PLUS命令是SET LINE[SIZE]{80|n},其中n为自然数,80为默认值。该命令是将显示屏的显示输出置为n个字符那么宽,80个字符为此命令的默认宽度。
如果想使用例3-3的SQL语句来显示emp表中所有的列,会发现显示的结果很难看懂。
例 3-3
SQL> SELECT * 2 FROM emp;
例 3-3 结果
如果您的屏幕足够大的话,那么,您可以使用SQL*PLUS命令SET LINE 100,如例3-4.
例3-4
SQL> SET line 100此时,您就会发现其显示输出好懂得多了,因为每一行数据都显示在同一行上,而不是像例3-3那样,同一行的结果显示在两个不同行上。
3.3 L(LIST)命令和n text命令
为了联系SQL*PLUS的命令,我们输入例3-5的SQL语句。
例 3-5
SQL> SELECT empno,ename,job,sal 2 FROM dept 3 WHERE sal >=1500 4 ORDER BY job,sal DESC;
例 3-5 结果
例3-5显示的结果告诉我们这个语句显然是错误的,因为我们所有要显示的列都在emp表中而不是在dept表中。
毛主席说:“错误总是难免的,只要改进了就是好同志。”Oracle的设计思想与毛主席他老人家的教诲是一脉相承的。也许是英雄所见略同,也许是继承了毛泽东的伟大思想,Oracle的SQL*PLUS提供了若干条命令来帮助我们发现错误和改正错误。其中最常用的这类命令之一就是L(LIST)命令,该命令用来显示SQL缓冲区中的内容。例如,您可以使用L(LIST)命令来显示您刚刚输入的SQL语句,如例3-6.
例 3-6
SQL> L
例 3-6 结果
之后可以使用n text 命令来修改出错的部分,其中n为在SQL缓冲区中的SQL语句的行号,text为替代出错那部分的SQL语句。因为从L(LIST)命令是的显示得知是第二行除了错,所以现在输入例3-7的命令来修改所犯的错误。
例 3-7
SQL> 2 FROM emp之后,应该再使用例3-8的L(LIST)敏玲来显示SQL缓冲区的内容,以检查您的修改是否正确。
例 3-8
SQL> L
例 3-8 结果
例3-8的结果表名您所做的修改准确无误。那么我们有怎样运行这条语句呢?
3.4 ‘/'(RUN)命令
您当然没有必要重新输入这条语句,因为这条语句已经在SQL缓冲区中。Oracle提供了SLQ*PLUS命令‘/’(RUN)来重新运行在SQL缓冲区中的SQL语句。于是您可以输入例3-9的SQL*PLUS命令来重新运行刚刚修改过的SQL语句。
例 3-9
SQL> /
例 3-9 结果
以上的几条SQL*PLUS命令无疑为我们修改错误提供了方便。但Oracle所提供的这类SQL*PLUS命令远远不止这些。
---------------------分割线---------------------
今天的学习就到这,今天主要的学习,SQL缓冲区只有一条SQL语句。四个命令。DESC命令显示表结构、L显示SQL缓冲区的语句,n text 修改对应语句、/ 运行SQL缓冲区语句。
周末啦,希望大家有个愉快的周末
---------------------------------------------------
上一篇: oracle学习 第二章 限制性查询和数据的排序 ——03
下一篇:oracle学习 第三章 常用的SQL*PLUS命令 ——02