15.多表查询--内连接

2018-12-21  本文已影响100人  Liuzhl

1. 合并结果集

SELECT deptno, dname FROM dept
UNION ALL
SELECT empno, ename FROM emp
SELECT deptno, dname FROM dept
UNION
SELECT empno, ename FROM emp

内连接

1. 笛卡尔积
SELECT * FROM emp, dept
笛卡尔积.png
SELECT * FROM emp, dept WHERE emp.deptno = dept.deptno
去除笛卡尔积后的结果.png

2. 多表取指定列,以及表别名

SELECT emp.ename, emp.job, emp.sal, dept.dname 
FROM emp, dept
WHERE emp.deptno = dept.deptno
查询多表指定列.png
SELECT e.ename, e.job, e.sal, d.dname 
FROM emp e, dept d
WHERE e.deptno = d.deptno
内连接的3种写法
  1. 方言, 只在mysql数据库中生效,也就是上面我们用的写法
SELECT * FROM 表1, 表2 WHERE表1.xx = 表2.xx
SELECT * FROM emp, dept WHERE emp.deptno = dept.deptno
  1. 标准: sql规范
SELECT * FROM 表1 INNER JOIN 表2 ON 表1.xx = 表2.xx
SELECT * FROM emp INNER JOIN dept ON emp.deptno = dept.deptno
  1. 自然:根据2张表中列名相同的列进行自动匹配
SELECT * FROM 表1 NATURAL JOIN 表2 
SELECT * FROM emp NATURAL JOIN dept
上一篇下一篇

猜你喜欢

热点阅读