一、内联结(INNER JOIN)

  MySQL内联结使用INNER JOIN将多个数据表t1,t2隔开,结果是t1里的每一个数据行将与t2里的每一个数据行组合。

  

  逗号连接符、CROSS JOIN和JOIN联结类型类似于INNER JOIN。

  

  

  

  INNER JOIN、CROSS JOIN和JOIN(注意,不包括逗号操作符) 还支持另外几种用来表明如何对数据表里的数据列进行匹配的语法变体:

  1、用一条ON子句代替WHERE子句。

  

  2、使用USING()子句,类似于ON,但要求被联结的数据列必须是同名的。

二、左联结和右联结(外联结)

  内联结只显示在两个数据表里都能找到匹配的数据行。

  外联结除了显示同样的匹配结果,还可以把其中一个数据表在另一个数据表里没有匹配的数据行也显示出来。

  外联结分左联结和右联结两种。

  左联结意思是把左数据表在右数据表里没有匹配的数据行也显示出来。

  右联结意思是把右数据表在左数据表里没有匹配的数据行也显示出来。

  

  左联结工作原理:

  前提:必须给出用来匹配两个数据表里的数据行的数据列(这里t1.i1 = t2.i2)。

  如果左数据表的某个数据行与来自右数据表的某个数据行匹配时,那么这两个数据行的内容就会被选取为一个输出数据行。如果来自

  左数据表的某个数据行在右数据表里找不到匹配,它就会被选取作为一个输出数据行,此时与它联结的是一个来自右数据表里的"假"数据行,这个“假”

  数据行的所有数据列都包含NULL值。

  换一句话说,在LEFT JOIN操作里,来自左数据表的每一个数据行在结果集里都有一个对应的数据行,不管它在右数据表里有没有匹配。

  在结果集里,在右数据表里没有匹配的结果数据行有这样的特征:来自右数据表的所有数据列都是NULL值。

  这个特征可以让你知道右数据表里缺少了哪些数据行。

  

  左联结LEFT JOIN很有用,尤其是在你只想找出在右数据表里没有匹配的左数据表的行时,增加一条WHERE语句,让它把右数据表的数据列全部是NULL值(也就是那些在一个数据表里有匹配,但在另一个数据表里没有匹配)的数据行筛选出来。

  

  一般来说,你把右数据表里值为NULL的数据列显示出来没有什么意义,可以在SELECT语句里输出列清单里剔除:

  

  

MySQL内外联结的更多相关文章

  1. MySQL的联结(Join)语法

    MySQL的联结(Join)语法 1.内联结.外联结.左联结.右联结的含义及区别:   在讲MySQL的Join语法前还是先回顾一下联结的语法,呵呵,其实连我自己都忘得差不多了,那就大家一起温习吧(如 ...

  2. mysql 内外链接

    外联结:分为外左联结和外右联结. 左联结A.B表的意思就是将表A中的全部记录和表B中联结的字段与表A的联结字段符合联结条件的那些记录形成的记录集的联结,这里注意的是最后出来的记录集会包括表A的全部记录 ...

  3. MySQL -- 表联结

    创建联结:(使用WHERE联结)SELECTvend_name,prod_name,prod_priceFROMvendors,productsWHEREvendors.vend_id=product ...

  4. MySql中的内外联结查询

    内联接只显示在两个数据表里都能找到匹配的数据行.外联接除了显示同样的匹配结果,还可以把其中一个数据表在另一个数据表里没有匹配的数据行也显示出来.外联接分左联接和右联接两种. 看下面的例子: 内联接: ...

  5. MySQL JOIN | 联结

    联结是利用SQL的SELECT能执行的最重要的操作.为了提高存储的有效性和避免数据冗余,往往会将有关联的数据存储在好几张表中,那么怎样用一条SELECT语句就能检索出这些数据呢? 答案是JOIN(联结 ...

  6. mysql 左联结与右联结

    mysql> select * from test; +----+------------+-------+-----------+ | id | name | score | subject ...

  7. mysql 表联结,内部联结

    mysql> select * from user; +------+----------+-----------+ | id | name | address | +------+------ ...

  8. mysql 创建联结

    mysql> select * from user; +------+----------+-----------+ | id | name | address | +------+------ ...

  9. MySQL 外部联结 内连接、左右外连接辨析

    内连接 在进行跨表内连接查询数据时,查询结果只返回符合查询条件的数据:跨表内连接查询的结果和使用where的多表查询结果相同,其实就是普通的查询,没啥好说的 -- 语法: SELECT 别名1.字段名 ...

随机推荐

  1. Codeforces686C【dfs】

    题意: n,m<=1e9 设定一天n小时,一小时m分钟, 显示时间的是一个7进制的表, 问你在一天里出现多少个时刻,表中的数字要都不相同. 思路: 因为7进制,显示的数字肯定是0-7之间的. 然 ...

  2. PTA 水...

    习题4-2 求幂级数展开的部分和 (20分) 已知函数e^x可以展开为幂级数1+x+x2/2!+x3/3!+⋯+xk/k!+⋯1+x+x^2 /2! + x^3 /3! + \cdots + x^k ...

  3. nginx上游模块

    1 概念 The ngx_http_upstream_module is used to define groups of servers that can be referenced by the  ...

  4. Unity中所有特殊的文件夹

    1. 隐藏文件夹以.开头的文件夹会被Unity忽略.在这种文件夹中的资源不会被导入,脚本不会被编译.也不会出现在Project视图中.2. Standard Assets在这个文件夹中的脚本最先被编译 ...

  5. .net core跨域设置

    services.AddCors(options => options.AddPolicy("AllowSameDomain", builder => builder. ...

  6. asp.net 微信登录实现方式

    之前我以为做微信登录跟微信公众号有关,后来发现是我想多了.原来微信还有一个叫开放平台的东西,见下图: 我的这个已经生成好了,没有的需要创建一个,https://open.weixin.qq.com/c ...

  7. LN : leetcode 684 Redundant Connection

    lc 684 Redundant Connection 684 Redundant Connection In this problem, a tree is an undirected graph ...

  8. 【学习笔记】一:JavaScript简介

    1.JavaScript简史 1)JavaScript最初的功能只是用来在客户端做简单的输入验证器,减少客户端与服务器端的数据交互(毕竟那个年代网速有限). 2)JavaScript的飞速发展及Net ...

  9. cacti支持中文办法

    1.yum groupinstall "chinese support" 2. 登陆Cacti,在主页的左边点击setting,选择paths页(console>>se ...

  10. 解决./mysql-bin.index’ not found (Errcode: 13)

    问题出现在升级php版本以后,网站无法连接数据库,phpMyAdmin无法登录: 然后尝试开启mysql,/etc/init.d/mysqld start ,提示: Starting MySQL. E ...