SQLPLUS 教程

111结构查询语言SQL

SQL语言是一种使用方便灵活的语言,因为它是一种非过程化程度相当高的语言,使用这种语言编程,用户只需在程序中指出要干什么,至于如何干,用户不必在程序中指出,而由系统来决定完成。

SQL语言可以通过两种方式使用,一种是命令方式,另一种是程序方式。采用命令方式时,用户通过交互来执行该命令。SQL语言还可以嵌入CCOBOLFORTRAN等高级语言中,组成一个完整的程序。用户可以根据不同需要选择不同的使用方式,以满足不同的要求。

SQL语言还提供了事务控制,以保证数据共享以及并发使用时不产生干扰,也便于对数据库的恢复。此外,SQL语言还提供了授权控制,以保证数据的安全与保密,防止非法用户对数据库的使用与破坏。

正因为SQL语言的这些特点,使它受到人们的广泛重视与欢迎。近几年来,SQL语言已成为标准的数据库语言,现在已有一百多个数据库管理产品支持SQL语言。

 

112 启动SQL*PLUS

启动SQL*PLUS的步骤如下:

(1)    将ORACLE软件安装到机器上。

(2)         启动机器进行操作系统登录,成功后用户将在屏幕上看到操作系统的提示符,说明进入操作系统已经成功。

(3)         启动ORACLE数据库系统,将ORACLE RDBMS装入内存中,命令执行后,就可以运行工具软件了。

(4)    在操作系统提示符下执行SQL*PLUS

         $ SQLPLUS [ RETURN]

SQL*PLUS将显示它的版本号、日期和版权信息,并提示你输入用户名。因为ORACLE保护对它所有数据的访问,所以与它连接通常需要一个用户标识(user-name)和口令(password)。

Enter user-name

输入用户名后按[RETURN]SQL*PLUS提示你输入口令:

Enter password

如果口令输入正确,SQL*PLUS将宣布你已经与ORACLE连接上了,然后显示:

     SQL>

说明现在你已经进入SQL*PLUS中,并等待你的指示。

如果输入的用户名或口令不正确,在向ORACLE三次注册失败后,屏幕上将出现终止服务信息,并退出SQL*PLUS

在进入SQL*PLUS时,也可以在命令行上直接输入用户名和口令,中间以“/”分隔,比如,你的用户名是SCOTT,口令是TIGER,那么你输入下列命令:

$ SQLPLUS SCOTT/TIGER

就可以进入SQL*PLUS中。

当你想停止工作并离开SQL*PLUS,则可以输入EXITQUIT命令。

SQL>EXIT

 

113 预备知识

1、基表

ORACLE是一种关系型数据库系统,它以关系的方式组织数据,这里所说的关系,我们称之为基表。一个数据库可以由若干个表组成,用户对数据库的操作也就是对表的操作。

ORACLE用基表的形式存储信息,如表1.1所示。

1.1  EMP

EMPNO

ENAME

JOB

MGR

HIREDATE

SAL

COMM

DEPTNO

7369

SMITH

CLERK

7902

17-Dec-80

800

 

20

7499

ALLEN

SLESMAN

7698

20-Feb-81

1600

300

30

7521

WARD

SALESMAN

7698

22-Feb-81

1250

500

30

7566

JONES

MANAGER

7839

2-Apr-81

2975

 

20

7654

MARTIN

SALESMAN

7698

28-Sep-81

1250

1400

30

7698

BLAKE

MANAGER

7839

1-May-81

2850

 

30

每个基表都有一个表名,以便识别。每个基表都包含一个或一个以上的列,每列包含一类信息,并都有一个列名,以描述保存在那一列中的信息的种类。表名和列名构成了基表的框架,也就是基表的分类信息。具体信息一行一行存放,表的每一行表示一组独立的数据,它由具有不同列值的各列组成。

2、基表之间的关系

在数据库中,数据与数据之间是存在着联系的,我们可以将某个基表中的信息与其他基表中的信息建立关系,例如,在前面的EMP表中,每个雇员均有部门编号(DEPTNO),它对应于DEPT表中的部门编号(DEPTNO),见表1.2

