1. 查询出工资大于1500的所有有雇员的信息
Select * from emp where sal>=1500;
2. 查询每月可以拿到奖金的雇员的信息(不为空 IS NOT NULL)
Select * from emp where comm is not null;
3. 查询工资大于1500,并且可以拿到奖金的雇员的信息
Select * from emp where sal>=1500 and comm is not null;
4. 查询工资不大于1500,并且不能拿到奖金的雇员的信息(使用NOT 取反)
select * from emp where not(sal>=1500 or comm is not null);
1. 查询基本工资大于1500,小于3000的雇员信息(使用between and 包含了等于的内容)
select * from emp where sal >1500 and sal<3000;
2. 查询出1981年出生的雇员的信息(BETWEEN ‘1-1月 -81’ AND ‘31-12月 -81’)
select * from emp where hiredate between '1-1月 -81' and '31-12月 -81';
3. 查询出雇员编号是7369、7449、7521的雇员的详细信息(IN表示在什么范围,相反为NOT IN)
select * from emp where empno in (7369 , 7449 , 7521);
9. 查询名字中第二个字母是M的雇员信息(LIKE ‘_M%’)
select * from emp where ename like '_M%';
10. 查询出名字中包含字母M的雇员信息
select * from emp where ename like '%M%';
11. 查询81年出生的所有员工的信息(LIKE ‘%81%’)
select * from emp where hiredate like '%81%';
12. 查询工资中带6的员工的信息(证明LIKE可以应用在数字上)
select * from emp where sal like '%6%';
13. 查询编号不是7369的员工信息(<> 和 !=)
select * from emp where empno <> 7369;
1. 工资有低到高进行排序(默认为ASC 升序排列)
select * from emp order by sal asc;
2. 要求查询出员工的信息,查询的信息按照工资又高到低进行排序,如果工资相等,则按照雇佣日期由早到晚进行排序
select * from emp order by sal desc,hiredate asc;
3. 显示10部门雇员进入公司的星期数
select empno,ename,round((sysdate-hiredate)/7) weeks from emp where deptno = 10 ;
1、 查出部门30中所有员工
select * from emp where deptno = 30;
2、 列出所有办事员的姓名,编号和部门编号
select ename,empno,deptno from emp where job ='CLERK';
3、 找出奖金高于工资的员工
Select * from emp where comm>sal;
4、 找出奖金高于工资60%的员工
Select * from emp where (comm-sal*1.6)>0;
1、 找出部门10中所有经理和部门20中所有办事员的详细资料
select * from emp where (job='CLERK' AND DEPTNO = 20) OR (JOB = 'MANAGER' AND DEPTNO=10);
2、 找出部门10中所有经理和部门20中所有办事员,即不是经理又不是办事员但工资大于或等于2000的员工的详细资料
SELECT * FROM EMP WHERE (JOB='CLERK' AND DEPTNO=20) OR (JOB='MANAGER' AND DEPTNO = 10) OR (JOB NOT IN ('CLERK','MANAGER') AND SAL>=2000);
3、 找出所有拿奖金的员工的不同工作
select distinct( job) from emp where comm is not null;
4、 找出不拿奖金或者奖金低于100的员工的所有信息
select * from emp where (comm is null) or (comm<100);
5、 找出每个月倒数第3天受雇的所有员工
select * from emp where hiredate=last_day(hiredate)-2;
6、 找出14年前受雇的员工
select * from emp where hiredate<add_months(sysdate,-14*12);
1、 以首字母大写的方式显示员工姓名
select initcap(ename) from emp;
2、 显示正好为5个字符的员工姓名
select ename from emp where length(ename)=5;
3、 显示不姓名中带R字母的员工姓名
select ename from emp where ename notlike'%R%';
4、 显示所有员工姓名的前三个字符
select substr(ename,1,3) from emp ;
5、 显示所有员工姓名,把A全部换成a
selectreplace(ename,'A','a') from emp ;
6、 显示服务满10年的员工和受雇日期
Select ename,hiredate from emp where months_between(sysdate,hiredate)/12>=10;
7、 显示员工的详细资料按,姓名排序
select * from emp orderby ename ;
8、 显示员工的姓名和受雇日期,资格最老的排在前面
select ename ,hiredate from emp orderby hiredate asc;
9、 显示所有工作的姓名,工作和薪金,按工作降序排序,若工作相同按薪金升序排序
select ename,job,sal from emp orderby job desc ,sal asc ;
10、 显示所有员工的姓名,加入公司的年份和月份,按受雇日期所在月排序,若月份相同,则最早的年份的员工排在前面
select ename,to_char(hiredate,'yyyy/mm') from emp order by to_char(hiredate,'mm'),to_char(hiredate,'yyyy') asc;
1、 显示在一个月为30天的情况所有员工的日薪金,忽略余数
select round(sal/30) from emp;
2、 找出每年2月份受雇的员工
select * from emp where to_char(hiredate ,'MM')=2 ;
3、 显示每个员工加入公司的天数
select ename,round(sysdate-hiredate) emp_date from emp;
4、 以年月日的形式显示所有员工的服务年限
Select ename , to_char(hiredate,’yyyy’) || ‘年’ || to_char(hiredate,’mm’)||’月’||to_char(hiredate,’dd’)||’日’ from emp;
2.要求查出员工的编号,员工的姓名,部门的编号,部门名称和部门位置
Select e.empno , e.ename , d.deptmo , d.dname , loc from emp e , dept d where e.deptno = d.deptno;
3. 要求查出每个员工的姓名,工作,雇员的直接上级领导的姓名
Select e.ename, e.job , m.ename from emp e ,emp m where e.mgr = m.empno;
4. 要求查出每个员工的姓名,工作,雇员的直接上级领导的姓名及所在部门名称
Select e.ename , e.job , m.ename , d.dname from emp e , emp m , dept d where e.mgr = m.empno and m.deptno = d.deptno;
5. 要求查询出每个员工的姓名、工资、部门名称、工资在公司的等级和领导的姓名及领导的工资在公司的等级。
Select e.ename , e.sal , d.dname , es.grade , m.ename , m.sal , ms.grade from emp e , emp m , dept d , salgrade es , salgrade ms where e.mgr = m.empno and e.deptno = d.deptno and e.sal between es.losal and es.hisal and m.sal between ms.losal and ms.hisal;