OCP11g IZ0-047

1、运算符

wKioJlLEAnjgIaFwAAC22ItJ-0I946.jpg

2、Order by

ASC NULL LAST

DESC NULL FIRST

混合排序:可同时指定1或多列升、降序

select depno,cityno,salary from emp

order depno,cityno,salary desc-- salary降序,depno cityno默认升序

3、数据类型

字符(字母数字字符)

CHAR(n)定长字符串,忽略n默认为1

VARCHAR2(n)变长字符串,不可忽略n

数值(零、负数、正数)

NUMBER(n,m)n精度(小数点左右之和),m小数点后位数,忽略nmn最大m0

m输入值超过声明范围四舍五入,m为负数表示小数点左侧有多少位被四舍五入

日期

DATE日期和时间,年月日小时分种秒。可将日期值保存为文字,用''

TIMESTAMP(n)DATE扩展,增加带小数秒。n小数秒精度范围1-9,省略n默认6

TIMESTAMP(n) WITH TIME ZONE带时间标识符TIMESTAMP扩展,不能应用unique primary foreign约束

TIMESTAMP(n) WITH LOCAL TIME ZONE存储按服务器时区,显示按client时区

INTERVAL YEAR(n) TO MONTHn范围0-9,默认2,年和月定义的时间间隔,用于存储日期差值

INTERVAL DAY(n1) TO SECOND(n2)n1范围0-9,默认2n2小数秒精度范围0-9,默认6

天、小时、分、秒定义的时间间隔,用于存储日期差值

LOB 大对象(存储在数据内)

可定义多个LOB列,不能unique primary foreign约束,

不能与DISTINCTGROUP BYORDER BY、连接,能select insert delete

BLOB大规模二进制对明,如图片、视频,不需指定精度或范围,最大16TB

CLOB 大规模文本数据,不需指定精度或范围,最大16TB

NCLOB Unicode格式接受CLOB

BFILE  存储在数据库外的操作系统文件,只读的。当二进制处理

 

隐式转换

varchar2 char --> number

varchar2 char --> date

number --> varchar2

date --> varchar2

number date 不能隐式转换

显式转换

to_date('字符串','fxMonth DD,YYYY')字符串转换为日期

select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dualerror

select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual字符到日期转换

to_number('字符串','') 字符串转换为数据

to_char(date|number,'format_model')日期、数据转换为字符串

select sysdate,to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual日期到字符转换

运算

日期 +- 数字 = 日期数字 +- 日期 = 日期日期 +- 日期 = 数字

 

select count(*) from emp

group by job---job分组,分别计算每组的条目数

select max(sal) from emp

group by job---job分组,每组中薪水最高的职员

select min(sal) from emp

group by job---job分组,每组中薪水最低的职员

select avg(sal) from emp

group by job---job分组,每组的平均薪水

select sum(sal) from emp

group by job---job分组,每组职员总薪水

select avg(sal) "avg_sal" from emp

group by job

order by avg_sal---job分组,每组的平均薪水,order by 须是分组函数字段

select job,avg(sal) from emp

where job not like 'PRESID%'

having avg(sal) > 1500

group by job;

order by 2

select job,avg(sal) from emp

where job not like 'PRESID%'

group by job;

having avg(sal) > 1500

order by 2

两个语句表达意思一样

0步:过滤掉PRESID%

1步:对数据行用group byjob字段分组

2步:每组用以sal字段应用avg函数

3步:用having筛选

4步:排序

count(*)null

count|avg|min|max|sum(exper)忽略null

count|avg|min|max|sum column,exper ALL)等同上行,忽略null

count|avg|min|max|sum distinct column去重

 

表链接

select e.empno,e.ename,e.sal,e.deptno,d.loc

from emp e,dept d

where e.deptno=d.deptno--ORACLE实现自连接方法

select country_name

from countries natural join regions

where region_name='americas'

