oracle数据库基本查询(使用默认scott帐户下的样例数据库)

ORACLE数据库查询(基础)

本文中,我们使用到ORACLE样例数据库中的三张表:

  1. 雇员表(EMP)
  2. 部门表(DEPT)
  3. 工资等级表(SALGRADE)

根据以上的三张表,我们来做以下的查询。

1.查询姓名前3个字母是JAM的雇员信息;
select *
from emp
where ename like 'JAM%';

结果:
结果

2.查询所有10部门雇员的姓名,但是不显示每个雇员姓名的前3个字母;
select replace(ename,SUBSTR(ename,1,3),'***')
from emp
where emp.deptno = 10;

结果:
结果

3.查询所有在其雇佣所在月的倒数第3天被公司雇佣的完整雇员信息;
select *
from emp 
where hiredate = LAST_DAY(hiredate) - 2;

结果:
结果

4.要求查询雇员姓名、职位、基本工资等信息,但是要求所有职位信息替换成中文显示。
select ename as "姓名",job as "职位",sal as "基本工资"
from emp

结果:
结果

5.查询出生在1981年的雇佣的全部员工的编号、姓名、雇佣日期(按年-月-日显示)、工作、领导姓名、雇员月工资(基本工资+奖金),雇员工资等级,部门编码,部门名称,部门位置,并且要求这些雇员的月基本工资在1500-3500之间,将最后的结果按照年工资的降序排列,如果年工资相等,则按照工作时间进行排序。
select e.empno as "编号",e.ename as "姓名",TO_CHAR(e.hiredate,'yyyy-MM-dd') as "雇佣日期",
e.job as "工作",m.ename as "领导姓名",
e.sal+NVL(e.comm,0) as "月工资",salgrade.grade as "工资等级",
e.deptno as "部门编号",dept.dname as "部门名称",
dept.loc as "部门位置"
from emp e,emp m,dept,salgrade
where e.deptno = dept.deptno and e.mgr = m.empno 
and e.sal between salgrade.losal and salgrade.hisal
order by "月工资" desc,e.hiredate;

结果:
结果 #### 6.查询公司各个工资等级雇员的数量、平均工资

select salgrade.grade,COUNT(emp.empno),AVG(emp.sal)
from emp,salgrade
where emp.sal between salgrade.losal and salgrade.hisal
group by salgrade.grade

结果:
结果

7.统计出领取佣金与不领取佣金的雇员的平均工资、平均雇佣年限、雇员人数;
select '不领佣金',COUNT(emp.empno),AVG(emp.sal),AVG(TRUNC((sysdate-hiredate)/365))
from emp
where emp.comm is null
UNION
select '领佣金',COUNT(emp.empno),AVG(emp.sal),AVG(TRUNC((sysdate-hiredate)/365))
from emp
where emp.comm is not null

结果:
结果

8.查询非销售人员工作名称以及从事同一工作雇员的月工资的总和,并且满足从事同一工作的雇员的月工资合计大于5000元,输出结果按照月工资的合计升序排列;
select job,SUM(sal)
from emp
group by job
having SUM(sal) > 5000
order by SUM(sal) ASC

结果:

结果
基础样例演示就到这里。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值