频道栏目
首页 > 数据库 > Oracle > 正文
基于oracle数据库的emp表相关sql语句练习题分享
2018-07-17 11:28:10         来源:weixin_42637993的博客  
收藏   我要投稿

--1、选择部门10中的雇员

Select * From Emp Where Deptno = 10;

--2、列出所有销售员的姓名、工资、提成

Select Ename, Sal, Comm From Emp Where Job = 'SALESMAN';

--3、找出佣金高于薪金60%的雇员

Select Ename From Emp Where Comm > Sal * 0.6; -- null是不参与运算的

--4、找出部门10中所有经理和部门20中的所有办事员的详细资料

Select *

From Emp

Where (Deptno = 10 And Job = 'MANAGER')

Or (Deptno = 20 And Job = 'CLERK');

--5、找出部门10中所有经理、部门20中所有办事员,既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料

Select *

From Emp

Where (Deptno = 10 And Job = 'MANAGER')

Or (Deptno = 20 And Job = 'CLERK')

Or (Job Not In ('MANAGER', 'CLERK') And Sal >= 2000);

Select *

From Emp

Where (Deptno = 10 And Job = 'MANAGER')

Or (Deptno = 20 And Job = 'CLERK')

Or (Job <> 'MANAGER' And Job <> 'CLERK' And Sal >= 2000);

--6、找出收取佣金的雇员的不同工作

Select Distinct Job From Emp Where Comm > 0; --null不参与运算,所以可以忽略

Select Distinct Job From Emp Where Nvl(Comm, 0) > 0; --也可以都转换为数字类型,再进行比较

--7、找出不收取佣金或收取的佣金低于100的雇员

Select * From emp Where Nvl(comm,0)<100;

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

Select * From Emp Where Hiredate = last_Day(Hiredate);

--9、找出早于20年之前受雇的雇员

Select * From emp Where (Sysdate-hiredate)>20*365; --不太严谨

Select * From Emp Where Months_Between(Sysdate, Hiredate) / 12 > 20;

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

Select Ename From Emp Where Ename = Initcap (Ename); --Initcap 首字母大写 lower 全小写 upper 全大写

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

Select Ename From Emp Where Length(Ename) = 6;

--12、显示不带有'R'的雇员姓名

Select ename From emp Where ename Not Like '%R%' --%代表任意一个或多个字符

Select Ename From Emp Where Instr(Ename,'R') = 0;

--instr((Ename,'R') 截取字符串并返回该字符在的起始位置,返回0,证明没有该字符

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

Select Substr(Ename,0,3) From Emp;

Select Substr(Ename,1,3) From Emp;

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

Select replace(ename,'A','a') From emp;

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

Select ename, add_months(hiredate,12*10) 服务年限的日期 From emp

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

Select ename,job,sal From emp Order By job Desc,sal asc;

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

Select Ename, To_Char(Hiredate, 'yyyy') y_date, To_Char(Hiredate, 'mm') m_date

From Emp

Order By y_date,m_date

Select Ename, To_Char(Hiredate, 'yyyy') , To_Char(Hiredate, 'mm')

From Emp

Order By hiredate

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

Select * From emp Where To_char(hiredate,'mm')=2

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

Select ename,Months_Between(Sysdate, Hiredate)*30 From emp;

Select Ename, Sysdate - Hiredate From Emp;

--21、显示姓名字段的任何位置,包含 "A" 的所有雇员的姓名

Select * From emp Where ename Like '%A%'

Select * From emp Where Instr(ename,'A')>0

--22、分别以年、月和日方式显示所有雇员的服务年限

Select Ename,

Months_Between(Sysdate, Hiredate) / 12 年,

Months_Between(Sysdate, Hiredate) 月,

Sysdate - Hiredate 日

From Emp

点击复制链接 与好友分享!回本站首页
上一篇:win10系统下Oracle报错17002The Network Adapter could not establish the connection的解决办法
下一篇:Oracle学习之备份控制文件讲解
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站