• mysql数据库(1)--多表查询


    1、笛卡尔乘积

    select * from table1,table2

    说明:

    如果table1为m行n列、table2为x行y列,根据笛卡尔乘积的特点,此时的查询结果的结构为:(m*x)行(n+y)列

    2、内连接(inner join)

    内连接查询又称为等值查询,其主要基于待连接的两表之间某个字段的取值的的取值相等。

    2.1、内连接的查询结构如下:

    1 select column_list
    2 from t1
    3 inner join t2
    4 on join_condition

    2.2、内连接查询示意图--用于查询满足条件的公共部分

     2.3、关于内连接查询的几点说明

    (1)将待连接的table进行连接之前,需要根据ljoin_condition进行匹配,如果匹配成功就会成为new table中的一行;

    (2)inner join查询的结果也可以通过select * from t1,t1 + where子句的方式来实现,但是这种查询的效率相较于inner join要低,因为后者是先通过笛卡尔的方式形成表格后再进行筛选的。

    3、外连接

    3.1、左外连接(left join)

    以left join左边的表格为基准,按照过滤条件查找left join右边表中的记录。如果匹配到,那么就组合成一行,并显示结果;如果未匹配到,那么只显示左边表的字段,右边表中不存在的字段使用null表示。

    (1)左外连接查询结构如下:

    1 select column_list
    2 from t1        #  其中t1为主表
    3 left join t2
    4 on join_condition

    (2)左外连接查询示意图--以t1作为主表进行查询

    3.2、右外连接(right join)

    右外连接的作用域左外连接的作用相反,右外连接是以右表作为基准,按照过滤条件查找right join左边表中的记录。如果匹配到,那么就组合成一行,并显示结果;如果未匹配到,那么只显示右边表的字段,左边表中不存在的字段使用null表示。

    (1)右外连接查询结构如下:

    1 select column_list
    2 from t1
    3 right join t2   # t2为主表
    4 on join_condition

    (2)右外连接查询示意图--以t2作为主表进行查询

    4、多表联合查询性能问题

    mysql在运行时,尽管可以关联多个表进行查询,但是这种处理方式比较消耗资源,因此在进行查询时,尽量不要关联不必要的sheet。表格关联越多,性能下降越快。

    5、查询练习

    https://www.nowcoder.com/ta/sql

  • 相关阅读:
    docker mysql 主从配置
    在docker上安装运行mysql实例
    mongodb分片集搭建
    mongodb片健的选取及更改
    MySQL 5.7的多源复制
    percona-toolkit使用教程
    Python基础操作-集合
    nginx location 在配置中的优先级
    OpenResty知识汇集
    开源分布式日志框架
  • 原文地址:https://www.cnblogs.com/yif930916/p/14814454.html
Copyright © 2020-2023  润新知