oracle数据库的简单查询

条件查询:
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;
       

posted @ 2012-07-17 23:02  建志  阅读(572)  评论(0编辑  收藏  举报