实验二 Oracle SQL PLUS.docx
- 文档编号:22783720
- 上传时间:2023-04-27
- 格式:DOCX
- 页数:21
- 大小:21.64KB
实验二 Oracle SQL PLUS.docx
《实验二 Oracle SQL PLUS.docx》由会员分享,可在线阅读,更多相关《实验二 Oracle SQL PLUS.docx(21页珍藏版)》请在冰豆网上搜索。
实验二OracleSQLPLUS
实验二OracleSQL*PLUS环境与查询
一.实验目的及要求
1.熟悉Oracle的基本知识。
2.熟悉Oracle的命令操作环境SQL*PLUS及常用命令。
3.熟悉并掌握oracle常用的查询语句。
二、实验主要内容
1、OracleSQL*PLUS环境及常用命令。
2、Oracle查询。
三、实验仪器设备
在局域网环境下,有一台服务器和若干台客户机。
服务器成功安装Oracle10g数据库服务器(企业版),客户机成功安装Oracle10g客户端软件,网络服务配置正确,数据库和客户端正常工作。
四、实验步骤
预备知识:
1.SQL*Plus命令
SQL*Plus有许多命令,表4只是列举了一部分常用的供读者参考。
表4常用SQL*Plus命令
SQL*Plus命令
缩写
意义
APPENDtext
Atext
把字符串增加到当前行的末尾
CHANGE/old/new/
C/old/new/
把当前行的旧字符串替换成新字符串
CHANGE/text/
C/text/
把当前行中字符串删除
CLEARBUFFER
CLBUFF
从SQL缓冲区中删除所有行
DEL
删除当前行
INPUT
I
插入许多行
INPUTtext
Itext
插入一个包含text字符串的行
LIST
L
显示SQL缓冲区的所有行
LISTn
Ln
显示SQL缓冲区中的一行到n行
LISTmn
Lmn
SQL缓冲区中的从第m行显示到第n行
RUN
R
显示并运行在缓冲区中的当前SQL命令
SAVEfilename
把SQL缓冲区中的内容保存到以filename为名字的文件中,默认路径为orawin\bin
GETfilename
把以filename为名字的文件内容调入SQL缓冲区中
STARTfilename
@filename
运行以前保存的命令文件
EDfilename
用默认的编辑器编辑保存的文件内容
EXIT
退出SQL*Plus
RUNFORMfilename
从SQL*Plus中运行一个OracleForms应用程序
SPOOLfilename
写所有的后面的命令或者输出到一个已经命名的文件中。
假脱机输入输出文件的后缀为.LIS
SPO[OL]OFF|OUT
OFF关闭假脱机输入输出文件;OUT改变假脱机输入输出,送文件到打印机上
DESCRIBEtablename
DESCtablename
显示任何数据库表的数据结构
HELP
击活Oracle内部的帮助部件
HOSTcommand
在SQL*Plus中击活一个操作系统命令
CONNECTuserid/password
CONNuserid/password
在当前的登录下,击活其它的Oracle用户
PROMPTtext
当运行一个命令文件时,显示文本
2.表名命名规则
所用的表名必须满足下面的条件:
a)名字必须以A-Z或a-z的字母开始;
b)名字可以包括字母、数字和特殊字母(_)。
字符$和#也是合法的,但是这种用法不提倡;
c)名字大小写是一样的;例如EMP、emp和eMp是表示同一个表;
d)名字最长不超过30个字符;
e)表名不能和其它的对象重名;
f)表名不能是SQL保留字。
3.字段类型
表5字段类型
数据类型
描述
VARCHAR2(w)
变长字符长度为w。
最长为2000个字符。
CHAR(w)
定长字符长度为w。
默认为1个字符;最长为255个字符
NUMBER
38位有效数字的浮点数
NUMBER(w)
W位精确度的整数,范围从1至38
NUMBER(w,s)
W是精度,或总的数字书,范围从1至38。
S是比例,或是小数点右边的数字位。
比例的范围从-84至127
DATE
日期值,范围从公元前14712年1月到公元314712年12月
LONG
变长字符串,其最大长度为2G(或231-1个字节)
RAW和LONGRAW
面向字节数据,可存储字符串、浮点数,二进制数据等
1.SQL*Plus的启动
当登录到操作系统后,有三种方法启动SQL*Plus。
1)SQLPLUS
(或SQLPLUSW,下同)
将看到如下的信息:
SQL*Plus:
Release9.0.1.0.1-Productionon星期二9月1314:
27:
512005
(c)Copyright2001OracleCorporation.Allrightsreserved.
请输入用户名:
输入你的用户名字并按回车。
SQL*Plus将提示:
请输入口令:
输入你的密码并按回车。
那么,将看到SQL*Plus的提示符:
SQL>
例如:
SQLPLUS
SQL*Plus:
Release9.0.1.0.1-Productionon星期二9月1314:
27:
512005
(c)Copyright2001OracleCorporation.Allrightsreserved.
EnterUsername:
scott
EnterPassword:
tiger
SQL>
2)SQLPLUSUsername
再提示你输入密码。
例如:
SQLPLUSscott
EnterPassword:
tiger
SQL*Plus:
Release9.0.1.0.1-Productionon星期二9月1314:
27:
512005
(c)Copyright2001OracleCorporation.Allrightsreserved.
SQL>
3)SQLPLUSusername/password
例如:
SQLPLUSscott/tiger
SQL*Plus:
Release9.0.1.0.1-Productionon星期二9月1314:
27:
512005
(c)Copyright2001OracleCorporation.Allrightsreserved.
SQL>
4)断开与数据库的连接
SQL>DISCONNECT
5)退出SQL*Plus
SQL>EXIT
或:
SQL>Quit
2.SQL命令
SQL命令包括数据定义语言(如Create、Alter等)和数据操作语言(SelectInsertUpdateDelete等),这些都可在SQL*Plus中使用。
如:
SQL>SELECTEMPNO,ENAME,JOB,SAL
2FROMEMPWHERESAL<2500;
3.SQL*Plus命令
1)列出缓冲区的内容:
SQL>LIST
SQL*Plus显示当前缓冲区中的SQL命令(注意:
不缓存SQLPlus命令):
1SELECTEMPNO,ENAME,JOB,SAL
2FROMEMPWHERESAL<2500;
2)编辑当前行
如果上面的例子错误的输入为:
SQL>SELECTEPNO,ENAME,JOB,SAL
2FROMEMPWHERESAL<2500;
在屏幕上显示:
SELECTEPNO,ENAME,JOB,SAL
*
ERRORatline1:
ORA-0904:
invalidcolumnname
分析错误可以发现EMPNO错为EPNO。
则用CHANGE命令修改编辑当前行。
如:
SQL>CHANGE/EPNO/EMPNO
修改的行在屏幕上显示:
1*SELECTEMPNO,ENAME,JOB,SAL
再用RUN命令运行当前命令。
SQL>RUN(或/)
SQL*PLUS列出其命令然后运行它。
1SELECTEMPNO,ENAME,JOB,SAL
2FROMEMPWHERESAL<2500;
3)增加一行
在当前行之后插入一新行,使用INPUT命令。
例如对上面例子增加第3行到该SQL命令中。
形式如下:
SQL>INPUT
3
接着可进入新行,然后按ENTER键,SQL*PLUS再次提示新行:
3ORDERBYSAL
4
按ENTER键,表示不进入任何行,然后用RUN检验和重新运行查询。
4)在一行上添加一原文
用APPEND命令,将一原文加到缓冲区中当前行的末端:
SQL>LIST
3*ORDERBYSAL
SQL>APPENDDESC
3*ORDERBYSALDESC
使用RUN检验和重新运行查询。
5)删除一行
●用LIST命令列出要删除的行。
●用DEL命令删除。
SQL>LIST
3*ORDERBYSALDESC
SQL>DEL
6)用系统编辑程序编辑命令
在SQL*PLUS中运行操作系统缺省的文本编辑程序(EDIT),命令形式为:
SQL>EDIT
EDIT将缓冲区中的内容装入系统缺省的文本编辑器,然后用文本编辑器的命令编辑文本。
完成后保存编辑的文本,然后退出。
该文本保存到当前的缓冲区。
7)保存SAVE命令
SQL>SAVE文件名
例如:
SQL>LIST
1SELECTEMPNO,ENAME,JOB,SAL
2FROMEMPWHERESAL<2500;
然后用SQVE保存到EMPINFO文件中:
SQL>SAVEempinfo
Createdfileempinfo
8)运行命令文件
可用命令START文件名或者@文件名的命令格式。
如上例:
SQL>STARTEMPINFO
或SQL>@EMPINFO
9)清缓冲区
SQL>CLEARBUFFER
10)DESCRIBE列出表的结构
如:
SQL>DESCEMP
Name
Null?
Type
EMPNO
NOTNULL
NUMBER(4)
ENAME
VARCHAR2(10)
JOB
VARCHAR2(10)
MGR
NUMBER(4)
HIREDATE
DATE
SAL
NUMBER(7,2)
COMM
NUMBER(7,2)
DEPTNO
NOTNULL
NUMBER
(2)
4.Oracle查询
1.显示EMP表中所有的部门号、职工名称和管理者号码:
SELECTDEPTNO,ENAME,MGR
FROMEMP;
DEPTNO
ENAME
MGR
----------------
-----------------
--------------
20
SMITH
7902
30
ALLEN
7698
30
WARD
7698
20
JONES
7839
30
MARTIN
7698
30
BLAKE
7839
10
CLARK
7839
20
SCOTT
7566
10
KING
30
TURNER
7698
20
ADAMS
7788
30
JAMES
7698
20
FORD
7566
10
MILLER
7782
2.算术运算符在SQL中的使用
SELECTENAME,SAL+250*12FROMEMP;
3.连字符的使用
把职工号和职工名字连接起来,如下:
SELECTEMPNO||ENAMEEMPLOYEEFROMEMP;
把职工号和职工名字中间用‘-’连接起来,并输出‘WORKSINDEPARTMENT’,如下:
SELECTEMPNO||’-‘||ENAMEEMPLOYEE,‘WORKSINDEPARTMENT’,DEPTNO
FROMEMP;
4.禁止重复
如果列举出EMP表中所有部门号:
Selectdeptnofromemp;
DEPTNO
----------------
20
30
30
20
30
30
10
20
10
30
20
30
20
10
从上表中可以看出部门号之间存在着许多的相同的,可以用DISTINCT子句来消除重复的。
SELECTDISTINCTdeptnofromemp;
DEPTNO
---------------
10
20
30
5.排序
按单个字段排序,如按照ENAME排序,
SELECTENAME,JOB,SAL*12,DEPTNO
FROMEMP
ORDERBYENAME;
ENAME
JOB
SAL*12
DEPTNO
-------------------------
-------------------------
-------------------------
-------------------------
ADAMS
CLERK
13200
20
ALLEM
SALESMAN
19200
30
BLAKE
MANAGER
34200
30
CLARK
MANAGER
29400
10
FORD
ANALYST
36000
20
JAMES
CLERK
11400
30
JONES
MANAGER
35700
20
KING
PRESIDENT
60000
10
MARTIN
SALESMAN
15000
30
MILLER
CLERK
15600
10
SCOTT
ANALYST
36000
20
SMITH
CLERK
9600
20
TURNER
SALESMAN
18000
30
WARD
SALESMAN
15000
30
按多个字段排序:
如按部门号升序,按工资降序排序
SELECTDEPTNO,JOB,ENAME
FROMEMP
ORDERBYDEPTNO,SALDESC;
DEPTNO
JOB
ENAME
-------------------------
-------------------------
-------------------------
10
PRESIDENT
KING
10
MANAGER
CLARK
10
CLERK
MILLER
20
ANALYST
SCOTT
20
ANALYST
FORD
20
MANAGER
JONES
20
CLERK
ADAMS
20
CLERK
SMITH
30
MANAGER
BLAKE
30
SALESMAN
ALLEN
30
SALESMAN
TURNER
30
SALESMAN
WARD
30
SALESMAN
MARTIN
30
CLERK
JAMES
6.带条件的查询
1)查询工作是CLERK的所有职工的姓名,职工号和部门号
SELECTENAME,EMPNO,JOB,DEPTNO
FROMEMP
WHEREJOB=‘CLERK’;
ENAME
EMPNO
JOB
DEPTNO
-------------------------
-------------------------
-------------------------
-------------------------
SMITH
7369
CLERK
20
ADAMS
7876
CLERK
20
JAMES
7900
CLERK
30
MILLER
7934
CLERK
10
2)从DEPT表中查询出部门号大于20的部门名称
SELECTDNAME,DEPTNO
FROMDEPT
WHEREDEPTNO>20;
DNAME
DEPTNO
-------------------------
-------------------------
SALES
30
OPERATIONS
40
3)复合条件查询
查询工作是MANAGER并且工资大于1500,或者工作是SALESMAN的职工信息:
SELECTEMPNO,ENAME,JOB,SAL,DEPTNO
FROMEMP
WHERESAL>1500ANDJOB=‘MANAGER’ORJOB=‘SALESMAN’;
EMPNO
ENAME
JOB
SAL
DEPTNO
-----------------
----------------
-----------------
------------------
-----------------
7499
ALLEN
SALESMAN
1600.00
30
7521
WARD
SALESMAN
1250.00
30
7566
JONES
MANAGER
2975.00
20
7654
MARTIN
SALESMAN
1250.00
30
7698
BLAKE
MANAGER
2850.00
30
7782
CLARK
MANAGER
2450.00
10
7844
TURNER
SALESMAN
1500.00
30
7.操作符的应用
1)BETWEEN的应用
查询工资在1000到2000之间的职工名字和工资信息。
SELECTENAME,SAL
FROMEMP
WHERESALBETWEEN1000AND2000;
ENAME
SAL
-------------------------------
---------------
ALLEN
1600.00
WARD
1250.00
MARTIN
1250.00
TURNER
1500.00
ADAMS
1100.00
MILLER
1300.00
2)IN
查询有7902,7566,7788三个MGR号之一的所有职工:
SELECTEMPNO,ENAME,SAL,MGR
FROMEMP
WHEREMGRIN(7902,7566,7788);
EMPNO
ENAME
SAL
MGR
-------------------------
--------------------------
--------------------------
--------------------
7369
SMITH
800.00
7902
7788
SCOTT
3000.00
7566
7876
ADAMS
1100.00
7788
89-2
FORD
3000.00
7566
3)LIKE
通配符%代表任意0或多个字符。
通配符_代表任意单个字符。
查询名字以“S”开始的所有职工:
SELECTENAME
FROMEMP
WHEREENAMELIKE‘S%’;
ENAME
------------------------
SMITH
SCOTT
查询名字只有4个字符的所有职工:
SELECTENAME
FROMEMP
WHEREENAMELIKE‘____’;
ENAME
------------------------
WARD
KING
FORD
4)ISNULL
查询没有管理者的所有职工:
SELECTENAME,MGR
FROMEMP
WHEREMGRISNULL;
ENAME
MGR
------------------------
----------
KING
8.单&号替代变量
1)数字变量输入:
SELECTEMPNO,ENAME,SAL
FROMEMP
WHEREDEPTNO=&DEPARTMENT_NUMBER;
Entervaluefordepartment_number:
10
EMPNO
ENAME
SAL
---------------------
---------------------
------------------------
7782
CLARK
2450.00
7839
KING
5000.00
7934
MILLER
1300.00
2)字符串变量输入:
SELECTEMPNO,ENAME,SAL*12
FROMEMP
WHEREJOB=‘&JOB_TITLE’;
Entervalueforjob_title:
MANAGER
ENAME
DEPTNO
SAL*12
--------------------
-----------------------
-----------------------
JONES
20
35700.00
BLAKE
30
34200.00
CLARK
10
29400.00
9.字符函数的应用
见表~
10.数字函数的应用
见表~
11.日期函数的应用
见表~
12.数据类型转换
1)TO_CHAR数字数据转换为字符串
selectto_char(8897)fromdual;
2)TO_NUMBER字符串数据转换为数字
selectto_number(‘8897’)fromdual;
3)TO_DATE字符串数据转换为日期数据
selectto_date(‘12-DEC-02’)fromdual;
13.分组函数的应用
1)分组函数见表4-8
2)分组函数应用
求平均值
SELECTAVG(SAL)FROMEMP;
AVG(SAL)
------------------
2073.2149
求最小值
SELECTMIN(SAL)FROMEMPWHEREJOB=‘CLERK’;
MIN(SAL)
---------------------
800
求数目
SELECTCOUNT(*)FROMEMPWHEREDEPTNO=20;
COUNT(*)
---------------------
5
3)GROUPBY子句
求每个部门中的平均工资:
SELECTJOB,AVG(SAL)FROMEMP
GROUPBYJOB;
JOB
AVG(SAL)
-------------------
---------------------------
ANALYST
3000
CLERK
1037.5
MANAGER
2758.33333
PRESIDENT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验二 Oracle SQL PLUS 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)