1.2 DEPT

DEPTNO

DNAME

LOC

40

OPERATIONS

BOSTON

30

SALSE

CHICAGO

20

RSESARCH

DALLAS

10

ACCOUNTING

NEW YORK

这样可便于信息的独立组织,因为我们可以在EMP表中存放雇员信息,而无需在基中存放DEPT表中有关部门的信息。当然,我们还可以在多个基表之间建立联系。

3、数据字典

数据字典是ORACLE关系数据库管理系统(RDBMS)最重要的成分之一,是数据库系统的宝贵资源。数据库管理员(DBA)使用它来监视ORALCE RDBMS的使用,并协助用户完成他们的工作。数据字典是由ORALCE自动建立并更新的一组基表和视图,在这里记录了用户的姓名、基表和视图的定义、用户权限以及数据存储等方面的信息。

数据字典中包括下列信息的描述:

(1)    ORACLE所有用户的标识及用户的存取权限。

(2)    每个用户所拥有的数据库实体(表、空间定义、视图、索引、聚簇和同义词)的定义。

(3)    为数据库实体分配的空间情况。

我们可以通过查询语句查看数据字典中的有关内容。例如:用户需要查看当前用户创建的所有基表、视图和同义词清单,可以使用下列命令:

SQL>SELECT * FROM CAT

CAT表中存放的就是有关用户创建的基表、视图和同义词情况的描述。

数据字典由几个基础表及派生出来的视图组成。基础表是由ORACLE RDBMS自动更新,用户基本上不访问基础表,ORACLE RDBMS不断地更新数据字典的基础表,而视图总是引用基础表中的最新数据。

一般来说,用户不能直接更新ORACLE的数据字典,因为用户操作不当、删除或修改了某些数据字典的内容,就会造成数据库的破坏。

 

114  SQL*PLUS命令

SQL*PLUS可接收两种类型的命令:SQL命令和SQL*PLUS命令。SQL命令主要用来对数据库进行操作,而SQL*PLUS命令主要用来设置查询结果的显示格式,设置一些环境选项。

1SQL命令

SQL命令主要用于ORACLE数据库中创建、存储、改变、检索和维护信息。当输入SQL命令时,SQL*PLUS将其保存在内部缓冲区中,这个内部缓冲区称为SQL缓冲区。SQL缓冲区只保存一条SQL命令,当输入新的SQL命令时,原来保存的SQL命令就被删除。用户可以利用SQL缓冲区在不重新输入命令的情况下,编辑、运行上一次执行的SQL命令。

SQL命令可以分一行或多行输入,如果在一行输入,则是

SQL> SELECT EMPNO,ENAME,JOB,SAL,FROM EMP WHERE SAL<2500

SQL命令输入过程中,如果按RETURN键,则表示命令分多行输入,在下一行的开始处将自动出现一个行号。如:

SQL>SELECT  EMPNO,ENAME,JOB,SAL

2         FROM EMP

3          WHERE SAL<2500

SQL命令完成,可以用分号(;)、斜线(/)或空行来结束命令的输入。输入分号并按RETURN键,则结束SQL命令的输入,并运行SQL缓冲区中的命令。在单独的一行上键入斜线并按RETURN键,SQL*PLUS将运行SQL命令。如果输入一个空行,即在命令的最后一行后按RETURN键,SQL*PLUS显示一个行号,此时再按RETURN键,SQL*PLUS结束SQL命令的输入,回到SQL*PLUS的提示符状态。

 

2SQL*PLUS命令

SQL*PLUS命令用于设置查询结果的输出格式,形成复杂的报表,编辑SQL命令,设置系统变量并可提供帮助信息。

SQL*PLUS的很多命令可简写成一个或几个字母,SQL*PLUS命令的输入与SQL命令不同,例如,我们想改变EMP表的SAL列的显示格式,可以键入:

SQL>COLUMN SAL FORMAT $99,999 HEADING SALARY

