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 = "人力资源");
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步