条件查询:
1. 查询出工资大于1500的所有有雇员的信息
select * from emp where sal>1500;
2. 查询每月可以拿到奖金的雇员的信息
select * from emp where comm is not null;
3. 查询工资大于1500,并且可以拿到奖金的雇员的信息
select * from emp where sal>1500 and comm is not null;
4. 查询工资不大于1500,并且不能拿到奖金的雇员的信息
select * from emp where not(sal>1500 or comm is not null);
5. 查询基本工资大于1500,小于3000的雇员信息
select * from emp where sal>1500 and sal<3000;
6. 查询出1981年出生的雇员的信息
select * from emp where hiredate like '%-81';
7. 查询出雇员编号是7369、7449、7521的雇员的详细信息
select * from emp where empno in (7369,7449,7521);
8. 通配符%表示任意长度,_表示一个长度
select * from emp where ename like '%R_';
9. 查询名字中第二个字母是M的雇员信息
select * from emp where ename like '_M%';
10. 查询出名字中包含字母M的雇员信息
select * from emp where ename like '%M%';
11. 查询81年出生的所有员工的信息
select * from emp where hiredate like '%-81';
12. 查询工资中带6的员工的信息
select * from emp where sal like '%6%';
13. 查询编号不是7369的员工信息
select * from emp where not(empno=7369);
排序查询:
1. 工资有低到高进行排序(默认为ASC 升序排列)
select sal from emp order by sal;
2. 要求查询出员工的信息,查询的信息按照工资又高到低进行排序,如果工资相等,则按照雇佣日期由早到晚进行排序
select sal,hiredate from emp order by sal desc,hiredate;
作业:
1、 查出部门30中所有员工
select * from emp where deptno=30;+
2、 列出所有办事员的姓名,编号和部门编号
select ename,empno,deptno from emp where job='CLERK';
3、 找出奖金高于工资的员工
select ename from emjp where comm>sal;
4、 找出奖金高于工资60%的员工
select ename from emjp where comm>sal;
5、 找出部门10中所有经理和部门20中所有办事员的详细资料
select * from emp where (deptno=10 and job='MANAGER') or (dept=20 and job='CLERK');
6、 即不是经理又不是办事员但工资大于或等于2000的员工的详细资料
select * from emp where not(job='MANAGER' or job='CLERK') and sal>=2000;
7、 找出所有拿奖金的员工的不同工作
select distinct job from emp where comm is not null;
8、 找出不拿奖金或者奖金低于100的员工的所有信息
select * from emp where comm<100 or comm is null;
9、 找出每个月倒数第3天受雇的所有员工
select ename from emp where last_day(hiredate)-2=hiredate;
10、 找出14年前受雇的员工
select ename from emp where trunc((sysdate-hiredate)/365)=14;
11、 以首字母大写的方式显示员工姓名
select initcap(lower(ename)) from emp;
12、 显示正好为5个字符的员工姓名
select ename from emp where length(ename)=5;
13、 显示不姓名中带R字母的员工姓名
select ename from emp where not(ename like '%R%');
14、 显示所有员工姓名的前三个字符
select substr(ename,1,3) from emp;
15、 显示所有员工姓名,把A全部换成a
select replace(ename,'A','a') from emp;
16、 显示服务满10年的员工和受雇日期
select ename,hiredate from emp where trunc((sysdate-hiredate)/365)>10;
17、 显示员工的详细资料按,姓名排序
select * from emp order by ename;
18、 显示员工的姓名和受雇日期,资格最老的排在前面
select ename,hiredate from emp order by hiredate;
19、 显示所有工作的姓名,工作和薪金,按工作降序排序,若工作相同按薪金升序排序
select ename,job,sal from emp order by job desc,sal;
20、 显示所有员工的姓名,加入公司的年份和月份,按受雇日期所在月排序,若月份相同,则最早的年份的员工排在前面
select ename,to_char(hiredate,'yyyy-mm') from emp order by to_char(hiredate,'mm'),to_char(hiredate,'yyyy');
21、 显示在一个月为30天的情况所有员工的日薪金,忽略余数
select trunc(sal/30) as 日薪金 from emp;
22、 找出每年2月份受雇的员工
select ename from emp where to_char(hiredate,'mm')=02;
23、 显示每个员工加入公司的天数
select ename,sysdate-hiredate from emp;
24、 显示名字中有A的所有员工的姓名
select ename from emp where ename like '%A%';
25、 以年月日的形式显示所有员工的服务年限
select ename,trunc((sysdate-hiredate)/365) || '年 ' || trunc(mod((sysdate-hiredate),365)/30) || '月 ' || trunc(mod(mod((sysdate-hiredate),365),30)) || '日' from emp;