部门表:
员工表:
工资表:
where 子查询
查询销售部门的员工信息
select * from emp where deptno = (select deptno from dept where dname = 'SALES');
查询工资等级为2的员工信息
select * from emp where sal between (select losal from salgrade where grade = 2 ) and (select hisal from salgrade where grade = 2 );
函数
concat() 连接字符串
一列中显示员工的姓名和工种
select concat(ename,job) from emp;
instr(x ,str,start,n)在x中查找str start 开始位置 n str出现的第几次
select ename, instr(ename,'S') from emp;
查看每个员工的名称由几个字符组成
select ename,length(ename) from emp;
查询10部门员工的姓名 并根据姓名字符长度降序排序
select ename,deptno from emp where deptno = 20 order by length(ename) desc ;
查询20部门的员工信息,并将员工姓名全部转为小(大写【upper】)写,按照工资降序排列
select ename,sal,lower(ename) from emp order by sal desc;
去除左边空格 去除右边空格 去除两边的空格
select rtrim(ltrim(' abcd ')) from dual;
将‘a123b’中的a替换为-
select replace('a123b','a','-') from dual;
获取员工姓名的第一个字符
select ename, substr(ename,1,1) from emp;
获取当前系统的日期
select sysdate from emp;
获取当前系统后一天的日期
select last_day(sysdate) from dual;
查询员工的姓名 入职日期 转正日期【入职日期+3个月】
select ename,hiredate,add_months(hiredate,3) from emp;
查询员工入职到今天共计多少个月
select ename,hiredate,months_between(sysdate,hiredate) as monthsTotal from emp;
将当前系统时间转换为字符类型
select to_char(sysdate,'YYYY-MM-DD') from dual;
将字符串转为时间类型
select to_date('2020-01-01','YYYY-MM-DD') from dual;
组函数 【求一个整体的一个结果】
查询公司员工的平均工资
select avg(sal) from emp;
查询员工总人数
select count(empno) from emp;
查询员工最高和最低的工资
select min(sal), max(sal) from emp;
查询20 部门每个月需要向员工支付多少工资
select sum(sal) from emp where deptno = 20;
去重统计
查询有员工的部门共几个 【distinct 去重关键字,count统计关键字】
select count(distinct deptno) from emp;
求员工的奖金平均