--交叉链接
select enanme,sal ,dname from emp e,dept d cross join dept d
--自然链接
select ename,sal,dname from emp e natural join dept
d
--USING子句
select ename,sal,dname from emp e join dept d using (deptno)
--ON子句
--其他的限制条件建议写在where 子句中
--使SQL语句中的结构更加清晰
select ename,sal,dname from emp e join dept d on e.deptno=d.deptno where
select ename,sal,dname,grade from emp e join dept d on e.deptno=d.deptno join salgrade s on e.sal between s.losal and s.hisal; sal>1500;
--左外连接 left 【outer】 join
--在 left 【outer】 join 左边的表 作为主表(基表)
--主表中不满足连接条件的数据也会显示
--查询员工姓名和直接领导姓名,没有领导的员工也要显
select e.ename,l.ename from emp e,emp l where e.mgr=l.empno(+)
--左外连接写法
select e.ename,l.ename from emp e left join emp l on e.mgr=l.empno
--右外连接 RIGHT 【OUTER】 JOIN
--在 RIGHT [OUTER] JOIN 右边的表 作为主表
--主表中不满足连接条件的数据也会显示
--查询员工姓名,部门名称,部门编号 没有员工的部门也要显示
select e.ename,d.dname,d.deptno from emp e, dept d where e.deptno(+)=d.deptno;
--右外连接方式写法
select e.ename,d.dname,d.deptno from emp e right join dept d on e.deptno=d.deptno;
--全外连接 FULL [OUTER] JOIN
select e.ename,l.ename,e.deptno from emp e full join emp l on e.mgr = l.empno --------------------
--分组函数
--常用的分组函数
--MAX(最大) MIN(最小) SUM() AVG() COUNT()
--MAX()求一组数据的最大值
--MIN () 求一组数据的最小值
--SUM ()求一组数据的和
--AVG ()求一组数据的平均值
--COUNT ( ) 统计数/记录数
--查询 EMP 表中的薪资的最大值和最小值
select max(sal),min(sal) from emp
-- ename 返回一列数据 而max 和min 返回单个数据
--它们之间是多对一的关系没有办法匹配显示
--求所有员工薪资和
select sum(sal) from emp
----求所有员工的平均薪资
select avg (sal) from emp
--查询有多少部门
select distinct deptno from emp
select count(distinct deptno) from emp
--查询10号部门的最高薪资
select max(sal) from emp where deptno=10
---group by 分组
--需要分组的列需要写在 group 后面
-- 多个列之间需要用逗号隔开
--查询每个部门的最高薪资 ,最低薪资
--group要写在where 字句之后
select deptno,max(sal),min(sal) from emp where deptno in (10,20) group by deptno
--查询每个工作岗位的最高薪资 ,最低薪资
select job,max(sal),min(sal) from emp group by job
--查询每个部门的人数
select count (ename),deptno from emp group by deptno
--查询每个职位的人数要求薪资大于1500
select job ,count (ename) from emp where sal>1500 group by job
网友评论