COLUMN命令为SAL列的数据显示设置了“$”和“,”,并给出了新的列标题,通过运行前面的SQL命令可以清楚地看到SQL*PLUS命令的结果。

在输入SQL*PLUS命令过程中,按RETURN键表示输入完成,而不必输入分号(;)。

如果命令输入占满一行,光标会自动移到下一行,可以继续输入,直到按RETURN键结束输入。

 

115获取帮助

1、随机帮助

在实际使用SQL*PLUS时,有时需要能有一种快捷的方法,获得有关命令的语法、含义的说明。SQL*PLUS提供了HELP命令,为使用者提供随机帮助信息。如果要获取所有SQLSQL*PLUS命令的信息,只需输入

SQL>HELP

如果希望获取某一个命令的信息,可以在HELP之后输入该命令的名字,例如:

SQL>HELP ACCEPT

 

2DESCRIBE 命令

当我们需要对基表进行操作的时候,往往需要获取关于基表的结构信息,可以使用DESCRIBE命令查看基表的结构:

SQL>DESCRIBE DEP

命令执行结果如下:

NAME

NULL?

TYPE

DEPTNO

NOT NULL

NUMBER (2)

DNAME

 

CHAR (14)

LOC

 

CHAR (13)

基表的结构信息包括:

NAME     列名

NULL     标识该列是否允许为空值,如缺省则表示允许为空值

TYPE     说明该列的数据类型,

          可以是字符型:CHARw),VARCHAR2w);

          数字型:NUMBERwd

          日期型:DATE

          原始数据型:RAW以及LONG型等等。

          其中w表示列的宽度,d表示小数点之后的位数

还可以使用DESCRIBE命令获取有关函数、过程以及包括描述,例如:要求显示有关函数AFUNC的信息:

SQL>DESCRIBE afunc

结果是

function afunc(F1 CHARF2 NUMBER)return NUMBER

 

 

116编辑SQL*PLUS命令的使用

1、命令行编辑命令

我们可以使用SQL*PLUS的一些行编辑命令编辑SQL缓冲区中的SQL命令,表1.3列出了编辑功能的SQL8PLUS命令。

1.3

      令

       写

      义

APPEND text

A text

text行尾增加

CHANGE/old/new

C/old/new

在当前行中将old改为new

CHANGE/text

C/text

从当前行中删除text

CLEAR BUFFER

CL BUFF

删除SQL缓冲区的所有行

DEL

删除当前行

INPUT

I

增加一行或多行

INPUT text

I text

增加一个由text组成的行

LIST

L

显示SQL缓冲区的所有行

LIST n

L n n

显示一行

LIST *

L*

显示当前行

LIST LAST

LAST

显示最后一行

LIST m n

L m n

显示多行(从mn

1)显示SQL缓冲区的命令

使用LIST命令可以显示当前SQL缓冲区的内容。如果LIST命令后面不带任何参数,将显示SQL缓冲区中的所有行;如果LIST后面带一个参数(如LIST n),则显示第n行的内容;如果LIST后面带有两个参数(LIST m n),那将显示多行,即从m行到n行。例如:

SQL>LIST

1 SELECT EMPNOENAMEJOBSAL

2 * FROM EMP WHERE SQL <2500

行号2后面的星号表示第2行为当前行。除LIST命令外,其他编辑命令都只对SQL缓冲区的当前行操作。在SELECT命令尾部输入的分号(;)没有显示,因为SQL*PLUS并不把它保存在SQL缓冲区中,所以在缓冲区未尾增加新行时;不必从最后一行去掉分号,使编辑更为方便。

2)修改SQL命令

使用CHANGE命令可以从当前行中删除一部分内容,或者用新的内容替换原先的内容。在使用CHANGE命令之前必须先用带一个参数的LIST命令选择当前行。例如,下列命令将DEPTNO错输出DPTNO

SQL>SELECT DPTNOENAMESAL

     2 FROM EMP

     3 WHERE DEPTNO=10

系统给出出错信息:

