Oracle 11g OCP051培训笔记文档格式.docx

上传人:b****5 文档编号:18693822 上传时间:2022-12-31 格式:DOCX 页数:143 大小:91.35KB
下载 相关 举报
Oracle 11g OCP051培训笔记文档格式.docx_第1页
第1页 / 共143页
Oracle 11g OCP051培训笔记文档格式.docx_第2页
第2页 / 共143页
Oracle 11g OCP051培训笔记文档格式.docx_第3页
第3页 / 共143页
Oracle 11g OCP051培训笔记文档格式.docx_第4页
第4页 / 共143页
Oracle 11g OCP051培训笔记文档格式.docx_第5页
第5页 / 共143页
点击查看更多>>
下载资源
资源描述

Oracle 11g OCP051培训笔记文档格式.docx

《Oracle 11g OCP051培训笔记文档格式.docx》由会员分享,可在线阅读,更多相关《Oracle 11g OCP051培训笔记文档格式.docx(143页珍藏版)》请在冰豆网上搜索。

Oracle 11g OCP051培训笔记文档格式.docx

同义词

第十五章:

序列

第十六章:

外部表

第三部分:

SQL语言的扩展

第十七章:

INSERT语句总结

第十八章:

DML和DDL语句的其他用法

第十九章通过GROUPBY产生统计报告

第二十章:

ORACLE分层查询

第二十一章:

Oracle的Timezone

第二十二章:

正则表达式

第一章、Oracle命令类别:

数据操作语言:

DML:

select;

insert;

delete;

update;

merge.

数据定义语言:

DDL:

create;

alter;

drop;

truncate;

rename;

comment.

事务控制语言:

TCL:

commit;

rollback;

savepoint.

数据控制语言:

DCL:

grant;

revoke.

第二章、SQL的基本函数

2.1单行函数与多行函数

单行函数:

指一行数据输入,返回一个值的函数。

所以查询一个表时,对选择的每一行数据

都返回一个结果。

大写转小写

SQL>

selectempno,lower(ename)fromemp;

多行函数:

指多行数据输入,返回一个值的函数。

所以对表的群组进行操作,并且每组返回

一个结果。

(典型的是聚合函数)

selectsum(sal)fromemp;

2.2单行函数的几种类型

2.2.1字符函数

lower('

SQLCourse'

)----->

sqlcourse返回小写

