MySQL之连接查询

本文详细介绍了SQL中的四种连接类型:内连接、左外连接、右外连接和交叉连接,并通过实例展示了每种连接的应用场景。此外,还介绍了自连接的概念及其应用场景。

1.内连接:只列出匹配的记录
  语法:
    SELECT … FROM join_table
   INNER JOIN join_table2
   ON join_condition
   WHERE where_defnition
 解释:只列出这些连接表中与连接条件相匹配的数据行。INNER可以不写,则默认为内连接。[ON join_condition]里面写的是连接的条件。
 举例:
    select e.name,d.name from employee e inner join department d on e.dept_id=d.id;(常用)
    等价于:
    select e.name,d.name from employee e join department d on e.dept_id=d.id;(常用)
    等价于:
    select e.name,d.name from employee e,department d where e.dept_id=d.id;

2.外连接:
  左外连接(LEFT [OUTER] JOIN)
  右外连接(RIGHT [OUTER] JOIN)
  全外连接(FULL [OUTER] JOIN) 注:MySQL5.1的版本暂不支持
  解释:不仅列出与连接条件(on)相匹配的行,还列出左表table1(左外连接)、或右表table2(右外连接)、或两个表(全外连接)中所有符合WHERE过滤条件的数据行。一般都是用左连接或者外连接.其中,[OUTER]部分可以不写,(LEFT | RIGHT | FULL)部分要写其中一个。
  2.1 左外连接:左表列出全部,右表只列出匹配的记录。
  举例:
    SELECT m.`name` ,b.name from sys_menu m LEFT OUTER JOIN sys_button b ON m.id=b.menuId
  等价于:
    SELECT m.`name` ,b.name from sys_menu m LEFT JOIN sys_button b ON m.id=b.menuId

  2.2 右外连接 :右表列出全部,左表只列出匹配的记录。
  举例:
    SELECT m.`name` ,b.name from sys_menu m RIGHT JOIN sys_button b ON m.id=b.menuId
  等价于:
    SELECT m.`name` ,b.name from sys_menu m RIGHT OUTER JOIN sys_button b ON m.id=b.menuId

3 交叉连接:
解释:假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}
其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
等价于:(荐)
SELECT … FROM table1, table2;
4.自连接:
解释:参与连接的表都是同一张表。(通过给表取别名虚拟出两张表)
注:非常重要,在JavaWeb中的目录树中用的特别多。(使用什么连接由需求而定)
举例:
SELECT m.`name` parent ,m2.`name` c from sys_menu m LEFT JOIN sys_menu m2 on m.id=m2.parentId
说明: 查询当前所有菜单的名称以及其子菜单的名称

转载于:https://www.cnblogs.com/sxf20/p/6823837.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值