在实际应用中,由于不同的业务需求,一般的select查询语句无法满足要求。所以就需要了解一些MySQL的高级查询方式

内连接 inner join

典型的连接查询,有相等(=)连接和不等(<>)连接。如:现在有产品表及供应商表

产品表:

供应商表:

如果现在有个需求:查询产品表中产品对应的供应商公司名称及地址。那么就可以根据产品表中的供应商ID进行连接查询

这样根据两个表中供应商ID相同的条件,就查询出想要的数据。注:连接查询默认为inner join,所以inner可省略不写

左连接 left join

left join 也可写成left outer join,是外连接的其中一种查询方式,其他的外连接还有右连接(right join | right outer join)、完整外部连接(full join | full outer join)

假设:有一张学生表,里面存储了学生的学号、名字、年龄、性别等相关信息。还有一张技能表,里面存储了学生的学号以及对应的特长

现在要查询学生的信息,并且展示他们所掌握的特长。但是并不是所有的学生都有特长,所以此时要用到left join而不能用inner join

表students:

表skills:

连接查询:

这样就查询到所有的学生和他们掌握的技能,没有特长的显示为Null。

所以,左连接查询返回左表中符合条件的所有行,如果左表中的某行记录在右表中没有匹配,那么在结果集中,相关右表的列显示为空。

右连接 right join

右连接查询返回所有符合条件的右表记录,如果右表的记录在左表找不到匹配,那么相关左表的列显示为空。

还以上文中的students表和skills表为例。假设:需要找出所有拥有特长的学生。结果如下:

完全连接 full join

完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。

由于MySQL好像不支持full join,可以使用union all来实现。如:

结果集中将两个查询结果合并在一块,如果去除重复记录,可使用union来代替union all

MySQL常见连接查询的更多相关文章

  1. MySql的连接查询

    类似于oracle的连接查询,mysql连接查询也有左外连接.右外连接.内连接查询.但是,不同的是没有直接 的全外连接查询. 这里介绍MySql的连接查询: 这里已两张表为例:STUDENT 表 和 ...

  2. MySQL查询优化:连接查询排序limit

    MySQL查询优化:连接查询排序limit(join.order by.limit语句) 2013-02-27      个评论       收藏    我要投稿   MySQL查询优化:连接查询排序 ...

  3. 【杂记】mysql 左右连接查询中的NULL的数据筛选问题,查询NULL设置默认值,DATE_FORMAT函数

    MySQL左右连接查询中的NULL的数据筛选问题 xpression 为 Null,则 IsNull 将返回 True:否则 IsNull 将返回 False. 如果 expression 由多个变量 ...

  4. Mysql表连接查询

    原文地址: https://www.cnblogs.com/qiuqiuqiu/p/6442791.html 1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等 ...

  5. 【mysql】连接查询

  6. MySQL之连接查询

    主要是多表查询和连接查询

  7. mysql之连接查询、联合查询、子查询

    本文内容: 连接查询 联合查询 子查询 from子查询 where子查询 exists子查询 首发日期:2018-04-11 连接查询: 连接查询就是将多个表联合起来查询,连接查询方式有内连接.外连接 ...

  8. mysql(连接查询和数据库设计)

    --创建学生表 create table students ( id int unsigned not null auto_increment primary key, name varchar(20 ...

  9. LeetCode 175. Combine Two Tables 【MySQL中连接查询on和where的区别】

    一.题目 175. Combine Two Tables 二.分析 连接查询的时候要考虑where和on的区别 where : 查询时,连接的时候是必须严格满足条件的,满足了才会加入到临时表中. on ...

随机推荐

  1. java学习笔记之String类

    String类总结 String类概述: java.lang.String 类是字符串操作类 String类的常用构造方法: //1.直接赋值 String str= "hellojava& ...

  2. 【Struts2的执行流程,这个博主写的很详细】

    http://blog.csdn.net/wjw0130/article/details/46371847

  3. jdk7jdk8新特性概述

    在oracle停止对jdk6更新,jdk8发布之后,公司终于要把生产环境更新到jdk7,下面列一下jdk7,8的可能需要关注的新特性. jdk7 G1垃圾回收 fork-join框架 二进制变量 Sw ...

  4. java 内存数据存储

    近期在学习的过程中,越发认为基础知识的重要性,so 恶补一下 直接上图上演示样例: 图一:

  5. Bootstrap入门Demo——制作路径导航栏

    今天在在群里聊天的时候看到一仅仅程序猿发了一张用Bootstrap做的界面.感觉挺好看.然后去官网看了下组件.发现都挺美丽的,然后看到了路径导航栏,刚好要做这个东西,然后就下了Bootstrap的源代 ...

  6. java_抽象类

    抽象类1,语法定义抽象类前使用abstract关键字修饰,则该类为抽象类2.应用场景(1)在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法. (2)从多个 ...

  7. redis 报Operation against a key holding the wrong kind of value警告的解决方法

    WRONGTYPE Operation against a key holding the wrong kind of value github:https://github.com/antirez/ ...

  8. pycharm运行scrapy

    1.打开pycharm, 点击File>Open找到mySpider项目导入 . 2.打开File>Settings>Project 点击Project Interpreter 右边 ...

  9. CSS实现文字换行

    强制不换行:div{ white-space:nowrap; } 自动换行: div{ word-wrap:break-word; word-break:normal; } 强制不换行 white-s ...

  10. Structured Streaming从Kafka 0.8中读取数据的问题

    众所周知,Structured Streaming默认支持Kafka 0.10,没有提供针对Kafka 0.8的Connector,但这对高手来说不是事儿,于是有个Hortonworks的邵大牛(前段 ...