感谢原创:https://blog.csdn.net/plg17/article/details/78758593

准备工作:

  1)新建两张表a_table和b_table:  

create table a_table(
a_id int(10) primary key auto_increment,
a_name varchar(10) default NULL,
a_part varchar(10) default NULL)
engine=innodb character set=utf8;

create table b_table(
b_id int(10) primary key auto_increment,
b_name varchar(10) default NULL,
b_part varchar(10) default NULL)
engine=innodb character set=utf8;

  2)插入数据:

insert into a_table values
(1,'老潘','总裁部'),
(2,'老王','秘书部'),
(3,'老张','设计部'),
(4,'老李','运营部');

insert into b_table values
(2,'老王','秘书部'),
(3,'老张','设计部'),
(4,'老刘','人事部'),
(5,'老黄','生产部');

1、内连接(Inner join)

  又称为简单连接,或者自然连接,是一种常见的连接查询

内连接使用比较运算符,对两个表中的数据,进行比较,并列出与连接条件匹配的数据行,组合成新的记录。

在内连接查询中,只有满足条件的记录,才会出现在查询结果中。

  1.1语法:SELECT  查询字段   FROM   表1   [INNER]  JOIN   表2   ON   表1.关系字段=表2.关系字段;

  1.2理解:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。

  1.3举例:

select * from a_table inner join b_table on a_table.a_id=b_table.b_id;

2、左连接(Left join)

  2.1语法:SELECT  查询字段   FROM   表1   LEFT JOIN   表2   ON   表1.关系字段=表2.关系字段;

  2.2理解:left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。图中阴影部分为返回的记录。

       左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
 

  2.3举例:

select * from a_table left join b_table on a_table.a_id=b_table.b_id;

3、右连接(Right join)

    3.1语法:SELECT  查询字段   FROM   表1   RIGHT JOIN   表2   ON   表1.关系字段=表2.关系字段;

    3.2理解:right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。图中阴影部分为返回的记录。

        与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。
    3.3例子:

select * from a_table right join b_table on a_table.a_id=b_table.b_id;

4、全连接

  暂不支持,但是可以通过MySQL模拟。语法如下:

(select * from a_table left join b_table on a_table.a_id=b_table.b_id)
union
(select * from a_table right join b_table on a_table.a_id=b_table.b_id);

连接查询:inner join,left join,right join的更多相关文章

  1. Hive的join表连接查询的一些注意事项

    Hive支持的表连接查询的语法: join_table: table_reference JOIN table_factor [join_condition] | table_reference {L ...

  2. oracle——外连接查询

    一.问题描述 有时我们为了保留某个表中的数据,而该表中的数据在另外一个关联表中未必都存在对应,此时就应该试用外连接查询. 比如:两个表,产品表和子产品表 注:子产品的parent_product_id ...

  3. sql连接查询中on筛选与where筛选的区别

    sql查询这个东西, 要说它简单, 可以很简单, 通常情况下只需使用增删查改配合编程语言的逻辑表达能力,就能实现所有功能. 但是增删查改并不能代表sql语句的所有, 完整的sql功能会另人望而生畏. ...

  4. Sql_连接查询中on筛选与where筛选的区别

    sql中的连接查询分为3种, cross join,inner join,和outer join ,  在 cross join和inner join中,筛选条件放在on后面还是where后面是没区别 ...

  5. 【连接查询】mySql多表连接查询与union与union all用法

    1.准备两个表 表a: 结构: mysql> desc a; +-------+-------------+------+-----+---------+-------+ | Field | T ...

  6. SQL语句--连接查询

    一.连接查询有以下几种 1.内连接查询 select * from t1 inner join t2 on t1.x = t2.x;  返回有关联的行 2.外链接查询 以下写法都省略了 中间的 out ...

  7. MariaDB 连接查询,视图,事物,索引,外键

    1.连接查询 --创建学生表 create table students ( id int unsigned not null auto_increment primary key, name var ...

  8. MySQL-第十篇多表连接查询

    1.SQL92规范.SQL99规范 2.广义笛卡尔积,多表之间没有任何连接条件,得到的结果将是N x M条记录. 3.SQL92中的左外连接.右外连接,连接符有(+或*),放在连接条件那一边就叫做左或 ...

  9. 掌握MySQL连接查询到底什么是驱动表

    准备我们需要的表结构和数据 两张表 studnet(学生)表和score(成绩)表, 创建表的SQL语句如下 CREATE TABLE `student` ( `id` int(11) NOT NUL ...

  10. MySQL连接查询驱动表被驱动表以及性能优化

    准备我们需要的表结构和数据 两张表 studnet(学生)表和score(成绩)表, 创建表的SQL语句如下 CREATE TABLE `student` ( `id` int(11) NOT NUL ...

随机推荐

  1. 4.Docker 操作容器

    启动容器 所需要的命令主要为 docker run.例如,下面的命令输出一个 “Hello World”,之后终止容器. docker run ubuntu:16.04 /bin/echo 'Hell ...

  2. jsp中引用的jstl 和fmt标签-详解

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...

  3. HTML文本域标签

    textarea文本域 cols指定列数 rows行数(不够用会自动扩容)

  4. tensorflow——乘法

    线性代数中,乘法是很重要的运算,具体的矩阵乘法原理可以翻教材,或看一下阮大神的这篇文章:http://www.ruanyifeng.com/blog/2015/09/matrix-multiplica ...

  5. 【Python】获取星期字符串

    原理:字符串切片 1.0代码: #获取星期字符串 weekStr="星期一星期二星期三星期四星期五星期六星期日" weekId=eval(input("请输入星期数字(1 ...

  6. c# 泛型<T>类型参数T的约束where

    在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制.如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误.这些限制称为约束.约束是使用 where 上 ...

  7. python之路之css

    方式三 方式四 <style type="text/css"> a:link{ color: red; } a:visited { color: blue; } a:h ...

  8. Python入门1 —— 初识Python

    一:Python介绍 1.Python是什么? Python是一门编程语言,编程语言是一门语言. 语言就是一个事物与另一个事物沟通的工具. 而编程语言则是人与计算机沟通的介质. 2.为什么要跟计算机沟 ...

  9. 19年7月份面试7家公司,整理的java面试题(答案自行百度解决,也是个学习的过程)

    Dubbo与注册中心Zookeeper了解多少ConcurrentHashMap的原理 集合 HashMap 和 HashTable和ConcurrentHashMap的原理以及区别HashMap初始 ...

  10. Atcoder Beginner Contest 155E(DP)

    #definde HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ]; int main(){ ios: ...