oracle基本语句练习Word文档下载推荐.docx

上传人:b****1 文档编号:5761575 上传时间:2023-05-05 格式:DOCX 页数:13 大小:19.47KB
下载 相关 举报
oracle基本语句练习Word文档下载推荐.docx_第1页
第1页 / 共13页
oracle基本语句练习Word文档下载推荐.docx_第2页
第2页 / 共13页
oracle基本语句练习Word文档下载推荐.docx_第3页
第3页 / 共13页
oracle基本语句练习Word文档下载推荐.docx_第4页
第4页 / 共13页
oracle基本语句练习Word文档下载推荐.docx_第5页
第5页 / 共13页
oracle基本语句练习Word文档下载推荐.docx_第6页
第6页 / 共13页
oracle基本语句练习Word文档下载推荐.docx_第7页
第7页 / 共13页
oracle基本语句练习Word文档下载推荐.docx_第8页
第8页 / 共13页
oracle基本语句练习Word文档下载推荐.docx_第9页
第9页 / 共13页
oracle基本语句练习Word文档下载推荐.docx_第10页
第10页 / 共13页
oracle基本语句练习Word文档下载推荐.docx_第11页
第11页 / 共13页
oracle基本语句练习Word文档下载推荐.docx_第12页
第12页 / 共13页
oracle基本语句练习Word文档下载推荐.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

oracle基本语句练习Word文档下载推荐.docx

《oracle基本语句练习Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《oracle基本语句练习Word文档下载推荐.docx(13页珍藏版)》请在冰点文库上搜索。

oracle基本语句练习Word文档下载推荐.docx

  select*fromempwherenvl(comm,0)<

100;

  --9、找出各月最后一天受雇的所有雇员

  select*fromempwherehiredate=last_day(hiredate);

  --10、找出早于25年之前受雇的雇员

  select*fromempwheremonths_between(sysdate,hiredate)/12>

25;

  select*fromempwherehiredate

  --11、显示只有首字母大写的所有雇员的姓名

  selectenamefromempwhereename=initcap(ename);

  --12、显示正好为6个字符的雇员姓名

  selectenamefromempwherelength(ename)=6

  --13、显示不带有'

R'

的雇员姓名

  Selectenamefromempwhereenamenotlike‘%R%’;

  Selectenamefromempwhereinstr(ename,’R’)=0;

  --14、显示所有雇员的姓名的前三个字符

  selectsubstr(ename,1,3)fromemp

  --15、显示所有雇员的姓名,用a替换所有'

A'

  Selectreplace(ename,’A’,’a’)fromemp

  --16、显示所有雇员的姓名以及满10年服务年限的日期

  Selectename,add_months(hiredate,12*10)‘服务年限的日期’fromemp

  --17、显示雇员的详细资料,按姓名排序

  Select*fromemporderbyename

  --18、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面

  Selectenamefromemporderbyhiredate

  --19、显示所有雇员的姓名、工作和薪金,按工作的降序顺序排序,而工作相同时按薪金升序

  Selectename,job,salfromemporderbyjobdesc,salasc

  --20、显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,将最早年份的项目排在最前面

  selectename,to_char(hiredate,'

yyyy'

),to_char(hiredate,'

mm'

)fromemporderbyhiredateasc

  --21、显示在一个月为30天的情况下所有雇员的日薪金

  selectename,sal/30fromemp;

  --22、找出在(任何年份的)2月受聘的所有雇员

  select*fromempwhereto_char(hiredate,'

)='

02'

;

  --23、对于每个雇员,显示其加入公司的天数

  selectename,sysdate-hiredatefromemp

  --24、显示姓名字段的任何位置,包含"

A"

的所有雇员的姓名

  selectenamefromempwhereenamelike'

%A%'

  selectenamefromempwhereinstr(ename,’A’,1)>

  --25、以年、月和日显示所有雇员的服务年限

  Selectmonths_between(sysdate,hiredate)/12as“年”,months_between(sysdate,hiredate)as“月”,sysdate-hiredateas“日”fromemp

