笛卡尔积基本原理 两个表如果笛卡尔积运算 1 行数 两个表相乘 2 列数 两个表相加
select count(e.empno) from emp e,dept d where e.deptno = d.deptno; COUNT(E.EMPNO) -------------- 14 select count(e.empno) from emp e,dept d ; COUNT(E.EMPNO) -------------- 56等值连接
查询员工信息,员工号,姓名,月薪,部门名称 select e.ename,e.empno,e.sal,d,dname from emp e,dept d where e.deptno = d.deptno; EMPNO ENAME SAL DNAME ---------- ---------- ---------- -------------- 7369 SMITH 800 RESEARCH 7499 ALLEN 1600 SALES 7521 WARD 1250 SALES 7566 JONES 2975 RESEARCH 7654 MARTIN 1250 SALES 7698 BLAKE 2850 SALES 7782 CLARK 2450 ACCOUNTING 7788 SCOTT 3000 RESEARCH 7839 KING 5000 ACCOUNTING 7844 TURNER 1500 SALES 7876 ADAMS 1100 RESEARCH 7900 JAMES 950 SALES 7902 FORD 3000 RESEARCH 7934 MILLER 1300 ACCOUNTING不等值连接
查询员工信息,员工号,姓名,月薪,薪水级别 select e.empno, e.ename, e.sal, s.grade from emp e,salgrade s where e.sal >= s.losal and e.sal <= s.hisal; EMPNO ENAME SAL GRADE ---------- ---------- ---------- ---------- 7369 SMITH 800 1 7900 JAMES 950 1 7876 ADAMS 1100 1 7521 WARD 1250 2 7654 MARTIN 1250 2 7934 MILLER 1300 2 7844 TURNER 1500 3 7499 ALLEN 1600 3 7782 CLARK 2450 4 7698 BLAKE 2850 4 7566 JONES 2975 4 7788 SCOTT 3000 4 7902 FORD 3000 4 7839 KING 5000 5外连接
按照部门统计员工人数: 部门号 部门名称 各部门人数 要将各个部门划分开 要分组 要使用部门表,员工表 需要多表查询 select d.deptno, d.dname, count(e.empno) from emp e, dept d where e.deptno = d.deptno group by d.deptno,by d.dname; DEPTNO DNAME COUNT(E.EMPNO) ---------- -------------- -------------- 10 ACCOUNTING 3 20 RESEARCH 5 30 SALES 6我们的期望 想把40号部门给统计出来… 40号部门没有被统计出来的原因: 员工表中没有40号部门的员工…d.deptno = e.deptno (d.40 = e.40) 我想把部门表的所有列都显示出来, 就需要找到部门表 在对方写(+)
select d.deptno, d.dname, count(e.empno) from emp e,dept d where e.deptno(+) = d.deptno group by d.deptno,d.dname; DEPTNO DNAME COUNT(E.EMPNO) ---------- -------------- -------------- 10 ACCOUNTING 3 40 OPERATIONS 0 20 RESEARCH 5 30 SALES 6自连接
查询员工信息,老板信息 显示*****的老板是****** 员工信息要查员工表,老板信息还要查员工表 员工表的老板是在老板表内(也就是老板表的员工) select e.ename || '的老板是' || b.ename from emp e,emp d where e.deptno(+) = d.mgr E.ENAME||'的老板是'||B.ENAME ---------------------------- SMITH的老板是FORD ALLEN的老板是BLAKE WARD的老板是BLAKE JONES的老板是KING MARTIN的老板是BLAKE BLAKE的老板是KING CLARK的老板是KING SCOTT的老板是JONES KING的老板是 TURNER的老板是BLAKE ADAMS的老板是SCOTT JAMES的老板是BLAKE FORD的老板是JONES MILLER的老板是CLARK