最近在学习Oracle,对测试人员而言必须掌握两种语言:第一种是DML,数据操纵语言 (Data Manipulation Language) 是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除。第二种是:DQL,数据查询语言 (Data Query Language) 是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。核心指令为SELECT,以及一些辅助指令,如FROM、WHERE等,FROM:表示来源,可以搭配JOIN做链接查询; WHERE:过滤条件;GROUP BY:在使用聚合函数时用到,如SUM,COUNT,MAX,AVG;HAVING:对聚合结果进行筛,这是和WHERE的不同点;ORDER BY:排序。
 一下是必须掌握的SQL习题:
1、列出至少有一个员工的所有部门
select d.*,ed.cou
from dept d,(select deptno,count(empno) cou from emp
group by deptno having count(empno)>1) ed
where d.deptno=ed.deptno;
2、列出薪金比“SMITH”多的所有员工。
  ·求出SMITH的薪金
select sal from emp where ename='SMITH';
 ·求所有
select * from emp
where sal>(select sal from emp where ename='SMITH');
3、列出所有员工的姓名及其直接上级的姓名
select e.ename,m.ename
from emp e,emp m
where e.mgr=m.empno(+);
4、列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称
select e.empno,e.ename,d.dname
from emp e,emp m,dept d
where e.mgr=m.empno and e.hiredate<m.hiredate and e.deptno=d.deptno;
5、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门,
select d.deptno,d.dname,e.empno,e.ename
from dept d,emp e
where d.deptno=e.deptno(+);
6、列出所有“CLERK”人员的姓名及其部门名称,部门的人数
select e.ename,d.dname,ed.cou
from emp e,dept d,(select deptno,count(empno) cou from emp group by deptno) ed
where job='CLERK'and e.deptno=d.deptno and ed.deptno=e.deptno;
7、列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数
·按工作分组,分组条件是最低薪金大于1500
select job,min(sal)
from emp
group by job having min(sal)>1500;
·求全部的雇员人数
select count(e.empno),e.job
from emp e
where e.job in(select job
            from emp
            group by job having min(sal)>1500)
group by e.job;
8、列出在部门“SALES”工作的员工姓名,假定不知道销售部的部门编号
·通过dept表查询出销售部的部门编号
select deptno from dept where dname='SALES';
·将之前的查询作为子查询
select ename
from emp where deptno=(select deptno from dept where dname='SALES');
9、列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的工资等级。
·公司的平均工资
select avg(sal) from emp;
·列出薪金高于平均薪金
select * from emp
where sal>(select avg(sal) from emp);
·与部门表关联查询出所在部门的信息
select e.*,d.loc
from emp e,dept d
where sal>(select avg(sal) from emp)and e.deptno=d.deptno;
·与自身关联查询上级领导
select e.ename,e.empno,m.empno,m.ename,d.deptno,d.dname,d.loc
from emp e,dept d,emp m
where e.sal>(select avg(sal) from emp)
          and e.deptno=d.deptno
          and e.mgr=m.empno(+);
·求出雇员的工资等级
select e.ename,e.empno,s.grade,m.empno,m.ename,d.deptno,d.dname,d.loc
from emp e,dept d,emp m,salgrade s
where e.sal>(select avg(sal) from emp)
          and e.deptno=d.deptno
          and e.mgr=m.empno(+)
           and e.sal between s.losal and s.hisal;
10、列出与scott从事相同工作的所有员工及部门名称
·找到Scott的工作
select job from emp where ename='SCOTT';
·找出与其工作相同的雇员
select ename,empno,job,sal
from emp
where job=(select job from emp where ename='SCOTT');
·这是不应该出现SCOTT
在加个条件;and ename!='SCOTT';
select ename,empno,job,sal
from emp
where job=(select job from emp where ename='SCOTT')
           and ename!='SCOTT';
·部门名称
select e.ename,e.empno,e.job,e.sal,d.dname,d.loc
from emp e,dept d
where job=(select job from emp where ename='SCOTT')
           and ename!='SCOTT'
   and e.deptno=d.deptno;
11、列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金
·列出30部门员工薪金
select sal from emp where deptno=30;
·以上作为子查询
select ename,sal
from emp
 where sal in(select sal from emp where deptno=30)
                 and deptno!=30;
12、列出薪金高于部门30中员工的薪金的所有员工的姓名和薪金、部门名称
·使用>ALL
select ename,sal
from emp
 where sal >all(select sal from emp where deptno=30)
 and deptno!=30;
·使用表关联
select e.ename,e.sal,d.dname,d.loc
from emp e,dept d
 where e.sal >all(select sal from emp where deptno=30)
 and e.deptno!=30 and d.deptno=e.deptno;
