MySQL 多表查询

1.笛卡尔积
  SELECT * FROM emp,dep;
  SELECT * FROM emp,dep WHERE emp.dep_id = dep.id and dep.name = "技术";

2.内连接:只取两张表有对应关系的记录
  SELECT * FROM emp INNER JOIN dep on emp.dep_id = dep.id;
  SELECT * FROM emp INNER JOIN dep ON emp.dep_id = dep.id WHERE dep.name = "技术";


3.左连接:在内连接的基础上保留左表没有对应关系的记录
  SELECT * FROM emp LEFT JOIN dep ON emp.dep_id = dep.id;


4.右连接:在内连接的基础上保留右表没有对应关系的记录
  SELECT * FROM emp RIGHT JOIN dep ON emp.dep_id = dep.id;


5.全连接:在内连接的基础上保留左、右表没有对应关系的记录
  SELECT * FROM emp LEFT JOIN dep ON emp.dep_id = dep.id;
  UNION
  SELECT * FROM emp RIGHT JOIN dep ON emp.dep_id = dep.id;

  Oracle数据库使用全连接方法:
    SELECT * FROM emp FULL JOIN dep ON emp.dep_id = dep.id;


6.子查询:是将一个查询语句的结果用括号括起来当作另外一个查询语句的条件取用
  SELECT * FROM emp WHERE dep_id =(SELECT id FROM dep WHERE name = "技术");
  SELECT * FROM emp WHERE dep_id in (SELECT id FROM dep WHERE name = "技术" OR name = "人力资源");

原文地址:https://www.cnblogs.com/earon/p/9665713.html