ORACLE之SQL基础SQLPLUS基础.docx

上传人:b****4 文档编号:3850255 上传时间:2023-05-06 格式:DOCX 页数:73 大小:76.50KB
下载 相关 举报
ORACLE之SQL基础SQLPLUS基础.docx_第1页
第1页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第2页
第2页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第3页
第3页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第4页
第4页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第5页
第5页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第6页
第6页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第7页
第7页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第8页
第8页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第9页
第9页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第10页
第10页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第11页
第11页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第12页
第12页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第13页
第13页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第14页
第14页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第15页
第15页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第16页
第16页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第17页
第17页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第18页
第18页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第19页
第19页 / 共73页
ORACLE之SQL基础SQLPLUS基础.docx_第20页
第20页 / 共73页
亲,该文档总共73页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ORACLE之SQL基础SQLPLUS基础.docx

《ORACLE之SQL基础SQLPLUS基础.docx》由会员分享,可在线阅读,更多相关《ORACLE之SQL基础SQLPLUS基础.docx(73页珍藏版)》请在冰点文库上搜索。

ORACLE之SQL基础SQLPLUS基础.docx

ORACLE之SQL基础SQLPLUS基础

ORACLE之 SQL基础

SQL*PLUS基础

QQ:

1084931388

SQL与SQL*PLUS命令

●SQL:

在Oracle数据库中创建(表、视图、索引等)、存储、改变(结构、数据)和维护信息;

●SQL命令存放在SQL缓冲区内,保持到下一条SQL命令进入缓冲区,并以“;”(分号)结尾。

●SQL命令有如下特点:

1.简单、易读、功能强大,是Oracle各种开发工具的基础

2.与终端用户进行交互能力强

SQL*Plus概述

●SQL*PLUS工具的作用

▪ORACLE的SQL和PL/SQL的运行环境

▪数据库进行操作和管理

▪输入、编辑、存储、提取和运行SQL命令和PL/SQL程序

▪处理数据、生成报表、存储、打印和格式化查询结果

▪在SQL数据库之间存取和拷贝数据

▪从一个用户端发送消息和接受消息

●与SQL的区别:

①不进入SQL缓冲区

②不用“;”(分号)结尾

●启动SQL*Plus

▪命令行方式启动SQL*PLUS

▪图形界面方式启动SQL*Plus

启动SQL*Plus

●命令行方式启动SQL*PLUS

▪sqlplus[username]/[password][@connect_string]|[NOLOG]

●图形界面方式启动SQL*PLUS

●退出SQL*PLUS:

SQL>exit

父表dept

●SQL>select*fromdept;

●DEPTNODNAMELOC

●------------------------------------

●10ACCOUNTINGNEWYORK

●20RESEARCHDALLAS

●30SALESCHICAGO

●40OPERATIONSBOSTON

Emp子表

EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO

------------------------------------------------------

7369SMITHCLERK790217-DEC-8080020

7499ALLENSALESMAN769820-FEB-81160030030

7521WARDSALESMAN769822-FEB-81125050030

7566JONESMANAGER783902-APR-81297520

7654MARTINSALESMAN769828-SEP-811250140030

7698BLAKEMANAGER783901-MAY-81285030

7782CLARKMANAGER783909-JUN-81245010

7788SCOTTANALYST756619-APR-87300020

7839KINGPRESIDENT17-NOV-81500010

7844TURNERSALESMAN769808-SEP-811500030

7876ADAMSCLERK778823-MAY-87110020

7900JAMESCLERK769803-DEC-8195030

7902FORDANALYST756603-DEC-81300020

7934MILLERCLERK778223-JAN-82130010

14rowsselected.

SQL*PLUS基础

●SQL命令的组成

数据定义语言(DDL):

creat(建立)drop(删除)

alter(修改表结构)rename(改名)

数据操纵语言(DML):

select(查询)insert(插入)

delete(删除)update(更新)

数据控制语言(DCL):

grant(授权)revoke(回收)

数据检索语言(SELECT)

事务处理控制命令:

包括:

commit(提交)、rollback(回退)savepoint(设置保存点),

练习

●什么是SQL?

SQL有什么功能?

●下列哪个语句可以从数据库中取得数据?

●A.selectB.updateC.insertD.delete

●3.指出SQL数据控制语言(DCL)中的命令。

●4.指出SQL数据操纵语言(DML)中的命令。

