Oracle数据库scoot用户经典查询语句

select*from recyclebin//orcle回收站


purge recyclebin清空回收站


flashback table 表名 to before drop


alter user scott acountt unlock


0. 查询最高工资及其对应员工


解法一: select ename from (select ename from emp order by sal desc) where rownum=1;


解法二: select ename from emp where sal=(select max(sal) from emp);


解法三: select ename, sal from emp where sal not in (select distinct t1.sal from emp t1 inner join emp t2 on t1.sal < t2.sal);


1. 计算每位员工的年薪


select ename, sal*12+nvl(comm, 0) annualSalary from emp;


2. 统计有员工的部门的人数


select count(distinct deptno) from emp;


3. 求挣最高薪水的员工(boss除外)的姓名


select ename from emp where sal = (select max(sal) from emp where job<>upper('president'));


4. 查询薪水超过平均薪水的员工的姓名和工资


select ename, sal from emp where sal > (select avg(sal) from emp);


5. 查询薪水超过其所在部门平均薪水的员工的姓名、部门编号和工资


select ename, t1.deptno, to_char(sal, '$9,999.9') sal, to_char(round(t2.avgsal, 1), '$9,999.9') avg from emp t1,(select deptno, avg(sal) avgsal from emp group by deptno) t2 where t1.sal > t2.avgsal and t1.deptno = t2.deptno;


6. 查询部门中薪水最高的人姓名、工资和所在部门名称


select ename, sal, dname from emp t1
inner join 
(select deptno, max(sal) maxsal from emp group by deptno) t2 
on t1.deptno = t2.deptno and t1.sal = t2.maxsal 
inner join
dept t3 on t3.deptno = t1.deptno;


7. 查询部门平均薪水的等级


select deptno, avg, grade from (select deptno, avg(sal) avg from emp group by deptno) t1 inner join salgrade t2 on t1.avg between t2.losal and t2.hisal;


8. 哪些人是主管


select ename from emp
where empno in (select distinct mgr from emp);


9. 求平均薪水最高的部门的名称和平均工资


select dname, to_char(avg, '$9,999.9') avg from dept t1 
inner join (select deptno, avg from (select deptno, avg(sal) avg from emp group by deptno)  where avg =  (select max(avg) from (select deptno, avg(sal) avg from emp group by deptno))) t2 on t1.deptno = t2.deptno;


10. 求薪水最高的前3名雇员


select * from (select ename, sal from emp order by sal desc) t where rownum <= 3;


11. 求薪水最高的第4-6名雇员


select ename, sal from (select rownum as rn, t.* from (select ename, sal from emp order by sal desc) t) where rn >= 4 and rn <= 6;
假设我们有一个需要使用foreach标签实现in查询或in删除的需求,我们可以按照以下步骤进行操作: 1. 在Mapper XML文件中编写SQL语句,使用foreach标签来构建in语句的条件。 下面是一个使用foreach标签实现in查询的例子: ```xml <select id="selectEmpByDeptIds" resultType="Emp"> SELECT * FROM emp WHERE dept_id IN <foreach collection="deptIds" item="deptId" open="(" separator="," close=")"> #{deptId} </foreach> </select> ``` 在此示例中,我们使用foreach标签将deptIds集合中的所有元素拼接到in语句中,使得查询结果包含dept_id在deptIds集合中的所有记录。 下面是一个使用foreach标签实现in删除的例子: ```xml <delete id="deleteEmpByDeptIds"> DELETE FROM emp WHERE dept_id IN <foreach collection="deptIds" item="deptId" open="(" separator="," close=")"> #{deptId} </foreach> </delete> ``` 在此示例中,我们使用foreach标签将deptIds集合中的所有元素拼接到in语句中,使得删除操作只会删除dept_id在deptIds集合中的记录。 2. 在Mapper接口中定义相应的方法,并在方法参数中声明需要用到的集合类型。例如: ```java public interface EmpMapper { List<Emp> selectEmpByDeptIds(List<Integer> deptIds); void deleteEmpByDeptIds(List<Integer> deptIds); } ``` 在此示例中,我们将需要用到的deptIds集合声明为List<Integer>类型,并在Mapper接口中定义了selectEmpByDeptIds和deleteEmpByDeptIds两个方法。这些方法的实现将会使用Mapper XML文件中定义的SQL语句。 3. 调用Mapper接口中定义的方法,并传入相应的集合参数。例如: ```java List<Integer> deptIds = Arrays.asList(1, 2, 3); empMapper.selectEmpByDeptIds(deptIds); empMapper.deleteEmpByDeptIds(deptIds); ``` 在此示例中,我们定义了一个包含1、2、3三个元素的deptIds集合,并使用empMapper对象调用了selectEmpByDeptIds和deleteEmpByDeptIds方法,将deptIds集合作为参数传入。 以上就是一个使用foreach标签实现in查询和in删除的完整示例。需要注意的是,以上示例中的SQL语句针对的是Oracle数据库下的scoot用户的emp表,如果在其他环境下运行需要进行相应的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值