upper('

sqlcourse'

SQLCOURSE返回大写

initcap('

SQLcourse'

SqlCourse返回首字母大写

concat('

good'

'

string'

)---->

goodstring拼接//只能拼接2个字符串

substr('

String'

1,3)---->

Str从第1位开始截取3位数

instr('

t#i#m#r#a#n#'

#'

3)--->

从第3位起始找#字符在那个绝对位置

length('

6长度

lpad('

first'

10,'

$'

)左填充

rpad(676768,10,'

*'

)右填充

replace('

JACKandJUE'

J'

BL'

BLACKandBLUE

trim('

m'

from'

mmtimranm'

timran

2.2.2数值函数

round对指定的值做四舍五入,round(p,s)s为正数时,表示小数点后要保留的位数,s也可以

为负数,但意义不大。

round:

按指定精度对十进制数四舍五入,如:

round(45.923,1),结果,45.9

round(45.923,0),结果,46

round(45.923,-1),结果,50

trunc对指定的值取整trunc(p,s)

trunc:

按指定精度截断十进制数,如:

trunc(45.923,1),结果,45.9

trunc(45.923),结果,45

trunc(45.923,-1),结果,40

mod返回除法后的余数

selectmod(100,12)fromdual;

MOD(100,12)

-----------

4

2.2.3日期函数

因为日期在oracle里是以数字形式存储的,所以可对它进行加减运算,计算是以天为单位。

缺省格式:

DD-MON-RR.

可以表示日期范围:

(公元前)4712至(公元)9999

时间格式

selectto_date('

2003-11-0400:

00:

00'

'

YYYY-MM-DDHH24:

MI:

SS'

)FROMdual;

selectsysdate+2fromdual;

//当前时间+2day

selectsysdate+2/24fromdual;

//当前时间+2hour

select(sysdate-hiredate)/7weekfromemp;

//两个date类型差,结果是以天为整数位

的实数。

MONTHS_BETWEEN//计算两个日期之间的月数

selectmonths_between('

1994-04-01'

1992-04-01'

)mmfromdual;

查找emp表中参加工作时间>

30年的员工

select*fromempwheremonths_between(sysdate,hiredate)/12>

30;

考点:

很容易认为单行函数返回的数据类型与函数类型一致,对于数值函数类型而言的确如

此,但字符和日期函数可以返回任何数据类型的值。

比如instr函数是字符型的,

months_between函数是日期型的,但它们返回的都是数值。

ADD_MONTHS//给日期增加月份

selectadd_months('

1992-03-01'

4)amfromdual;

LAST_DAY//日期当前月份的最后一天

selectlast_day('

1989-03-28'

)l_dfromdual;

NEXT_DAY//NEXT_DAY的第2个参数可以是数字1-7,分别表示周日--周六(考点),比如

要取下一个星期六,则应该是:

selectnext_day(sysdate,7)FROMDUAL;

ROUND(p,s),TRUNC(p,s)在日期中的应用,如何舍入要看具体情况,s是MONTH按30天计,

应该是15舍16入,s是YEAR则按6舍7入计算。

SELECTempno,hiredate,

round(hiredate,'

MONTH'

)ASround,

trunc(hiredate,'

)AStrunc

FROMemp

WHEREempno=7788;

YEAR'

WHEREempno=7839;

2.2.4几个有用的函数

1)decode函数和case表达式:

实现sql语句中的条件判断语句,具有类似高级语言中的if语句的功能。

decode函数源自oracle,case表达式源自sql标准,实现功能类似,decode语法更简单些。

decode函数用法:

SELECTjob,sal,

DECODE(job,'

ANALYST'

SAL*1.1,

'

CLERK'

SAL*1.15,

MANAGER'

SAL*1.20,

SAL)

REVISED_SALARY

/

case表达式第一种用法:

selectjob,sal,casejob

when'

thenSAL*1.1

thenSAL*1.15

thenSAL*1.20

elsesalend

fromemp

case表达式第二种用法:

selectjob,sal,

casewhenjob='

whenjob='

以上三种写法结果都是一样的:

JOBSALREVISED_SALARY

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

CLERK800920

SALESMAN16001600

SALESMAN12501250

MANAGER29753570

MANAGER28503420

MANAGER24502940

ANALYST30003300

PRESIDENT50005000

SALESMAN15001500

CLERK11001265

CLERK9501092.5

CLERK13001495

case第二种语法比第一种语法增加了搜索功能。

形式上第一种when后跟定值,而第二种还

可以使用比较符。

看一个例子

selectename,sal,

casewhensal>

=3000then'

高级'

whensal>

=2000then'

中级'

else'

低级'

end

级别

ENAMESAL级别

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

SMITH800低级

ALLEN1600低级

WARD1250低级

JONES2975中级

MARTIN1250低级

BLAKE2850中级

CLARK2450中级

SCOTT3000高级

KING5000高级

TURNER1500低级

ADAMS1100低级

JAMES950低级

FORD3000高级

MILLER1300低级

2)DISTINCT(去重)限定词的用法:

//distinct貌似多行函数,严格来说它不是函数。

selectdistinctjobfromemp;

//消除表行重复值。

JOB

---------

CLERK

SALESMAN

PRESIDENT

MANAGER

ANALYST

selectdistinctjob,deptnofromemp;

//重复值是后面的字段组合起来考虑的

JOBDEPTNO

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

MANAGER20

PRESIDENT10

CLERK10

SALESMAN30

ANALYST20

MANAGER30

MANAGER10

CLERK30

CLERK20

3)CHR()函数和ASCII()函数

chr()函数将ASCII码转换为字符:

ASCII码–》字符

ascii()函数将字符转换为ASCII码:

字符–》ASCII码

在oracle中chr()函数和ascii()是一对反函数。

求字符对应的ASCII值

selectASCII('

A'

ASCII('

----------

65

selectchr(65)fromdual;

C

-

A

4)sys_context获取环境上下文的函数(很有用)

scott远程登录

selectSYS_CONTEXT('

USERENV'

IP_ADDRESS'

)fromdual;

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

192.168.0.136

selectsys_context('

userenv'

sid'

SYS_CONTEXT('

SID'

129

terminal'

TERMINAL'

TIMRAN-222C75E5

5)处理空值的几种函数(见第四章)

第三章、SQL的数据类型

3.1四种基本的常用数据类型

1、字符型,2、数值型,3、日期型,4、大对象型

3.1.1字符型:

char固定字符,最长2000个

varchar2可变长字符,最长4000个,最小值是1

nchar/nvarchar2NCHAR/NVARCHAR2类型的列使用国家字符集

raw和longraw固定/可变长度的二进制数据长度最2G,可存放多媒体图象声音

等。

(老类型,逐步淘汰)

LONG可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,一个表

中最多一个LONG列。

(老类型,逐步淘汰)。

3.1.2数值型:

number(p,s)实数类型,以可变长度的内部格式来存储数字。

这个内部格式精度可以

高达38位。

int整数型,number的子类型,范围同上

3.1.3日期型:

date日期的普通形式,表示精度只能到秒级。

timestamp日期的扩展形式,表示精度可达秒后小数点9位(10亿分之1秒)。

timestampwithtimezone带时区

timestampwithlocaltimezone时区转换成本地日期

系统安装后,默认日期格式是DD-MON-RR,RR和YY都是表示两位年份,但RR是有世纪认

知的,它将指定日期的年份和当前年份比较后确定年份是上个世纪还是本世纪(如表)。

当前年份指定日期RR格式YY格式

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

199527-OCT-9519951995

199527-OCT-1720171917

200127-OCT-1720172017

201327-OCT-9519952095

3.1.4LOB型:

大对象是10g引入的,在11g中又重新定义,在一个表的字段里存储大容量

数据,所有大对象最大都可能达到4G

CLOB:

用来存储单字节的字符数据,包含在数据库内。

NCLOB:

用来存储多字节的字符数据

BLOB:

用于存储二进制数据,包含在数据库内。

BFILE:

存储在数据库之外的二进制文件中,这个文件中的数据只能被只读访问。

CLOB,NCLOB,BLOB都是内部的LOB类型,没有LONG只能有一列的限制(考点)。

保存图片或电影使用BLOB最好、如果是小说则使用CLOB最好。

虽然LONGRAW也可以使用,但LONG是oracle将要废弃的类型,因此建议用LOB。

当然说将要废弃,但还没有完全废弃,比如oracle11g里的重要视图dba_views,对于text(视

图定义)仍然沿用了LONG类型。

Oracle11g重新设计了大对象,推出SecureFileLobs的概念,相关的参数是db_securefile,采

用SecureFileLobs的前提条件是11g以上版本,ASSM管理等,符合这些条件的BasicFileLobs

也可以转换成SecureFileLobs。

较之过去的BasicFileLobs,SecureFileLobs有几项改进:

1)压缩,2)去重,3)加密。

当createtable定义LOB列时往往用到LOB_storage_clause。

之后对LOB的操作通常使用Oracle

提供的DBMS_LOB包,通过编写PL/SQL块完成LOB数据的管理。

3.2数据类型的转换

隐性类型转换和显性类型转换。

3.2.1隐性类型转换:

是指oracle自动完成的类型转换。

在一些带有明显意图的字面值上,可以由Oracle自主判

断进行数据类型的转换。

如:

selectempno,enamefromempwhereempno='

7788'

;

//empno本来是数值类型的,这

里字符'

隐性转换成数值7788

EMPNOENAME

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

7788SCOTT

selectlength(sysdate)fromdual;

//将data型隐转成字符型后计算长度

LENGTH(SYSDATE)

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

19

SELECT'

12.5'

+11FROMdual;

//将字符型‘12.5’隐转成数字型再求和

+11

23.5

SELECT10+('

||11)FROMdual;

//将数字型11隐转成字符与‘12.5’合并,

其结果再隐转数字型与10求和

10+('

||11)

22.511

3.2.2显性类型转换是强制完成类型转换(推荐),转换函数形式有三种:

TO_CHAR

TO_DATE

TO_NUMBER

1)日期-->