empdept是oracle中的两张默认表

每天都花上十分钟写一写,保证自己不会忘记啊~

--连接到scott用户

connectscott/tiger;

--查看当前用户下的所有表

select*fromtabwheretabType='

TABLE'

--查看表结构

descdept;

descemp;

--1列出emp表中各部门的部门号,最高工资,最低工资

selectdeptnoas部门号,max(sal)最高工资,min(sal)as"

最低工资"

 

fromempgroupbydeptno;

--2列出emp表中各部门job为'

CLERK'

的员工的最低工资,最高工资

fromempwherejob='

groupbydeptno;

--3对于emp中最低工资小于1000的部门,列出job为'

的员工的部门号,最低工资,最高工资

--查询出最低工资小于1000的部门号及最低工资值

--selectdeptno,min(sal)fromempgroupbydeptnohavingmin(sal)<

1000

--查询出最低工资小于1000的部门号

--selectdeptnofromempgroupbydeptnohavingmin(sal)<

1000;

--子查询

anddeptnoin(selectdeptnofromempgroupbydeptnohavingmin(sal)<

1000)

--4写出对上题的另一解决方法

--where+groupby+having

groupbydeptnohavingmin(sal)<

--子查询和父查询关联起来,做联接查询

select 

deptnoas部门号,max(sal)最高工资,min(sal)as"

fromempawherejob='

and1000>

(selectmin(sal)fromempbwherea.deptno=b.deptno)

--5根据部门号由高而低,工资由低而高列出每个员工的姓名,部门号,工资

selectename姓名,deptno部门号,sal工资fromemporderbydeptnodesc,salasc;

--6列出'

张三'

所在部门中每个员工的姓名与部门号

selectename,deptnofromempwhere 

deptnoin(selectdeptnofromempwhereename='

);

--selectename,deptnofromempwheredeptno=20ordeptno=30;

--selectename,deptnofromempwheredeptnoin(20,30);

--7列出每个员工的姓名,工作,部门号,部门名

--内联接:

返回两个表匹配的数据

--1.

selecte.ename,e.job,d.deptno,d.dnamefromempe

innerjoin 

deptd

one.deptno=d.deptno;

--2.

selecte.ename,e.job,d.deptno,d.dnamefromempe,deptdwheree.deptno=d.deptno;

--8列出emp中工作为'

的员工的姓名,工作,部门号,部门名

selecte.ename,e.job,d.deptno,d.dnamefromdeptd

empe

one.deptno=d.deptno

wheree.job='

selecte.ename,e.job,d.deptno,d.dnamefromempe,deptd 

wheree.deptno=d.deptnoande.job='

--9对于emp中有管理者的员工,列出姓名,管理者姓名(mgr列是管理者员工号)

--内联接的特列:

自联接

selecta.ename,b.enamefromempa,empbwherea.mgr=b.empno;

--10对于dept表中,列出所有部门名,部门号,同时列出各部门工作为'

的员工名与工作

--外联接:

左外联:

返回左表所有数据和右表匹配的数据

--1.通用的左外连接写法

selectd.dname,d.deptno,e.ename,e.jobfromdeptd

leftjoin 

(select*fromempwhereemp.job='

)e

ond.deptno=e.deptno;

--2.oracle支持的左外联接写法

selectd.dname,d.deptno,e.ename,e.jobfromdeptd,

whered.deptno=e.deptno(+);

--11对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,按部门号排序

selectdeptno,ename,salfromempa

wherea.sal>

(selectavg(sal)fromempbwherea.deptno=b.deptno)

orderbydeptno;

--12对于emp,列出各个部门中平均工资高于本部门平均水平的员工数和部门号,按部门号排序

selecta.deptno,a.ename,a.sal,a1.dnamefromempa,depta1wherea.deptno=a1.deptnoanda.sal>

(selectavg(sal)fromempbwherea.deptno=b.deptno)orderbydeptno;

--13对于emp中工资高于本部门平均水平,人数多与1人的,列出部门号,人数,按部门号排序

