频道栏目
首页 > 数据库 > 其他综合 > 正文
MySQL之多表关联查询
2018-09-30 10:17:39           
收藏   我要投稿

什么是多表关联查询,有几种多表关联的查询方式,分别是什么?

对多张具有一定关系的表中的数据进行查询。

直接查询

SELECT * FROM emp, dept;

关联查询 查询多张表中都有的数据

SELECT * FROM emp, dept WHERE emp.dept_id = dept.id;

子查询

子查询通俗来讲,就是查询中有查询。

1)单行子查询 查询结果为单个

SELECT * FROM emp

WHERE dept_id = (SELECT id FROM dept WHERE dname = '常委');

2)多行子查询 查询结果为多个

SELECT * FROM emp

WHERE dept_id IN

(SELECT id FROM dept WHERE dname IN ("班委","常委");

连接查询

1)内连接查询[扩展]

INNER JOIN与一般的连表查询一致,即使用逗号隔开的查询方式。

Inner join(相等联接或内联接)

sql语句如下:

SELECT * FROM a INNER JOIN b ON a.aID =b.bID

等同于以下SQL句:

SELECT * FROM a,b WHERE a.aID = b.bID

2)外连接查询

特点:外连接有一主一次。

外联接可以是左向外联接、右向外联接或完整外部联接。

a) 左外连接查询(LEFT OUTER JOIN -> LEFT JOIN)

左外连接左表为主,那么左表中所有的记录无论满足不满足条件,都打印出来。不满足条件的值用null填补。

SELECT * FROM dept d LEFT JOIN emp e ON d.id = e.dept_id;

b) 右外连接查询(RIGHT OUTER JOIN -> RIGHT JOIN)

右外连接右表为主,那么右表中所有的记录无论满足不满足条件,都打印出来。不满足条件的值用null填补。

SELECT * FROM dept d RIGHT JOIN emp e ON d.id = e.dept_id;

3)全连接查询[扩展]

所谓全连接其实就是左右连接的并集,即内连接的结果,加上左表和右表中不满足条件的所有行。其实mysql并不认识全连接语法。此概念在其他数据库中有的存在。

from 表1 full [outer] join 表2 on 连接条件;

4)扩展:hash查询

点击复制链接 与好友分享!回本站首页
上一篇:数据库Mysql基本操作解析
下一篇:mysql的引擎解析,innodbMyisam的区别
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站