关于Oracle认证,OCA、OCP、OCM三个等级的学习前景都怎么样啊?_百度知 ...

发布网友 发布时间:2022-04-22 20:48

我来回答

11个回答

懂视网 时间:2022-05-01 04:32

Oracle学习系列3
************************************************************************************
多表查询:
		1,SQL1999语法对多表查询的支持
		2,分组统计及统计函数的使用
		3,子查询,并结合多表查询,分组统计做复杂查询
		4,数据库的更新操作
		5,事务处理和数据库死锁
		

************************************************************************************
多表查询:
	语法:
		select { distinct } * | col1 别名1 col2 别名2 ...
			from tab1 别名1 , tab2 别名2 , tab3 别名3 ,...
				{where 条件s }
					{ order by col1 ASC | DESC , col2 ASC | DESC, ...} ;
					
	同时查询emp表和dept表:
		select *
			from emp, dept ; //产生笛卡尔积
			
		加入where语句:
			select *
				from emp e,dept d
					where e.deptno = d.deptno;
					
	要求查询出雇员的编号,姓名,部门编号,部门名称,部门位置:
			select e.empno, e.ename, d.deptno, d.dname, d.loc
				from emp e, dept d
					where e.deptno=d.deptno;
					
	要求查询出每个雇员的姓名,工作,雇员的直接上级领导的姓名:
			select e.ename, e.job, m.ename, d.dname
				from emp e, emp m ,dept d
					where e.mgr = m.empno and e.deptno=d.deptno ;
					
	要求查询出每个雇员的姓名,工资,部门名称,工资在公司的等级,及其领导的姓名及工资所在公司的等级:
		select e.ename, e.sal, d.dname, s.grade, m.ename, m.sal, ms.grade
			from emp e, dept d, salgrade s, emp m, salgrade ms
				where e.deptno=d.deptno and (e.sal between s.losal and s.hisal)
						and e.mgr=m.empno and ( m.sal between ms.losal and ms.hisal);
						
			进一步:按照下面样式显示工资等级:
				1:第五等工资
				2:第四等工资
				3:第三等工资
				4:第二等工资
				5:第一等工资
				此时肯定使用decode()函数:
					
				select e.ename, e.sal, d.dname, DECODE(s.grade, 1,‘第五等工资‘,2,‘第四等工资‘,3,‘第三等工资‘,4,‘第二等工资‘,1,‘第一等工资‘),
						 m.ename,m.sal,DECODE(ms.grade, 1,‘第五等工资‘,2,‘第四等工资‘,3,‘第三等工资‘,4,‘第二等工资‘,1,‘第一等工资‘), 
					from emp e, dept d, salgrade s, emp m, salgrade ms
								where e.deptno=d.deptno and (e.sal between s.losal and s.hisal)
											and e.mgr=m.empno 
										 and ( m.sal between ms.losal and ms.hisal);
			
************************************************************************************

	左、右连接<重点>
	
	(+)= -->右连接,
	 =(+) -->左连接, 默认
		
		
		
		select e.empno, e.ename, d.deptno, d.dname, d.loc
			from emp e, dept d
				where e.deptno(+)=d.deptno; //表示以dept表为准 。右连接

************************************************************************************

SQL:1999语法对SQL的支持<了解>

	交叉连接(cross join): <产生笛卡尔积>
		select * from emp corss join dept ;
		
	自然连接(natural join):<自动进行关联字段的匹配>
		select * from emp natural join dept ;
		
	USING子句:<直接指定关联的操作列>
		select *
			from emp e join dept d USING(deptno)
				where deptno=30;
				
	ON子句:<用户自定义连接条件>
		select *	
			from emp e join dept d ON(e.deptno=d.deptno)
				where e.deptno=30 ;
				
	左连接(left join),右连接(right join):
		select e.ename, d.deptno, d.dname, d.loc
			from emp e right outer join dept d
				on(e.deptno=d.deptno) ;
				
************************************************************************************
组函数和分组统计:<重点>

	count(): 	//求出全部记录数
	max():		//	求出一组中最大值
	min():		//最小值
	avg(): 		//平均值
	sum(): //求和
		
		count()函数:
			select count(emp) from emp ; //查询多少行记录
			
		max(),min()函数:求出所有员工的最低工资
			select max(sal) ,min(sal) , sum(sal) from emp ;
			