SELECT DPTNOENAMESAL

*

ERROR at Line 1

ORA-0904invalid column name

使用CHANGE命令进行修改:

SQL>CHANGE/DPTNO/DEPTNO

改正后屏幕上显示:

1* SELECT  DEPTNOENAMESAL

这时可用RUN命令重新运行修改后的SQL命令。

3)增加新行

使用INPUT命令可以在SQL缓冲区增加一个或多个新行。如果只输入INPUT,则在当前行之后插入多个新行;如果输入INPUT text,则在当前行之后插入由text组成的新行。

例如,输入INPUT命令:

SQL>INPUT

      4

这时在INPUT命令之后出现一个行号,这个行号表明所要插入的行,此时可输入一个或多个新行。输入一行内容后按RETURN键,SQL*PLUS给出一个新行号,如屏幕所示:

4         ORDER BY SAL

5          

再按RETURN键,表示插入结束,可用RUN命令重新运行来检验最终的查询结果。

4)在一行后追加内容

使用APPEND命令可以在SQL缓冲区中的当前行未尾追加内容。首先用LIST命令将需要追加内容的行置为当前行,然后使用APPEND text命令在当前行未尾追加内容。例如,要在第四行未尾追加DESC选项,先将第四行置为当前行:

SQL>LIST 4

     4* ORDER BY SAL

然后输入下列命令追加DESC

SQL>APPEND DESC

     4* ORDER BY SAL DESC

最后用RUN命令重新运行。

5)删除SQL缓冲区中的行

使用DEL命令可以删除SQL缓冲区中的当前行,当前行以下各行的行号顺序减1,如果把第一行设为当前行,连续多次输入DEL后,可以删除SQL缓冲区中的所有行。删除SQL缓冲区中所有行也可以使用CLEAR BUFFER命令,它的作用是将SQL缓冲区清空。

 

2EDIT命令

EDIT命令用于调用一个操作系统提供的文本编辑器。编辑SQL缓冲区里的内容或操作系统下的文本文件,并将要编辑的文件名传送给该编辑器。如果文件扩展名(例如. ext)被省略,则系统自动追加.SQL的扩展名,如果文件名和扩展名均省略,则编辑器被调用,并将SQL*PLUS产生的文件名传给它,这个文件中包含着当前缓冲区的内容。如果当前缓冲区为空,且EDIT被调用时没有给出文件名,则EDIT命令失败。

SQL>EDIT

也可以是

SQL>EDIT 文件名

可以使用EDFINE命令设置系统变量_EDITOR来改变文本编辑器的类型,一般在LOGIN.SQL文件中完成它的设置,当SQL*PLUS被调用时将读出这些信息。例如,在UNIX平台上,定义Vi作为SQL *PLUS调用的外部编辑器:

SQL>DEFINE_EDITOR=Vi

 

3SAVE命令

如果要把SQL命令存储到磁盘上,或者想使用自己的编辑程序,用户可以通过SAVE命令将内容写到一个文件上。

SQL>SAVE DEPTINFO

这时SQL*PLUS响应:

    Create file DEPTINFO

文件名后缀缺省为.SQL。这时用户需要保存的内容已经存入了DEPTINFO.SQL文件中,可以对文件进行编辑、运行。

如果想将修改过的内容保存到原有的命令文件中,则在SAVE命令后增加REPLACE选项:

SQL>SAVE DEPTINFO REPLACE

如果想将SQL缓冲区的内容追加到已经存在的命令文件未尾,则在SAVE命令后增加APPEND选项:

SQL>SAVE filename APPEND

4GET命令

GET命令把磁盘上的命令文件内容调入当前缓冲区,并显示在屏幕上,格式是

SQL>GET filename

文件后缀缺省为.SQL,文件被调入缓冲区后,可以对它进行编辑、运行。

 

5、运行命令文件

START命令将指定文件调入缓冲区并执行文件内容:

SQL>START filename

文件后缀缺省为.SQL。也可以使用“@”命令运行文件:

SQL>@ filename

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值