• mysql数据库中的多表查询(内连接,外连接,子查询)


    用两个表(a_table、b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接、外连接( 左(外)连接、右(外)连接、全(外)连接)。

    MySQL版本:Server version: 5.6.31 MySQL Community Server (GPL)

    数据库表:a_table、b_table

    主题:内连接、左连接(左外连接)、右连接(右外连接)、全连接(全外连接)

    表为:

       

    内连接:

    1. 交叉连接查询(基本不会使用-得到的是两个表的乘积) (这种查询时候会产生笛卡尔积)
    语法: select * from A,B;
    2. 内连接查询(使用的关键字 inner join -- inner可以省略)
    隐式内连接: select * from A,B where 条件;
    显示内连接: select * from A inner join B on 条件;

    执行语句为:select * from a_table a inner join b_table bon a.a_id = b.b_id;

    总结:当且仅当两个表中的数据都符合on后面的条件的时候,才会被select出来.

    左连接:

    外连接查询(使用的关键字 outer join -- outer可以省略)
    左外连接:left outer join

    语句:select * from a_table a left join b_table bon a.a_id = b.b_id;
    执行结果:

    总结:在查询的时候,以left join 这个关键字左边的表为主表,会将这个表中的数据全部查询出来,如果右表中没有这条数据,则用NULL字段表示.

    右外连接:

    右外连接:right outer join
    select * from A right outer join B on 条件;

    语句:select * from a_table a right outer join b_table b on a.a_id = b.b_id;
    执行结果:

    总结:在查询的时候,会以right join 这个关键字右边的表为主,然后将符合条件的查询出来,左表中没有的字段,使用NULL进行补充

    全连接(全外连接)

    MySQL目前不支持此种方式,可以用其他方式替代解决。

    子查询:

    子查询:一条select语句结果作为另一条select语法一部分(查询条件,查询结果,表等)。

    语法: select ....查询字段 ... from ... 表.. where ... 查询条件

    #3 子查询, 查询“化妆品”分类上架商品详情
    #隐式内连接
    SELECT p.*
    FROM products p , category c
    WHERE p.category_id=c.cid AND c.cname = '化妆品';
    #子查询
    ##作为查询条件
    SELECT *
    FROM products p
    WHERE p.category_id =
    (
    SELECT c.cid FROM category c
    WHERE c.cname='化妆品'
    );
    ##作为另一张表
    SELECT *
    FROM products p ,
    (SELECT * FROM category WHERE cname='化妆品') c
    WHERE p.category_id = c.cid;

    查询结果:

    总结:可以将一条查询语句作为另外一个查询语句的条件和表,再次进行查询.

  • 相关阅读:
    sqlserver 跟踪标志
    解决ORA-00338,ORA-00312
    oracle SQL性能分析
    高潜力人士和员工
    pymysqlreplication
    Python3操作Excel(写入)
    CentOS7.4 源码安装MySQL8.0
    MySql 时间操作实例
    python+eclipse+pydev开发环境搭建
    MySQL表结构同步工具 mysql-schema-sync
  • 原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/11130037.html
Copyright © 2020-2023  润新知