●5.指出SQL数据定义语言(DDL)中的命令。

ORACLE的数据类型

●下列代码演示了两者最重要的差别:

●SQL>createtabletester

●2(col1char(10),col2varchar2(10));

●SQL>insertintotestervalues('BRADY','BRADY');

●SQL>selectvsize(col1),vsize(col2)fromtester;VSIZE(COL1)VSIZE(COL2)

●----------------------

●105

ORACLE的数据类型

3.number(w,d)型—数值型

存放数值型数据,w代表总位数(1—38位),d代表小数点后的位数

number1234567.89

number(9)1234568

1234567.89number(9,2)1234567.89

number(9,1)1234567.9

number(7)1234568

number(7,-1)1234570

ORACLE的数据类型

●插入的值超过允许位数时,只要超出的位数在小数点后面,Oracle总是对其四舍五入。

●如果超出的位数在小数点前面,则Oracle返回错误。

●SQL>createtabletester22(col1number(15,2));

●SQL>insertintotestervalues(1234567891011);

●1rowcreated.

●SQL>insertintotestervalues(12345678910111);*ERRORatline1:

●ORA-01438:

valuelargerthanspecifiedprecisionallowsforthiscolumn

●SQL>insertintotester2values(1234567891011.121)

●1rowcreated.

ORACLE的数据类型

4.date型—日期型

●用于存放日期,范围从公元前4712年的1月1日到公元后4712年12月31日。

采用一种用七位数字表示日期时间的Juliandate(儒略日)存储方式。

●儒略日有如下优点:

①可进行日期计算②可进行有效性检查③有利于正确排序④能存储时间

●date型的缺省格式为:

DD-MON-YY(如19-Apr-02)

ORACLE的数据类型

6.多媒体数据类型

⑴lob:

用于存储无组织的大的文本文档、静态图像、音频、视频等多媒体信息,最大长度为4GB。

分为以下几种:

⑵clob:

存储文本、字符等大对象

⑶blob:

存储二进制的大对象,最大长度为4GB

⑷bfile:

存储指向数据库之外,由操作系统管理的巨型对象的指针。

BFILE类型数据的文件,可以存储在硬盘上,也可以在CD或DVD上。

其中:

BLOB、CLOB属于内部LOB类型,存储在数据库的表空间里,一个内部LOB数据的长度如果小于4000字节,存储在表的记录中;超过4000字节,自动移出表外单独存储。

但无论存在何处,都有一个LOB定位器(指向存储LOB数据实际位置的指针)存于表中的LOB列里。

BFILE属于外部LOB类型,BFILE数据是只读的。

●注:

一个表中可以有多个多媒体数据类型,解除了long型的限制;一个表可以在列中存储定位指针,而不存储真的句型对象本身。

练习

1.SALES表中的PROFITS列声明为NUMBER(10,2)。

下列哪个值无法在这个列中存储?

A.5392845.324B.871039453.1

C.75439289.34D.60079829.25

2.员工KING于1981年11月17日招聘,你对Oracle数据库发出下列查询:

selectvsize(hiredate)fromempwhereename=‘KING’。

下列哪个选项是返回的值?

A.4B.7C.9D.17

❿SALES表中将PRODUCT_NAME列定义为CHAR(40)。

后面要在表中增加一行,PRODUCT_NAME值为“CAT_TOYS”。

然后发出下列命令:

selectvsize(product_name)from

sales。

哪个选项是返回的值?

A.8B.12C.40D.4000

ORACLE中的比较运算符

比较运算符含义

=相等

!

=或<>不等于

>大于

>=大于等于

<小于

<=小于等于

in(列表)等于列表中的任意值

between值1and值2大于等于值1并且小于等于值2

like%匹配0个或任意个字符

_匹配一个字符

isnull空值

isnotnull非空值

●NAMElike’J%’ORLIKE’__J%’ORLIKE’%O%O%’

●Pagein(1,2,3)agebetween20and25

ORACLE中的比较运算符

●以下为多值比较运算符:

[not]in:

是否在所选数据集合当中

[not]any:

是否将一个值与子查询返回结果中的一

个值相比较

[not]all:

是否将所选的值与集合中所有值进行比

[not]exists:

exists表示一个子查询至少返回一行

时条件成立,notexists表示一个

子查询不返回任何行时条件成立

数据查询

●数据查询基础

●基本查询

●分组查询

●连接查询

●子查询

●合并查询