select e.empno,e.ename,e.sal,deptno,d.loc-- 连接字段不能加表名

from emp e

join dept d

using(deptno) -- 可用多字段

select e.empno,e.ename,e.sal,e.deptno,d.loc

from emp e

join dept d

on e.deptno=d.deptno

select e.empno,e.ename,e.sal,e.deptno,d.loc

from emp e

left outer join dept d

on e.deptno=d.deptno

select e.empno,e.ename,e.sal,e.deptno,d.loc

from emp e,dept d

where e.deptno=d.deptno(+)--ORACLE实现左外连接方法

select e.empno,e.ename,e.sal,e.deptno,d.loc

from emp e

right outer join dept d

on e.deptno=d.deptno

select e.empno,e.ename,e.sal,e.deptno,d.loc

from emp e,dept d

where e.deptno(+)=d.deptno--ORACLE实现右外连接方法

select e.empno,e.ename,e.sal,e.deptno,d.loc

from emp e

full outer join dept d

on e.deptno=d.deptno

select *

from regions

cross join countries 

where country_id='ca'

select country_name

from countries regions--ORACLE实现交叉连接方法

 

复合查询

select * from tbs01

union all--返回两个查询合并结果集,按自然顺序表1+2行。不排序、不去重

select * from tbs02

select * from tbs01

union-- 返回两个查询的合并结果集,表1+2,后排序并去重

select * from tbs02

select * from tbs01

intersect-- 同时出现在两个查询的结果集中,排序并删除重复行(表12交集,后排序去重)

select * from tbs02

select * from tbs01

minus--返回第一个结果集的行,且该行没有出现在第二个结果集,排序并删除重复行

select * from tbs02

列数量相同(列排列顺序应相同,列名可不同)、数据类型兼容(不隐性转换),输出结果用第一个查询的列名,数据类型用精度最高的

复合查询输出结果一定要排序,默认按列从左到右排序(删除重复行),可在复合查询结尾加order by,但不能在单个select中加order by

复合查询由几个查询组成,每个查询单独执行,然后合并结果集。合并运算通过排序结果集和合并它们实现。

 

单行函数

⑴、字符函数

select upper(‘smith’) from dual转大写

select lower(‘smith’) from dual转小写

select initcap(‘hello world’) from dual单词首字母大小

select concat(‘hello’,’world’) from dual字符连接

select substr(‘hello’,1,3) from dual

源字符串 hello

1个字符开始,截3

INSTR('CORPORATE FLOOR','OR', 3, 2)

源字符串为'CORPORATE FLOOR', 

在字符串中查找'OR'

第三个字符位置开始查找"OR",取第2个匹配项的位置

select length(‘hello’) from dual字符串长度

lpad(‘string’,n,’string1’)string1可选

lpad('tech', 7); 将返回' tech'返回string7个字符

lpad('tech', 7, '0'); 将返回'000tech'返回string7个字符,如不够在左边用string1填充

lpad('tech', 2); 将返回'te'返回string2个字符

rpad

rpad('tech', 7); 将返回' tech'

rpad('tech', 7, '0'); 将返回'tech000'

rpad('tech', 2); 将返回'te'

trim

instr

select replace(‘hello’,’l’,’x’) from dual字符串替换

||连接运算符

select ename ||'年薪为:'|| (500+sal)*12 "员工的年薪"

from emp;

select firt_name || last_name “姓名” from student字符串连接

⑵、数值函数

select round(789.586,2) from dual 四舍五入,2小数位置

select trunc(789.586,2) from dual截断,2小数位置

select mod(10,3) from dual取模

⑶、日期函数

months_between(date2,date1)两个日期相减后的月数

add_months(date,6)给出日期加6个月

next-day(sysdate,’day’)给出日期的下一天

last_day(date)给出日期所在月的最后一天

sysdate当前日期

round

trunc

 

 

你可能感兴趣的:(OCP11g,IZ0-047)