概述
上一篇????:Oracle-----查询排序(order by)
总目录????震惊!史上最菜的Oracle 11g教程(大佬勿进)
文章目录
- 1、选择部门编号为30中的所有员工
- 2、列出所有办事员(CLERK)的姓名,编号和部门编号。
- 3、找出佣金高于薪金的60%的员工。
- 4、找出部门编号为10所有经理(MANAGER)和部门编号为20中的所有办事员(CLERK)的详细资料
- 5、找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料
- 6、找出收取佣金的员工的不同工作
- 7、找出不收取佣金或收取的佣金低于100的员工
- 8、显示不带"R"的员工姓名。
- 9、显示名字字段的任意位置包含"A"的所有员工的姓名,显示的结果按照基本工资由高到低排序,如果基本工资相同,则按照雇佣日期从早到晚排序,如果雇佣日期相同,则按照职位排序
????大家好!我是近视的脚踏实地,这篇文章主要是讲述综合练习:基础查询
唯有行动 才能解除你所有的不安
1、选择部门编号为30中的所有员工
1、选择部门编号为30中的所有员工。
※ 限定查询,肯定使用where子句(首先要查询,select和from肯定是不能少的,where和order by 是可选的),部门编号是deptno字段,为30就使用=
select *
from emp
where deptno = 30;
2、列出所有办事员(CLERK)的姓名,编号和部门编号。
2、列出所有办事员(CLERK)的姓名,编号和部门编号。
※ 限定查询,所有的数据行都需要进行筛选,而且需要控制显示的数据列。
select ename 姓名,empno 编号,deptno 部门编号
from emp
where job = 'CLERK';
3、找出佣金高于薪金的60%的员工。
3、找出佣金高于薪金的60%的员工。
※ 佣金使用的是comm字段,而薪金使用的sal字段,而且comm本身包含有null,null进行任何的数学计算结果都是null
select *
from emp
where comm > sal*0.6;
4、找出部门编号为10所有经理(MANAGER)和部门编号为20中的所有办事员(CLERK)的详细资料
4、找出部门编号为10所有经理(MANAGER)和部门编号为20中的所有办事员(CLERK)的详细资料
※第一组条件(部门编号为10所有经理):deptno=10 and job =‘MANAGER’;
※第二组条件(部门编号为20中的所有办事员):deptno=20 and job =‘CLERK’.
这两组条件有一组满足即可,所以使用or连接
select *
from emp
where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK') ;
(其实上面不加括号也是得到同样的结果,因为and 的优先级比or的高,但是一般不会刻意去记优先级,所有最好还是加阔号改变优先级)
5、找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料
5、找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料
※第一组条件(部门编号为10所有经理):deptno=10 and job =‘MANAGER’;
※第二组条件(部门编号为20中的所有办事员):deptno=20 and job =‘CLERK’;
※第三组条件(不是办事员但其薪金大于或等于2000的所有员工): job not in(‘MANAGER’,‘CLERK’) and sal >= 2000
※这是三个条件又需要使用or进行连接。
select *
from emp
where (deptno = 10 and job = 'MANAGER') or
(deptno = 20 and job = 'CLERK') or
(job not in('MANAGER','CLERK') and sal >= 2000);
6、找出收取佣金的员工的不同工作
6、找出收取佣金的员工的不同工作
※销售具备佣金,但是现在要的是工作,工作机会有重复数据。
select distinct job
from emp
where comm is not null;
(如果不加distinct参数就会有多行的SALEMANA,可能开始查的时候并不知道要用distinct参数,但是查完之后发现有重复就可以用了)
7、找出不收取佣金或收取的佣金低于100的员工
7、找出不收取佣金或收取的佣金低于100的员工
※对于null的判断,使用 is null或 is not null,同时也可以利用关系判断非空的内容
select distinct job
from emp
where comm is null or comm < 100;
8、显示不带"R"的员工姓名。
8、显示不带"R"的员工姓名。
※任何位置上都不存在字母"R",not like
select *
from emp
where ename not like '%R%';
9、显示名字字段的任意位置包含"A"的所有员工的姓名,显示的结果按照基本工资由高到低排序,如果基本工资相同,则按照雇佣日期从早到晚排序,如果雇佣日期相同,则按照职位排序
9、显示名字字段的任意位置包含"A"的所有员工的姓名,显示的结果按照基本工资由高到低排序,如果基本工资相同,则按照雇佣日期从早到晚排序,如果雇佣日期相同,则按照职位排序
select *
from emp
where ename like '%A%'
order by sal desc,hiredate,job;
(后面两个字段没写,就默认是升序asc)
总结:
1、基本语法结构:select、from、where、order by;
2、数据表的基本结构一定要掌握。数据表oracle11g在安装的时候就已经有了一些表了,比如如前使用的是emp表,直接 select * from emp就可以看到数据表的内容了,使用desc 表名可以查看表的名称
下一篇????Oracle-----单行函数简介&字符串函数
本篇博客到这就完啦,非常感谢您的阅读????,如果对您有帮助,可以帮忙点个赞或者来波关注鼓励一下喔???? ,嘿嘿????
最后
以上就是贤惠电灯胆为你收集整理的Oracle-----综合练习:基础查询1、选择部门编号为30中的所有员工2、列出所有办事员(CLERK)的姓名,编号和部门编号。3、找出佣金高于薪金的60%的员工。4、找出部门编号为10所有经理(MANAGER)和部门编号为20中的所有办事员(CLERK)的详细资料5、找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料6、找出收取佣金的员工的不同工作7、找出不收取佣金或收取的佣金低于100的员工8、的全部内容,希望文章能够帮你解决Oracle-----综合练习:基础查询1、选择部门编号为30中的所有员工2、列出所有办事员(CLERK)的姓名,编号和部门编号。3、找出佣金高于薪金的60%的员工。4、找出部门编号为10所有经理(MANAGER)和部门编号为20中的所有办事员(CLERK)的详细资料5、找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料6、找出收取佣金的员工的不同工作7、找出不收取佣金或收取的佣金低于100的员工8、所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复