基本含义

  连接就是指两个或两个以上的表(数据源) “连接起来成为一个数据源”。

  连接语法的基本形式:from 表1 【连接方式】 join 表2 【on 连接条件】;

  连接的结果可以当做一个“表”来使用。

1.内连接:

  语法:from 表1 【inner】 join 表2 on 表1.字段1=表2.字段2;

  含义:找出(过滤)在交叉连接的结果表中的表1的字段1的值等于表2的字段2的值的那些行。

例如:以下是两个相关的表格product_type 和 product

         

  可以使用内连接使其结合成为一张表,这里因为两个表中都使用了protype_id,所以使用t1. t2.来代替表1和表2

  select * from product as t1 join `product_type` as t2 on t1.protype_id=t2.protype_id where 1;

结果如下:

            

   也可以指定只列出其中部分字段:

  select t1.pro_id,pro_name,price, t2.protype_name from product as t1 join `product_type` as t2 on t1.protype_id=t2.protype_id where 1;           

结果如下:

            

2.左/右(外)连接  

  形式:from  表1  left/right  [outer]  join   表2   on  连接条件。

  说明:

  1,这里,left/right是关键字。

  2,连接条件跟内连接一样。

  3,含义是:内连接的结果基础上,加上左/右边表中所有不符合连接条件的数据,相应放右/左边表的字段的位置就自动补为“null”值。

3.子查询 in

  子查询就是把一个查询的结果当做另一个查询的条件

  in的基本语法形式为:

    where 操作数 in(值1,值2,...);

  则in子查询就是:

    where 操作数 in(列子查询);

  含义:

    表示该操作数(字段值) 等于该子查询的其中任意一个只,就算满足条件。

例如:找出上表中所有带“电”字的类别的产品

  第一步:找出所有带“电”字的类别ID:

  select protype_id from product_type where protype_name like '%电%';

  第二步:根据结果找出这些类别的产品:

  select * from product where protype_id in (1,3);

  实际上就等于

  select * from product where protype_id in(

  select protype_id from product_type where protype_name like '%电%'

  );

4.联合查询

  联合查询的关键字是: union

  基本含义:

  联合查询就是将两个select语句的查询结果“层叠”到一起成为一个“大结果”。

  两个查询结果的能够进行“联合”的先觉条件是:结果字段数相等。

  语法形式:

  select 语句1

  union

  select 语句2;

  说明: 

  1,两个select语句的输出段(结果字段)一样数目一样,应用中通常类型一样才有意义。

  2,结果集中的字段以第一个select语句的字段为准。

  3,第一个select语句的字段可以做别名,但如果做别名,则后续的where,group,order等子句应该用该别名。

  4,联合查询默认是会消除重复项的(DISTINCT),要想不消除,则必须明确些“ALL”。

  5,如果要对整个联合结果进行排序或limit,则应该对各自的select语句加括号:

  (select 语句1)

  union

  (select 语句2)

  order  by .....  limit ....;

  

