目录
#-- mysql 1. 基础查询
-- 1.查询职员表中工资大于 1600 的员工姓名和工资
select ename,sal from emp where sal > 1600;
-- 2.查询职员表中员工号为 7369 的员工的姓名和部门号码
select ename,deptno from emp where empno=7369;
-- 3.选择职员表中工资不在 4000 到 5000 的员工的姓名和工资
select ename,sal from emp where sal not between 4000 and 5000;
-- 4.选择职员表中在 20 和 30 号部门工作的员工姓名和部门号
select ename,deptno from emp where deptno in(20,30);
-- 5.选择职员表中没有管理者的员工姓名及职位,按职位排序
select ename,job from emp where mgr is null order by job desc;
-- 6.选择职员表中有奖金的员工姓名,工资和奖金,按工资倒序排列
select ename,sal,comm from emp
where comm is not null and comm <>0 order by sal desc;
-- 7.选择职员表中员工职位的第二个字母是 a 的员工姓名
select ename from emp where job like '-a%';
-- 8.查询那些尚未分配部门的员工的姓名dept
select ename from emp where deptno is null;
-- 9.列出部门表中的部门名字和所在城市;
select dname,loc from dept;
-- 10.显示出职员表中的不重复的职位;
select distinct job from emp;
-- 连接职员表中的职员名字、职位、薪水,列之间用逗号连接,列头显示成 OUT_PUT
select concat(ename,', ',job,', ',sal) as OUT_PUT from emp;
-- ROUND(sal * 1.2)函数用于计算工资提高百分之20%后的结果,并将结果四舍五入到元为单位。
select empno,ename,round(sal * 1.2) as salary from emp;
-- 13.查询员工的姓名和工资数,条件限定为工资数必须大于 2200,并对查询结果按入职时间进行排序,早入职排在前面,晚入职排在后面
select ename,sal from emp where
sal > 2200 order by hiredate asc;
-- 14.列出部门表中除了 ACCOUNTING 部门还有哪些部门。
select * from dept where dname <> 'accounting';
-- 15.已知员工的收入为:薪资+绩效*0.8,如果绩效为null,则表示
-- 绩效为0。查询员工的姓名以及月收入(列名为money),并按照月收入升序排序
select ename,sal + ifnull(comm*0.8,0) as salmonth from emp
order by salmonth asc;
-- 16.将员工的姓名按首字母排序,并列出姓名的长度(length)
select ename,length(ename) as length
from emp order by ename asc;
-- 17.查询各员工的姓名 ename,并显示出各员工在公司工作的月份数 (即:和当前日期比较,该员工已经工作了几个月, 用整数表示)。
select ename,timestampdiff(month,hiredate,now()) month from emp;
select ename,timestampdiff(month,hiredate,curdate()) as month
from emp;
-- TIMESTAMPDIFF(MONTH, hire_date, CURDATE())函数用于计算入职