多表查询

-- 显示雇员名字、工资以及所在部门的名字

-- 在默认情况下,当两个表查询时,规则:
-- 1.从第一张表中,取出一行,与第二张表的每一条记录进行拼接
-- 2.总返回记录数:第一张表记录数 * 第二张表记录数
-- 3.这种返回结果称为  笛卡尔集
SELECT * FROM emp, dept

这样就出现了13*4=52条记录数

image

-- 解决多表的关键就是写出正确的过滤条件 where

-- 这样deptno会重复
SELECT ename, mgr, sal, deptno 
FROM emp, dept
WHERE emp.`deptno` = dept.`deptno`

-- 解决办法,指定  表.列名
SELECT ename, mgr, sal, emp.deptno 
FROM emp, dept
WHERE emp.`deptno` = dept.`deptno`

image

-- 显示部门号为10的部门名、员工名和工资
SELECT dname, ename, sal, emp.`deptno`
FROM emp, dept
WHERE emp.`deptno` = dept.`deptno` AND emp.`deptno` = 10;

image

-- 显示各个员工的姓名,工资,及其工资的级别
-- 雇员表的工资在右边的工资范围之内
SELECT ename, sal, grade
FROM emp, salgrade
WHERE emp.`sal` BETWEEN salgrade.`losal` AND salgrade.`hisal`

image

posted @ 2023-02-15 12:19  pureayu  阅读(24)  评论(0)    收藏  举报