MySQL连接查询(多表查询)的更多相关文章

  1. mysql 数据操作 多表查询 目录

    mysql 数据操作 多表查询 准备 多表连接查询介绍 mysql 数据操作 多表查询 多表连接查询 笛卡尔积 mysql 数据操作 多表查询 多表连接查询 内连接 mysql 数据操作 多表查询 多 ...

  2. MySQL数据库语法-多表查询练习一

    MySQL数据库语法-多表查询练习一 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要介绍的多表查询的外键约束,以及如何使用外链接和内连接查询数据信息. 一.数据表和测试 ...

  3. mysql 数据操作 多表查询 准备

    为什么需要多表查询: 因为我们不可能把所有数据都放在一张表里 我们把不同数据存储 放在一张一张不同表 方便管理,但我们为了方便管理,把数据拆分到一张一张表去存储. 但是数据还是一个整体,数据之间是有关 ...

  4. day04 mysql单表查询 多表查询 pymysql的使用

    day04 mysql pymysql   一.单表查询     1.having过滤         一般用作二次筛选             也可以用作一次筛选(残缺的: 只能筛选select里面 ...

  5. mysql数据库之单表查询

    单标查询 单表查询语句 关键字执行的优先级 简单查询 where约束 group by 聚合函数 HAVING过滤 order by 查询排序 LIMIT限制查询的记录数 使用正则表达式查询 单表查询 ...

  6. MySQL中的联表查询与子查询

    0.准备数据 1.内连接:INNER JOIN 2.左连接:LEFT JOIN 3.右连接:RIGHT JOIN 4.USING子句 扩展知识点: 0.表别名的使用: 1.group by的用法 2. ...

  7. mysql 数据操作 单表查询 目录

    mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...

  8. mysql 数据操作 单表查询 where 约束 目录

    mysql 数据操作 单表查询 where约束 between and or mysql 数据操作 单表查询 where约束 is null in mysql 数据操作 单表查询 where约束 li ...

  9. mysql 数据操作 单表查询 group by 分组 目录

    mysql 数据操作 单表查询 group by 介绍 mysql 数据操作 单表查询 group by 聚合函数 mysql 数据操作 单表查询 group by 聚合函数 没有group by情况 ...

  10. MySQL数据库之单表查询中关键字的执行顺序

    目录 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 2 执行顺序 3 关键字使用语法 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from ...

随机推荐

  1. localstorage和vue结合使用2

    html <template> <div class="hello"> <div class="page-top"> < ...

  2. MongoDB安装成为Windows服务及日常使用遇到问题总结

    安装MongoDB: http://blog.csdn.net/liuzhoulong/article/details/6124566 严格按照上面的步骤,设置数据库目录,设置日志目录,安装服务.可是 ...

  3. memcached 一致性hash原理

    memcache 是一个分布式的缓存系统,但是本身没有提供集群功能,在大型应用的情况下容易成为瓶颈.但是客户端这个时候可以自由扩展,分两阶段实现.第一阶段:key 要先根据一定的算法映射到一台memc ...

  4. hdu 5455 (2015沈阳网赛 简单题) Fang Fang

    题目;http://acm.hdu.edu.cn/showproblem.php?pid=5455 题意就是找出所给字符串有多少个满足题目所给条件的子串,重复的也算,坑点是如果有c,f以外的字符也是不 ...

  5. grep如何进行正则表达式查找

    字符类 字符类的搜索:如果我想要搜寻 test 或 taste 这两个单字时,可以发现到,其实她们有共通的 't?st' 存在-这个时候,我可以这样来搜寻: [root@www ~]# grep -n ...

  6. [转] initrd详解

    转自:http://www.cnblogs.com/leaven/archive/2010/01/07/1641324.html 在Linux操作系统中,有一项特殊的功能——初始化内存盘INITRD( ...

  7. XStream将XML转javaben,出现多余的tag,导致出错

    今天在测试银联无卡快捷支付的案例时,多了一个多tag兼容性测试,它是指银联的XML报文中会出现多余的tag,如果我们用XStream解析的时候,没有Javabean的字段可以对应上,就会报错!提示: ...

  8. node.js 在使用child_process 模块时候,调试端口占用的问题解决方案(EADDRINUSE)

    在fork的时候,带参数{ execArgv: ['--debug=' + (process.debugPort +   1)] }

  9. 6.26实力测试(小错笑cry)

    6.26测试 本次考试的粗心不忍吐槽(自带贴吧喷水表情),本次考试主要考察的知识点如下: 算法的分析与精简 暴力枚举输出字符 判断与枚举的综合考察 题目 第一题 [问题描述] 在一口井里,有一只神牛( ...

  10. Django报错:__init__() missing 1 required positional argument: 'on_delete'

    原因: 在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:TypeError: __init__() missing ...