查询每一个雇员的编号,姓名,职位,工资,部门名称,部门位置。
SELECT e.empno,e.ename,e.job,e.sal,d.dname,d.loc
FROM emp e,dept d
WHERE e.deptno=d.deptno;
查询每一个雇员的编号,姓名,职位,工资,部门名称,部门位置。
SELECT e.empno,e.ename,e.job,e.sal,d.dname
FROM emp e JOIN dept d
ON(e.deptno=d.deptno);
左外链接就是在全链接的基础上加上主表中的未匹配数据。
查询左边所有数据,添加右表中的数据,右边没有数据显示为null
查询出每一位雇员的编号、姓名、职位、部门编号、部门名称。web
SELECT e.empno,e.ename,e.job,d.deptno,d.dname FROM emp e LEFT OUTER JOIN dept d ON e.deptno=d.deptno;
sum() 求和 count() 统计 max() 最大值 min() 最小值 avg() 平均值
查看全部雇员中最高的薪资。 sql
SELECT MAX(sal) FROM emp;
统计 emp 中 有佣金的雇员的个数。svg
SELECT MAX(sal) FROM emp;
1.按照部门编号分组,求出每一个部门的人数,平均工资
SELECT deptno, COUNT(empno), AVG(sal) FROM emp GROUP BY deptno;
2.按照职位分组,求出每一个职位的最高和最低工资
SELECT job, MAX(sal), MIN(sal) FROM emp GROUP BY job;
显示非销售人员工做名称以及从事同一工做雇员的月工资的总和,而且要知足从事同一工做的雇员的月工资合计大于$5000,输出结果按月工资的合计升序排列:函数
SELECT job,SUM(sal) sum FROM emp WHERE job<>'SALESMAN' GROUP BY job HAVING SUM(sal)>5000 ORDER BY sum ASC;
显示部门编号不是30的,的部门详细信息(部门编号、部门名称、部门人数、部门月薪资总和),并要求 部门月工资总和大于$8000,输出结果按部门月薪资的总和降序排列。spa
SELECT d.deptno,d.dname,COUNT(*) 人数,SUM(e.sal) 月总收入 FROM dept d,emp e WHERE d.deptno=e.deptno AND d.deptno!=30 GROUP BY d.deptno,d.dname HAVING SUM(e.sal) >8000 ORDER BY SUM(e.sal) DESC;
子查询:指的就是在一个查询之中嵌套了其余的若干查询,嵌套子查询以后的查询SQL语句
通常状况下:code
.1子查询在 WHERE 中出现
查询出工资比SMITH还要高的所有雇员信息xml
SELECT * FROM emp WHERE sal>(SELECT sal FROM emp WHERE ename='SMITH');
2 子查询返回 单行多列 数据(少用)string
SELECT * FROM emp WHERE (job,sal) in (SELECT job,sal FROM emp WHERE ename='SCOTT');
3.子查询返回 多行单列 数据
1.>ANY:比子查询中返回记录最小的还要大的数据;it
SELECT * FROM emp WHERE sal >ANY( SELECT sal FROM emp WHERE job='MANAGER');
2.>ALL:比子查询中返回的最大的记录还要大asm
SELECT * FROM emp WHERE sal >ALL(SELECT sal FROM emp WHERE job='MANAGER');
4.子查询返回 多行多列 数据(当临时表使用)
查询出每一个部门的编号、名称、位置、部门人数、平均工资
SELECT d.deptno,d.dname,d.loc,temp.count,temp.avg FROM dept d,( SELECT deptno dno,COUNT(empno) count,AVG(sal) avg FROM emp GROUP BY deptno) temp WHERE d.deptno=temp.dno;
1.select * from emp limit 0(从哪儿开始),5(查询多条数据); 2.要查询 0 到 5 条数据 select * from emp limit 0,5; 3. 好比 分页的操做 15条数据 每一页 4条件 4页 第1页数据: 0 - 4; select * from emp limit 0,4; -- currentPage = 1 第2页数据: 4 - 8; select * from emp limit 4,4;-- currentPage = 2 第3页数据: 8 - 12; select * from emp limit 8,4; -- currentPage 第4页数据: 12 - 15; select * from emp limit 12,4; 当前的页数 currentPage = 1,2,3 每页的大小 pageSize = 4; 分页的总结: select * from emp limit (currentPage - 1) * pageSize ,pageSize;