字符

selectename,hiredate,to_char(hiredate,'

DD-MON-YY'

)month_hiredfromempwhere

ename='

SCOTT'

ENAMEHIREDATEMONTH_HIRED

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

SCOTT1987-04-1900:

0019-4月-87

fm压缩空格或左边的'

0'

fmyyyy-mm-dd'

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

001987-4-19

//其实DD-MM-YY是比较糟糕的一种格式,因为当日期中天数小于12时,DD-MM-YY和

MM-DD-YY容易造成混乱。

2)数字-->

字符:

9表示数字,L本地化货币字符

selectename,to_char(sal,'

L99,999.99'

)Salaryfromempwhereename='

ENAMESALARY

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

SCOTT¥3,000.00

3)字符-->

日期

selectto_date('

1983-11-12'

'

YYYY-MM-DD'

)tmp_DATEfromdual;

TMP_DATE

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

1983-11-1200:

00

4)字符-->

数字:

SELECTto_number('

$123.45'

$9999.99'

)resultFROMdual;

RESULT

123.45

使用to_number时如果使用较短的格式掩码转换数字,就会返回错误。

不要混淆

to_number和to_char转换。

例如:

selectto_number('

123.56'

999.9'

selectto_number(123.56,'

)fromdual

*

第1行出现错误:

ORA-01722:

无效数字

selectto_char(123.56,'

TO_CHA

------

123.6

4.1运算符及优先级:

算数运算符

*,/,+,-,

逻辑运算符

not,and,or

比较运算符

单行比较运算=,>

>

=,<

<

=,<

>

多行比较运算>

any,>

all,<

any,<

all,in,notin

模糊比较like(配合“%”和“_”)

特殊比较isnull

()优先级最高

selectename,job,sal,commfromempwherejob='

SALESMAN'

ORjob='

PRESIDENT'

ANDsal>

1500;

条件子句使用比较运算符比较两个选项,重要的是要理解这两个选项的数据类型。

4.2用BETWEENAND操作符来查询出在某一范围内的行.

SELECTename,salFROMempWHEREsalBETWEEN1000AND1500;

//between低值and高值,包括低值和高值。

4.3模糊查询及其通配符:

在where字句中使用like谓词,常使用特殊符号"

%"

或"

_

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1