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

  • 相关阅读:
    写了一个好玩的小软件, 监视鼠标以及键盘的动作, 全局钩子. HowTired
    2005的五一计划
    给你的爱一直很安静
    沉重悼念蓝色理想经典论坛原Flash版主[手工感情][Handmade]
    一不小心就成就了一段姻缘,哈哈
    基于dotnet的代码统计工具新版发布
    四天三夜 刻骨铭心 颠峰战将 永不言败
    怎么回事?现在博客园极不稳定
    屋漏偏逢连夜雨, 船迟又遇打头风
    适用于IE浏览器及非IE浏览器的xmlhttp脚本
  • 原文地址:https://www.cnblogs.com/yif930916/p/14814454.html
Copyright © 2011-2022 走看看