13、列出在每个部门工作的员工数量,平均工资和平均服务期限
select d.dname,count(e.empno),avg(sal),avg(months_between(sysdate,e.hiredate)/12)year
from emp e,dept d
where e.deptno=d.deptno
group by d.dname;
14、列出所有员工的姓名,部门名称和工资
select e.ename,d.dname,e.sal
from emp e,dept d
where e.deptno=d.deptno;
15、列出所有部门的详细信息和部门人数
select d.*,nvl(ed.count,0)
from dept d,(select deptno,count(empno) count from emp group by deptno) ed
where d.deptno=ed.deptno(+);
16、列出各种工作的最低工资及从事此工作的雇员姓名
·最低工资的工作
select min(sal) from emp group by job;
·按工资查询
select * from emp
where sal in(select min(sal) from emp group by job);
17、列出各部门经理的最低薪金
select deptno,min(sal)
from emp
where job='MANAGER'
group by deptno;
18、列出所有员工的年薪,按年薪降序排列
select ename,(sal+nvl(comm,0))*12 income
from emp
order by income;
19、查出某个员工的上级主管,并求出这些主管薪水超过3000的
select distinct m.ename,m.sal
from emp e,emp m
where m.sal>3000 and e.mgr=m.empno;
20、求出部门名称中带‘S’字符的部门员工的工资合计,部门人数
·求部门名称带‘S’的部门
select deptno,sum(sal),count(empno)
from emp
where deptno in(select deptno from dept where dname like '%S%')
group by deptno;
21、给任职超过10年的人加薪10%
update emp set sal=sal+sal*0.1
where months_between(sysdate,hiredate)/12>10;

转载于:https://www.cnblogs.com/myc618/p/4588728.html

我认为测试应该掌握的SQL语句相关推荐

  1. oracle12测试骤,Oracle中SQL语句解析的步骤

    我们都知道在Oracle中每条SQL语句在执行之前都需要经过解析,这里面又分为软解析和硬解析.那么这两种解析有何不同之处呢?它们又分别是如何进行解析呢?Oracle内部解析的步骤又是如何进行的呢?下面 ...

  2. mysql创表的工种_mysql测试数据库employees一些sql语句

    一套SQL笔试题 1.查找整个职员表的所有内容. select * from employees 2.查看雇员名字(last_name). select last_name from employee ...

  3. mysql测试数据库employees一些sql语句

    一套SQL笔试题 1.查找整个职员表的所有内容. select * from employees 2.查看雇员名字(last_name). select last_name from employee ...

  4. oracle insert汉字出错,Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名...

    本文主要向大家介绍了Oracle数据库之Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. Oracle数据库,用 ...

  5. Mybatis映射文件SQL语句模糊查询,#和$的区别和注意事项

    Mybatis映射文件SQL语句模糊查询 1. "%"#{value}"%" 在参数中不需要添加 %_ 推荐使用 2. '%${value}%' 在参数中不需要 ...

  6. 测试sql语句执行时间

    测试sql语句执行时间,备档用的 新建表:pagetest --添加数据 declare @i int set @i=0 while(@i<90000) begin insert into pa ...

  7. sql语句在navicat中可以查询到所有数据但是在idea程序中不行_数据迁移测试实施方案...

    点击关注,我们共同每天进步一点点! 最近经历了一场大型的数据迁移测试,因为以前对数据迁移测试研究甚少,所以对测试实施方案的制定非常的棘手,在网上也查询了很多,发现相关资料很少,并且大部分都是一些理论指 ...

  8. mysql 压力测试知乎_MySQL查看SQL语句执行效率和mysql几种性能测试的工具

    网络中整理,记录下,朋友们应该用得到! Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看 SQL 语句的执行效 果,可以帮 ...

  9. sql依据单个字段去重_小白学习笔记,测试工程师必备SQL语句整理

    作为一个软件测试工程师,我们在测试过程中往往需要对数据库数据进行操作,但是我们的操作大多以查询居多,有时会涉及到新增,修改,删除等操作,所以我们其实并不需要对数据库的操作有特别深入的了解,以下是我在工 ...

最新文章

  1. vue-cli脚手架
  2. mysql查看服务器版本sql_云服务器Windows系统查看mysql版本
  3. 有效的括号——字符串匹配问题
  4. 源代码可以从应用提取码_大规模下加速源代码分析
  5. Linux 共享库LD_PRELOAD环境变量
  6. 跟KingDZ学HTML5之八 HTML5之Web Save
  7. 35岁危机?请收下这部转型秘籍
  8. 我已经不用 try catch 处理异常了!太辣鸡了!
  9. 【Android 逆向】加壳技术识别 ( VMP 加壳示例 | Dex2C 加壳示例 )
  10. 图案怎么导入ps?Photoshop图案导入教程
  11. 黑客概念与文化(课程笔记)
  12. 山东大学高频电子线路实验五 混频器实验详解
  13. uniapp打开App Store下载页面
  14. 关于arp表的网络问题
  15. 松下服务器A5代码70维修,松下伺服电机A5系列故障代码.pdf
  16. 判断一个数是否为素数 java_java中如何判断一个数是否是素数(质数)
  17. 好用的计算属性clac
  18. 如何用亿图软件绘制甘特图
  19. 2022年全国职业院校技能大赛赛项正式赛卷
  20. 课后练习--制作美联英语在线VIP页面——学伴

热门文章

  1. 商业认知,新的一年开始了
  2. 写作新手想少走弯路,尽快赚到钱,必须要知道的
  3. 人生只有两条路径才能实现财富自由
  4. 电商并没有给我们创造一个就业机会
  5. 没有别家钱多,没有别家人多,小型培训机构招生怎么做?
  6. 手机运行内存越大就越好吗?4GB与8GB的差距真的很明显吗?
  7. 在Power BI Desktop报告中使用图像
  8. php 字符串串联_正确完成字符串串联操作-第2部分-一种有效的技术
  9. sql server 分区_SQL Server:锁定设置以用于增强分区功能
  10. 爬虫-3.urllib请求