zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    js自动小轮播
    js字符串
    工资
    可是姑娘,你为什么要编程呢?
    程序猿媳妇儿注意事项
    js勾选时显示相应内容
    js点击显示隐藏
    js选项卡
    js数组
    js旋转V字俄罗斯方块
  • 原文地址:https://www.cnblogs.com/yif930916/p/14814454.html
Copyright © 2011-2022 走看看