资源预览内容
第1页 / 共66页
第2页 / 共66页
第3页 / 共66页
第4页 / 共66页
第5页 / 共66页
第6页 / 共66页
第7页 / 共66页
第8页 / 共66页
第9页 / 共66页
第10页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第一章 SQL*PLUS本章介绍关系数据库的SQL语言及其在ORACLE中的应用技巧。11简介SQL*PLUS是ORACLE的交互查询工具,它允许用户使用SQL 命令交互式地访问数据库,也允许用户使用SQL*PLUS命令与系统发生联系。111结构查询语言SQLSQL语言是一种使用方便灵活的语言,因为它是一种非过程化程度相当高的语言,使用这种语言编程,用户只需在程序中指出要干什么,至于如何干,用户不必在程序中指出,而由系统来决定完成。SQL语言可以通过两种方式使用,一种是命令方式,另一种是程序方式。采用命令方式时,用户通过交互来执行该命令。SQL 语言还可以嵌入C,COBOL和FORTRAN 等高级语言中,组成一个完整的程序。用户可以根据不同需要选择不同的使用方式,以满足不同的要求。SQL语言还提供了事务控制,以保证数据共享以及并发使用时不产生干扰,也便于对数据库的恢复。此外,SQL语言还提供了授权控制,以保证数据的安全与保密,防止非法用户对数据库的使用与破坏。正因为SQL语言的这些特点,使它受到人们的广泛重视与欢迎。近几年来,SQL语言已成为标准的数据库语言,现在已有一百多个数据库管理产品支持SQL语言。 112 启动SQL*PLUS启动SQL*PLUS的步骤如下:(1) 将ORACLE软件安装到机器上。(2) 启动机器进行操作系统登录,成功后用户将在屏幕上看到操作系统的提示符,说明进入操作系统已经成功。(3) 启动ORACLE数据库系统,将ORACLE RDBMS装入内存中,命令执行后,就可以运行工具软件了。(4( 在操作系统提示符下执行SQL*PLUS:$ SQLPLUS RETURNSQL*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,则可以输入EXIT或QUIT命令。SQLEXIT113 预备知识1、基表ORACLE是一种关系型数据库系统,它以关系的方式组织数据,这里所说的关系,我们称之为基表。一个数据库可以由若干个表组成,用户对数据库的操作也就是对表的操作。ORACLE用基表的形式存储信息,如表1.1所示。表1.1 EMP表EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO7369 SMITH CLERK 7902 17-Dec-80 800 207499 ALLEN SLESMAN 7698 20-Feb-81 1600 300 307521 WARD SALESMAN 7698 22-Feb-81 1250 500 307566 JONES MANAGER 7839 2-Apr-81 2975 207654 MARTIN SALESMAN 7698 28-Sep-81 1250 1400 307698 BLAKE MANAGER 7839 1-May-81 2850 30每个基表都有一个表名,以便识别。每个基表都包含一个或一个以上的列,每列包含一类信息,并都有一个列名,以描述保存在那一列中的信息的种类。表名和列名构成了基表的框架,也就是基表的分类信息。具体信息一行一行存放,表的每一行表示一组独立的数据,它由具有不同列值的各列组成。2、基表之间的关系在数据库中,数据与数据之间是存在着联系的,我们可以将某个基表中的信息与其他基表中的信息建立关系,例如,在前面的EMP表中,每个雇员均有部门编号(DEPTNO),它对应于DEPT表中的部门编号(DEPTNO),见表1.2。表1.2 DEPT表DEPTNO DNAME LOC40 OPERATIONS BOSTON30 SALSE CHICAGO20 RSESARCH DALLAS10 ACCOUNTING NEW YORK这样可便于信息的独立组织,因为我们可以在EMP表中存放雇员信息,而无需在基中存放DEPT表中有关部门的信息。当然,我们还可以在多个基表之间建立联系。3、数据字典数据字典是ORACLE关系数据库管理系统(RDBMS)最重要的成分之一,是数据库系统的宝贵资源。数据库管理员(DBA)使用它来监视ORALCE RDBMS的使用,并协助用户完成他们的工作。数据字典是由ORALCE自动建立并更新的一组基表和视图,在这里记录了用户的姓名、基表和视图的定义、用户权限以及数据存储等方面的信息。数据字典中包括下列信息的描述:(1) ORACLE所有用户的标识及用户的存取权限。(2) 每个用户所拥有的数据库实体(表、空间定义、视图、索引、聚簇和同义词)的定义。(3) 为数据库实体分配的空间情况。我们可以通过查询语句查看数据字典中的有关内容。例如:用户需要查看当前用户创建的所有基表、视图和同义词清单,可以使用下列命令:SQLSELECT * FROM CAT;CAT表中存放的就是有关用户创建的基表、视图和同义词情况的描述。数据字典由几个基础表及派生出来的视图组成。基础表是由ORACLE RDBMS自动更新,用户基本上不访问基础表,ORACLE RDBMS不断地更新数据字典的基础表,而视图总是引用基础表中的最新数据。一般来说,用户不能直接更新ORACLE的数据字典,因为用户操作不当、删除或修改了某些数据字典的内容,就会造成数据库的破坏。114 SQL*PLUS 命令SQL*PLUS可接收两种类型的命令:SQL命令和SQL*PLUS命令。SQL命令主要用来对数据库进行操作,而SQL*PLUS命令主要用来设置查询结果的显示格式,设置一些环境选项。1、SQL命令SQL命令主要用于ORACLE数据库中创建、存储、改变、检索和维护信息。当输入SQL命令时,SQL*PLUS 将其保存在内部缓冲区中,这个内部缓冲区称为SQL 缓冲区。SQL缓冲区只保存一条SQL命令,当输入新的SQL 命令时,原来保存的SQL命令就被删除。用户可以利用SQL缓冲区在不重新输入命令的情况下,编辑、运行上一次执行的SQL命令。SQL命令可以分一行或多行输入,如果在一行输入,则是SQL SELECT EMPNO,ENAME,JOB,SAL,FROM EMP WHERE SALSELECT EMPNO,ENAME,JOB,SAL2 FROM EMP3 WHERE SALCOLUMN SAL FORMAT $99,999 HEADING SALARYCOLUMN命令为SAL列的数据显示设置了“$”和“,”,并给出了新的列标题,通过运行前面的SQL命令可以清楚地看到SQL*PLUS命令的结果。在输入SQL*PLUS命令过程中,按RETURN键表示输入完成,而不必输入分号(;)。如果命令输入占满一行,光标会自动移到下一行,可以继续输入,直到按RETURN键结束输入。115获取帮助1、随机帮助在实际使用SQL*PLUS时,有时需要能有一种快捷的方法,获得有关命令的语法、含义的说明。SQL*PLUS提供了HELP命令,为使用者提供随机帮助信息。如果要获取所有SQL和SQL*PLUS 命令的信息,只需输入SQLHELP如果希望获取某一个命令的信息,可以在HELP之后输入该命令的名字,例如:SQLHELP ACCEPT2、DESCRIBE 命令当我们需要对基表进行操作的时候,往往需要获取关于基表的结构信息,可以使用DESCRIBE 命令查看基表的结构:SQLDESCRIBE DEP命令执行结果如下:NAME NULL? TYPEDEPTNO NOT NULL NUMBER (2)DNAME CHAR (14)LOC CHAR (13)基表的结构信息包括:NAME 列名NULL 标识该列是否允许为空值,如缺省则表示允许为空值TYPE 说明该列的数据类型,可以是字符型:CHAR(w),VARCHAR2(w );数字型:NUMBER(w,d)日期型:DATE原始数据型:RAW以及LONG型等等。其中w表示列的宽度,d表示小数点之后的位数还可以使用DESCRIBE 命令获取有关函数、过程以及包括描述,例如:要求显示有关函数AFUNC 的信息:SQLDESCRIBE afunc结果是function afunc(F1 CHAR, F2 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改为newCHANGE/text C/text 从当前行中删除textCLEAR 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 显示多行(从m到n)(1)显示SQL缓冲区的命令使用LIST命令可以显示当前SQL缓冲区的内容。如果LIST命令后面不带任何参数,将显示SQL缓冲区中的所有行;如果LIST后面带一个参数(如LIST n),则显示第n行的内容;如果LIST后面带有两个参数( LIST m n),那将显示多行,即从m 行到n行。例如:SQLLIST1 SELECT EMPNO,ENAME,JOB,SAL2 * FROM EMP WHERE SQL SELECT DPTNO,ENAME,SAL2 FROM EMP3 WHERE DEPTNO=10;系统给出出错信息:SELECT DPTNO,ENAME,SAL*ERROR at Line 1:ORA-0904:invalid column name使用CHANGE命令进行修改:SQLCHANGE/DPTNO/DEPTNO改正后屏幕上显示:1* SELECT DEPTNO,ENAME,SAL这时可用RUN命令重新运行修改后的SQL命令。(3)增加新行使用INPUT命令可以在SQL缓冲区增加一个或多个新行。如果只输入INPUT,则在当前行之后插入多个新行;如果输入INPUT text,则在当前行之后插入由text组成的新行。例如,输入INPUT命令:SQLINPUT4这时在INPUT命令之后出现一个行号,这个行号表明所要插入的行,此时可输入一个或多个新行。输入一行内容后按RETURN键,SQL*PLUS给出一个新行号,如屏幕所示:4 ORDER BY SAL5再按RETURN键,表示插入结束,可用RUN命令重新运行来检验最终的查询结果。(4)在一行后追加内容使用APPEND 命令可以在SQL缓冲区中的当前行未尾追加内容。首先用LIST命令将需要追加内容的行置为当前行,然后使用 APPEND text命令在当前行
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号