分组统计<group by>:
	
		语法:
		select { distinct } * | col1 别名1 col2 别名2 ...
			from tab1 别名1 , tab2 别名2 , tab3 别名3 ,...
				{where 条件s }
					{group by 分组条件}
						{ order by col1 ASC | DESC , col2 ASC | DESC, ...} ;
			
		求出每个部门的雇员数量,可定按照部门编号划分:
			select deptno, count(empno)
				from emp
					group by deptno ;
					
		求出每个部门的平均工资:
			select deptno, avg(sal)
				from emp 
					group by deptno ;
---------------------------------------------------------------------------------
		select deptno, count(empno) from emp ;// error:不是单组分组函数
		/**
			若程序使用了分组函数,条件如下;
				1.程序中存在group by ,并且指定了分组条件,这样可以将分组条件一起查询出来
				2.若不用分组的话,则只能单独使用分组函数
				3.在使用分组函数时,不能出现分组函数和分组条件(group by )之外的字段
						|
		 */		 |
		 				|
						^
				select deptno ,empno, count(empno)	 //error:empno不是group by 的表达式
					from emp
						group by deptno ;
							
							
		按部门分组,并显示部门的名称,及每个部门的员工数:
			select d.dname, count(e.empno)
				from dept d, emp e
					where d.deptno = e.deptno
						group by d.dname ;
		
		
		要求显示出平均工资大于2000的部门编号和平均工资:
			 error:	select deptno , avg(sal)
			 			from emp
							where avg(sal) >2000 //此处不允许使用分组函数
								group by deptno ;
 /**
 	分组函数只能在分组中使用,不允许出现在where语句中,若现在假设要指定分组条件,则只能通过第二种指令:having,此时SQL语法格式:
		
			select { distinct } * | col1 别名1 col2 别名2 ...
				from tab1 别名1 , tab2 别名2 , tab3 别名3 ,...
					{where 条件s }
						{group by 分组条件 { having 分组条件 } }
							{ order by col1 ASC | DESC , col2 ASC | DESC, ...} ;
				
				
	*/
								
			correct: select deptno, avg(sal)
						from emp
							group by deptno having avg(sal)>2000 ;
							
							
		显示非销售人员工作名称以及从事统一工作雇员的月工资的总和,并且满足从事同一工作的雇员的月工资合计大于$5000,输出结果按月工资的合计升序排列:
		
		/**
		
			分组简单的原则:
				1,只要一列上存在重复的内容才有可能考虑到分组
				2,分组函数可以嵌套使用,但是嵌套使用时不能再出现group by 后的字段:
					ex:求出平均工资最高的部门:
						error:	 select deptno, max(avg(sal)) //不是单组分组函数
									from emp
										group by deptno;
										
						correct: select max(avg(sal))
									from emp
										group by deptno ;
		--------------------------------------------------------------------------------
			分析:1,显示全部非销售人员:job<> ‘salesman‘
			
					select * from emp where job <>‘salesman‘ ;
					
				2,按工作分组,同时求出工资的总和:
				
					select job,sum(sal) 
						from emp 
							where job<> ‘salesman‘
								group by job ;
								
				3,对分组条件进行,工资总和大于500:
					select job,sum(sal) 
						from emp 
							where job<> ‘salesman‘
								group by job having sum(sal)>5000 ;		
								
				4,按升序排序:
					select job,sum(sal) su
						from emp 
							where job<> ‘salesman‘
								group by job having sum(sal)>5000 
									order by su ;	
		 */
		
************************************************************************************

