mysql中的左连接、内连接、右连接和全连接理解

来源:互联网 发布:通信网络优化值得做吗 编辑:程序博客网 时间:2024/06/05 04:48

  内连接(INNER JOIN)(典型的连接运算,使用像 = 或 <> 之类的比较运算符)。包括相等连接和自然连接。内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行
  左连接(LEFT JOIN 或 LEFT OUTER JOIN)是右左边表中的数据为基准,若左表有数据右表没有数据,否则显示左表中的数据右表中的数据显示为空
  右连接(RIGHT JOIN 或 RIGHT OUTER JOIN)是以右边表中的数据为基准,若右表有数据左表没有数据,否则显示右表中的数据左表中的数据显示为空
  全连接( FULL JOIN 或 FULL OUTER JOIN) 完整外部连接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

下面用几个实例来详细说明

两个表:
A (id, name)
数据:

id name 1 张三 2 李四 3 王五

B (id, name)
数据:

id name 1 学生 2 老师 3 校长

内连接结果
SELECT A.\*, B.\* FROM A INNER JOIN B ON A.id=B.id;

id name id name 1 张三 1 学生 2 李四 2 老师

左连接结果
SELECT A.\*, B.\* FROM A LEFT JOIN B ON A.id=B.id;

id name id name 1 张三 1 学生 2 李四 2 老师 3 王五 NULL NULL

右连接结果
SELECT A.\*, B.\* FROM A RIGHT JOIN B ON A.id=B.id;

id name id name 1 张三 1 学生 2 李四 2 老师 NULL NULL 4 校长

全连接结果
SELECT A.\*, B.\* FROM A FULL JOIN B ON A.id=B.id;

id name id name 1 张三 1 学生 2 李四 2 老师 3 王五 NULL NULL NULL NULL 4 校长

补充:下面这种情况就会用到外连接
比如有两个表一个是用户表,一个是交易记录表,如果我要查询每个用户的交易记录就要用到左外外连接,因为不是每个用户都有交易记录。
用到左外连接后,有交易记录的信息就会显示,没有的就显示NULL,就像上面我举得例子一样。
如果不用外连接的话,比如【王五】没有交易记录的话,那么用户表里的【王五】的信息就不会显示,就失去了查询所有用户交易记录的意义了。

看一下结果就能明白各种连接的区别了。

原文地址 : http://blog.csdn.net/dsiori/article/details/54926046

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 种四天豆子没出怎么办 吃了豆子放屁怎么办 ios11软件不兼容怎么办 手机安装不上怎么办 opp0商店没有了怎么办 华硕打不开机怎么办 飞利浦电视待机打不开怎么办 微信支付扫码牌怎么办 微信付款没扣钱怎么办 移动充值卡有效期到了怎么办 联华提货券过期怎么办 狗吃了西红柿怎么办 加盟总店关了怎么办 欧亚超市购物卡怎么办 欠招行信用卡一万多逾期怎么办 白条取现失败怎么办 啤酒喝醉了难受怎么办 喝啤酒喝醉头疼怎么办 运动鞋鞋子大了怎么办 运动鞋买大一号怎么办 跑鞋买大了怎么办 鞋子大一个手指怎么办 一体式手机死机怎么办 ivvi手机声音小怎么办 单位欠缴社保怎么办 哆点错误代码1怎么办 忘记密码怎么办简单一点 智校园忘记密码怎么办 wps图片显示空白怎么办 dr.com闪退怎么办 联想笔记本连不上无线网络怎么办 长时间不用电池休眠怎么办? 校园电信卡欠费怎么办 校园联通卡欠费怎么办 校园网等不上怎么办 app显示尚未授权怎么办 手机屏有气泡怎么办 平板老是闪退怎么办 挖机环保不合格怎么办 摩托车高压火弱怎么办 助力转向机漏油怎么办