selectdeptno,count(*)fromempa

groupbydeptnohavingcount(*)>

1orderbydeptno;

--14对于emp中低于自己工资至少5人的员工,列出其部门号,姓名,工资,

--以及工资少于自己的人数

selectdeptno,ename,sal,

(selectcount(empno)fromempbwhereb.sal<

a.sal)asnum

fromempawhere(selectcount(empno)fromempbwhereb.sal<

a.sal)>

=5;

针对DEPT和EMP表,查询出SMITH所在部门的部门名称,部门工资平均值

selecta1.dname,a2.mysalfromdepta1,(selectdeptno,avg(sal)mysalfromempgroupbydeptno)a2wherea1.deptno=a2.deptnoanda2.deptno=(selectdeptnofromempwhereename='

SMITH'

按年限长工资

selectename,hiredate,sal,sal*(1+round(months_between(sysdate,hiredate)/100.0))asnewsal

fromemp;

selecta1.deptno,a2.dname,a1.ename,a1.salfromempa1,depta2wherea1.deptno=a2.deptnoanda1.deptno=(

selectdeptnofromempwheresal>

(selectavg(sal)fromemp)groupbydeptnohavingmax(count(deptno)));

oracle经典题目

Oracle工作 

--01按以下格式显示下面的信息,条件是工资大于1500的。

-- 

部门名称 

姓名 

工资

selectdname,ename,sal

fromdept,emp

wheredept.deptno=emp.deptnoandsal>

1500

--2按以下格式显示下面信息,条件是此人工资在所有人中最高。

部门 

wheredept.deptno=emp.deptno

andemp.sal=(selectmax(sal)fromemp)

--3按以下格式显示下面信息

某人为某人工作

selecte.ename||'

为'

||m.ename||'

工作'

as描述

fromempe,empm

wheree.mgr=m.empno

--4为所有人长工资,标准是:

10部门长10%;

20部门长15%;

30部门长20%其他部门长18%(要求用DECODE函数)

selectename,deptno,sal,sal*(1+nvl(decode(deptno,10,0.1,20,0.15,30,0.2),0.18))asnewsal

fromemp

--5

--根据工作年限长工资,标准是:

为公司工作了几个月就长几个百分点。

--6查询出king所在部门的部门号\部门名称\部门人数

--ex1

selectd.deptno,d.dname,count(*)

fromdeptd,empe,empm

whered.deptno=e.deptno

ande.deptno=m.deptno

andm.ename='

KING'

groupbyd.deptno,d.dname

--ex2

fromdeptd,empe

ande.deptno=(selectdeptnofromempwhereename='

--7查询出king所在部门的工作年限最大的员工名字

selectename,hiredate

where(deptno,hiredate)in(selectdeptno,min(hiredate)

fromemp

wheredeptnoin(selectdeptno

whereename='

groupbydeptno)

--8查询出管理员工人数最多的人的名字和他管理的人的名字

withmas

(selectempno,ename

whereempnoin(selectmgr

groupbymgr

havingcount(*)>

=all(selectcount(*)

groupbymgr)

) 

selectename,'

astypefromm

union

selecte.ename,'

emp'

astypefromm,empewheree.mgr=m.empno

--9查询出工资成本最高的部门的部门号和部门名称

selectd.deptno,d.dname

havingsum(e.sal)>

=all(selectsum(sal) 

--10查询出工资不超过2500的人数最多的部门名称

ande.sal<

=2500

havingcount(*)>

=all(selectcount(*)

wheresal<

--11查询出没有下属员工的人的名字和他的职位

selectename,job

whereempnonotin(selectdistinctnvl(mgr,0)

fromemp)

--12查询出人数最多的那个部门的部门编号和部门名称

--13查询出没有员工的那个部门的部门编号和部门名称(要求用两种方法,其中一种要用集合运算)

selectdeptno,dname

fromdept

wheredeptnonotin(selectdeptnofromemp)

wherenotexists

(selectdeptnodeptno

wheredept.deptno=emp.deptno)

--ex3

select

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

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

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

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