子查询:
	在一个查询内部还可以包括另一个查询:
	
	分类:
		单列子查询:返回的结果是一列的一个内容 (出现几率最高)
		单行子查询:返回多个列,有可能为一条完整的记录
		多行子查询:返回多个记录
		
	
	格式:
		select { distinct } * | col1 别名1 col2 别名2 ...
			from tab1 别名1 , tab2 别名2 , 
				(
						select { distinct } * | col1 别名1 col2 别名2 ...
							from tab1 别名1 , tab2 别名2 , tab3 别名3 ,...
								{where 条件s }
									{group by 分组条件 { having 分组条件 } }
										{ order by col1 ASC | DESC , col2 ASC | DESC, ...} ;
					
					 )别名x 	tab3 别名3 ,...
					{where 条件s 
						(
						select { distinct } * | col1 别名1 col2 别名2 ...
							from tab1 别名1 , tab2 别名2 , tab3 别名3 ,...
								{where 条件s }
									{group by 分组条件 { having 分组条件 } }
										{ order by col1 ASC | DESC , col2 ASC | DESC, ...} ;
					
					 )
					
					
					}
						{group by 分组条件 { having 分组条件 } }
							{ order by col1 ASC | DESC , col2 ASC | DESC, ...} ;
							
	
 要求查询出比7654工资高的全部雇员的信息:
 		分析:
			1,7654雇员的工资是多少:
				select sal from emp where empno=7654 ;
				
			2,只要是其他工资大于7654编号雇员的工资,则符合条件:
				select * 
					from emp
						where sal > (
						
							select sal from emp where empno=7654; //子查询语句处
							
							)		;
			
		
	要求查询出工资比7654高,同时与7788从事相同工作的全部雇员信息:
		查询出7654雇员的工资:
			select sal from emp where empno=7654 ;
			
		与7788从事相同的工作:
			select job from emp 
				where empno = 7788;
		
		综合查找:
			select * 	
				from emp
					where sal >(
					
							select sal from emp where empno=7654 
						
						)and job =(
								select job from emp where empno =7788
						
						 ) ;
	

	要求查询出工资最低雇员姓名,工作,工资:
		最低工资:
			select min(sal) from emp ;
			
		查询所有:
			select * 
				from emp
					where sal =(
					
						select min(sal) from emp 
				
						) ;
						
		要求查询:部门名称,部门员工数,部门的平均工资,部门的最低收入的雇员的姓名:
		
			1,求出每个部门的员工数量,平均工资
				select deptno,count(empno) ,avg(sal)
					from emp
						group by deptno ;
						
			2,查出部门的名称:
				select d.dname, ed.c, ed.a 
					from dept d, (
						select deptno,count(empno) ,avg(sal)
							from emp
								group by deptno
					 ) ed
						where d.deptno=ed.deptno ;
			3,求出最低收入的雇员姓名:
				select d.dname, ed.c, ed.a ,e.ename
					from dept d, (
						select deptno,count(empno) ,avg(sal),min(sal) min							from emp
								group by deptno
					 ) ed ,emp e
						where d.deptno=ed.deptno 
								and e.sal =ed.min ; 
					//若一个部门中存在两个最低工资的雇员,则该脚本会出现错误
					
  ------------------------------------------------------

子查询中的三种操作符:
 
				IN, ANY, ALL
		求出每个部门的最低工资的雇员信息:
			select * 
			from emp 
				where sal IN ( //指定查询范围
				
						select min(sal) 
							from emp 
					  	group by deptno	
								
						) ;
						
		=ANY : 与IN功能一样
			select * 
			from emp 
				where sal =ANY ( //指定查询范围
				
						select min(sal) 
							from emp 
					  	group by deptno	
								
						) ;
		
		>ANY:比里面最小的值要大 
			select * 
			from emp 
				where sal >ANY ( //指定查询范围
				
						select min(sal) 
							from emp 
					  	group by deptno	
								
						) ;
						
		<ANY :比里面最大的值要小
			select * 
			from emp 
				where sal <ANY ( //指定查询范围
				
						select min(sal) 
							from emp 
					  	group by deptno	
								
						) ;
						
		==========================				
		>ALL:比最大的值要大
		
		 	select * 
			from emp 
				where sal >ALL ( //指定查询范围
				
						select min(sal) 
							from emp 
					  	group by deptno	
								
						) ;

		<ALL:比最大的值要小
			select * 
			from emp 
				where sal <ALL ( //指定查询范围
				
						select min(sal) 
							from emp 
					  	group by deptno	
								
						) ;

 /**
 		对于子查询中,还可以进行多列子查询,一个子查询中同时返回多个查询的列
 				select *
					from emp
						where (sal, NVL(comm,-1)) IN(
						
											select sa,NVL(comm, -1) 
												from emp 
													where deptno=20
												
												 ) ;
 
 */

 

Oracle学习系列3

标签:

热心网友 时间:2022-05-01 01:40

IT业对专家的要求很高,职业竞争压力很大。无论是新进入这个行业的人,还是此行业中的老手,都需要知道他们的那些技术背景能真正吸引到雇主的眼光。同时,雇主们也需要一个标准帮助他们挑选出那些技术上真正过硬的雇员。OCP认证就能够帮助IT业界建立起面向特定职位的选择标准。OCP认证是一个有价值的、业界承认的标准,这个标准可以证明持证者的知识和能力水平。