查询语言——SELECT

★基本形式:

select<查询的列>

from<表>

[where<条件>

[orderby<列名>[asc|desc]];

注:

①from后面的表可以是一个或多个

②WHERE条件限制查询信息,选择指定行

③orderby后面的列名可以是一列,也可以是多列

④asc表示升序排列,为系统缺省值;desc表

示降序排列

select语句:

●SQL>SELECTEMPNO,ENAME,SALFROMEMP

2WHEREENAME='SMITH';

●SQL语句可以在多行中输入。

●Oracle中的关键字不能跨行。

●SQL语句是大小写无关的,下列语句等效于上述语句:

●SQL>selectempno,ename,salfromemp

2whereename='SMITH';

●尽管列名、表名和关键字(如select、from与where)是大小写无关的,但单引号中的文本字符串(如上面的SMITH)是大小写相关的,因为Oracle精确存储输入的文本。

如果在EMP表中存储SMITH时输入大写字母,则Oracle精确存储大写字母。

查询语言——SELECT

●直接将SQL语句输入SQL*Plus时,要用分号(;)结束。

Selectdeptno,dnamefromdept;

●查找多列内容时,用‘,’将各字段分开,显示结果由select子句后各字段排列顺序决定。

基本查询

●无条件查询

●有条件查询

●查询排序

●查询统计

 无条件查询

●查询所有列

▪select*fromdept;

●查询指定列

▪selectdeptno,dnamefromdept;

▪selectempno,sal*0.18fromemp;

●使用函数

▪Selectempno,UPPER(ename)fromemp;

 无条件查询

●使用算术表达式及字符常量或数字常量

●selectename,sal*12fromemp;

select'3*4='||3*4fromdual;

select'Iam'||'ateacher'fromdual;

运算符优先顺序:

括号、指数、乘与除、加与减

◆伪表DUALselect语句中的列子句使用固定数字时,不需要实际表中的数据,这时可以使用伪表DUAL。

DUAL表只有一个DUMM列,包含一个X值。

执行select*fromDUAL语句,可以看到其中没有存储任何有意义的数据。

这只是个SQL结构,支持from子句中的表指定要求。

SQL>selectuserfromdual;

 无条件查询

◆接合列:

将列接合在一起,生成更有趣或更可读的输出,称为接合(concatenation)。

接合运算符就是把两个管道符放在一起:

||,也可以用concat()运算,传入两个列名。

下例中,ENAME列用两种方法与文本表达式和JOB列接合,得到有意义的结果:

●SQL>selectename||',whoisthe'||

●2concat(job,'forthecompany')

●3as"NameandRole“

●4fromemp;

●NameandRole

●--------------------------------------------SMITH,whoistheCLERKforthecompany

●ALLEN,whoistheSALESMANforthecompany

●WARD,whoistheSALESMANforthecompany

●JONES,whoistheMANAGERforthecompany

 无条件查询

●改变列标题

◆列名或表达式的别名可以在SQL查询输出中增加更有意义的标题名称。

默认情况下,oracle采用select语句中定义的列名,包括函数(如果有)。

但是,这个方法通常无法很好地说明列数据的意义。

oracle截断表达式以适应所返回列数据类型对应的长度,使问题更加严重。

例如:

格式:

SELECT列名别名,…FROM表名;

SQL>selectempno,enamenamefromemp;

EMPNONAME

-------

7369SMITH

7499ALLEN

7698WARD

 无条件查询

v当别名中有空格或/字符时,使用双引号括起来

v例:

那些雇员的奖金高于工资的5%

vSELECTENAME,SAL,COMM/SAL“C/SRATIO”

FROMEMP

WHERECOMM>0.05*SAL

ORDERBYCOMM/SALDESC;

v别名仅仅在使用了它的SELECT命令中起作用,而不影响查询结果

 无条件查询

●消除重复行

●对具有重复值的列显示惟一值,只要在列子句的列名前面加上distinct关键字,

●例如:

SQL>selectdistinctjobfromemp;

●JOB

●---------

●ANALYST

●CLERK

●MANAGER

●PRESIDENT

●SALESMAN

●提示:

要使用distinct关键字,就要将其放在SQL查询中select关键字的紧后面。

 无条件查询

●如果select语句的distinct关键字后面出现多个列名,则Oracle尝试找出这些列中的所有不同组合值。

例如:

●SQL>selectdistinctjob,empnofromemp;

●JOBEMPNO

●------------------

●ANALYST7788

●ANALYST7902

●CLERK7369

●CLERK7876

●CLERK7900

●CLERK7934

●MANAGER7566

●MANAGER7698

●MANAGER7782

●PRESIDENT7839

 无条件查询

查询其它用户的表

SQL>selectempno,ename,sal

2fromscott.emp;

查询中引用的表没有冠以结构前缀时,Oracle假设这个表是属于你的结构,。

如果你的结构中没有这个表,则要在表名前面冠以结构信息,将表拥有者和表名本身用点号分开。

对列加表名前缀,用点号(.)分开表名和列名。

SELECTtable_name.column_name,table_name.column_name

FROMschema.table_name;

有条件查询

●查询满足条件的元组可以通过WHERE子句实现。

●WHERE条件中常用的运算符号

有条件查询

●关系运算

▪selectempno,ename,salfromempwheredeptno=10;

▪Selectempno,ename,salfromempwheresal>1500

●确定范围

▪谓词BETWEENAND与NOTBETWEENAND。

▪selectempno,ename,sal,deptnofromempwheredeptnobetween10and20

▪selectempno,ename,sal,deptnofromempwheresalnotbetween1000and2000

有条件查询

●确定集合

▪谓词IN可以用来查找属性值属于指定集合的元组。

▪selectempno,ename,sal,deptnofromempwheredeptnoin(10,30);

●字符匹配

▪%(百分号)代表任意长(长度为0)字符串。

▪_(下划线)代表任意单个字符。

▪selectempno,ename,sal,deptnofromempwhereenamelike'S%';

•selectename,salfromemp

whereenamelike‘J_’;

有条件查询

●空值操作

▪涉及空值查询时使用ISNULL或ISNOTNULL,这里的IS不能用=替代。

▪selectempno,ename,sal,deptnofromempwherecommisnotnull

▪selectempno,ename,sal,deptnofromempwherecommisnull

有条件查询

●逻辑操作

▪用逻辑运算符NOT、AND和OR来联结多个查询条件。

▪优先级:

NOT、AND、OR(用户可以用括号改变优先级)。

▪IN谓词实际上是多个OR运算的缩写。

▪selectempno,ename,sal,deptnofromempwherecommisnotnullandsal>1500;

▪selectename,job,salfromemp

where(job='SALESMAN'orjob=‘CLERK')andsal>1500;

查询排序

●升序、降序排序

●多列排序

●表达式排序

●使用别名排序

●使用列位置编号排序

查询排序

●升序、降序排序

▪ASC:

升序(缺省);DESC:

降序

▪SELECTempno,ename,salFROMempORDERBYsal;

▪SELECTempno,ename,salFROMempORDERBYsalDESC;

●多列排序

▪首先按照第一个列或表达式进行排序;当第一个列或表达式的数据相同时,以第二个列或表达式进行排序,以此类推。

▪SELECT*FROMempORDERBYdeptno,salDESC;

查询排序

●按表达式排序

▪可以按特定的表达式进行排序。

▪SELECTempno,ename,salFROMempORDERBYsal*12;

●使用别名排序

▪可以使用目标列或表达式的别名进行排序。

▪SELECTempno,sal*12salaryFROMempORDERBYsalary;

●使用列位置编号排序

▪如果列名或表达式名称很长,那么使用位置排序可以缩短排序语句的长度。

▪SELECTempno,sal*12salaryFROMempORDERBY2;

练习

●列出所有在部门20工作的雇员姓名,且列名为name

●列出名字不以‘N’开头的工作地点

●找出工资比奖金高的雇员,按工资降序排列,姓名升序排列

●列出有关雇员姓名、奖金收入百分比的信息,按

雇员姓名排序,不包括奖金未知的雇员

选择:

1.你用SQL*Plus执行一些数学函数。

对select语句中定义的值(而不是从表列中取得的值)进行数学运算时,可以用哪个表?

A.EMPB.包含列值的表C.DUALD.Oracle定义的表

练习

2.PLAYS表有两列PLAY_NAME与AUTHOR,下面是该表的输出,它们是用哪个SQL语句产生的?

PLAY_TABLE

-------------------------------------"MidsummerNightsDream",SHAKESPEARE

"WaitingForGodot",BECKETT

"TheGlassMenagerie",WILLIAMS

A.selectPLAY_NAME||AUTHOR

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2