Oracle-----综合练习:基础查询

上一篇👉:Oracle-----查询排序(order by)


总目录👉震惊!史上最菜的Oracle 11g教程(大佬勿进)


🚴大家好!我是近视的脚踏实地,这篇文章主要是讲述综合练习:基础查询
     唯有行动  才能解除你所有的不安

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-----单行函数简介&字符串函数

本篇博客到这就完啦,非常感谢您的阅读🙏,如果对您有帮助,可以帮忙点个赞或者来波关注鼓励一下喔😬 ,嘿嘿👀

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值