途径:
要获得OCA证书,必须通过自己选择的认证途径上的两次考试。第一次可以通过Internet进行,第二次考试则必须在授权的Pearson VUE考试中心进行。
要成为OCP,必须先获得OCA证书,然后才能参加OCP要求的其他考试。参加OCP认证的学员必须至少在Oracle大学或者其授权培训中心学习一门课程才能获得OCP证书。
  要想获得OCM 证书,必须先通过OCA、OCP考试,再学习两门高级技术课程,然后在Oracle 实验室通过场景实验考试。场景实验考试的目的是测试您的实际问题分析和故障解决能力。OCA和OCP考试可以在Oracle授权培训考试中心考试。 目前国内OCM考试只能在北京和上海的Oracle实验室大学进行考试。要获取OCP、OCM、RAC认证,必须通过参加Oracle原厂培训(北京、上海、广州、武汉)或Oracle正式授权的WDP渠道的学习,才可以拿到Oracle认可的证书;通过OCM考试,Oracle美国总部将在2个月内直接寄送OCM证书、全球唯一识别号的OCM卡、OCM大师服装等系列物品

热心网友 时间:2022-05-01 02:58

证书只是敲门砖,oracle学扎实才是关键。

不过OCP相对于别的证书来说, 还是很有含金量的.
因为别的证书, 花个考试费, 背个题库, 证书就来了.
成本也就是个考试费。

但是 OCP 你花个考试费,背了题库,还要花钱去交个 Oracle 官方的培训。
成本是3门考试费+ 培训费,搞不好要 1W +
一般的人会考虑, 花个 1W+ , 还不一定 100% 找到工作(oracle 基础差的),所以一般不去折腾。

对企业招聘的人来说,你要是2个人来面试,同样都有3-5年工作经验,一个有证书,一个没。
假如面试+笔试下来,成绩差不多,对薪资的要求也差不多,那么肯定优先招聘那个有证书的。

ocp考试一定要去原厂或WDP,很多挂靠的最好别去,因为oracle规定不参加培训,就算考过了也不发证书的。去WDP比较好,费用也便宜~还有23天的考前培训,很有帮助的。WDP的机构你可以上oracle官网查到,CUUG不错,考ocp ocm的都是去那里 。

热心网友 时间:2022-05-01 04:33

建议考取OCM认证,我表弟在CUUG学的,很随意考了证,找到工作,现在潇洒着,比我工资还高,两个月把学费的银子赚到手

热心网友 时间:2022-05-01 06:24

OCA和OCP在国内是一起考的,也就是说直接考完就是OCP了。
考OCM需要先是OCP才行。

OCP现在来说比较普遍了,不过有个证书找工作跟工资还是有一定的优势
OCM就是大师级别了,目前来说前景还不错

热心网友 时间:2022-05-01 08:32

也不像楼上所说的多如牛毛哦。关键是能动手解决实际问题的能力强的还是不多呀,主要是选择培训中心还欠妥,感觉像技术培训的话,不应选择只作培训的学习中心去培训,找有Oracle数据库技术服务业务的学习中心进行培训,他们实践经验丰富,且一边搞一线技术,一边搞培训的学习中心学习,可能对自己的实际能力提高更有帮助。拿证书故然重要,如果没得相匹配的能力,那证书最终会被贬值呀!Oracle 11g

热心网友 时间:2022-05-01 10:57

现在做oracle的人超级多

证书对个人没什么价值 但是有部分企业挺看重的 有证书好就业

获取的途径 参加考试 报个培训班

热心网友 时间:2022-05-01 13:38

这三个证书是阶梯式的,OCA是基础,是必考的,并不是楼上的朋友说的那样可以无视.
总的来说ORACLE数据库认证含金量还是很高的,目前学习的人也越来越多!只要系统的掌握实际的知识,以后能解决具体的问题,前景很无量哦!
获得证书可以到VUE考试中心参加考试,通过就可以取得证书!一门考试费是125美金.OCP是必须要参加官方的培训!

热心网友 时间:2022-05-01 16:36

OCA可以直接无视了,现在很多培训机构直接都是从OCP开始的,你考出了OCP,OCA自然就不用考了。
OCM不仅仅需要更扎实的oracle实践能力,更需要oracle系统调优、排错等深层次的认知,此外,RMB也是一大挑战,大概需要8、9万左右,而OCP基本上只要背好题库,交个5、6千,基本上包过.
至于前景,肯定是OCM最好啊,物以稀为贵,现在OCP多如牛毛了。

热心网友 时间:2022-05-01 19:51

不是很好考

热心网友 时间:2022-05-01 23:22

肯定ocm最好 不多现在ocp太多了 没什么价值了 自己能力强才是最重要的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com