zoukankan      html  css  js  c++  java
  • MySQL 多表查询

    多表查询的分类

    • 内连接
      • 隐式内连接
      • 显式内连接
    • 外连接
      • 左外连接
      • 右外连接

    内连接

    用左边表的记录去匹配右边表的记录,如果符合条件的则显示。如:从表.外键=主表.主键

     

    隐式内连接

    隐式内连接:看不到 JOIN 关键字,条件使用 WHERE 指定

     SELECT 字段名 FROM 左表, 右表 WHERE 条件

    如:

    创建一个学生个人信息表

    CREATE TABLE students(
        Id INT(30),
        Name VARCHAR(10),
        Age INT(4),
        Gender VARCHAR(25),
        PRIMARY KEY(Id)
    );

    创建一个学习成绩表

    CREATE TABLE course(
        Id INT(30),
         Java INT(5),
         Python INT(5),
         MySQL INT(5),
         Hadoop INT(5),
         C INT(5),
         PHP INT(5),
         Linux INT(5),
         English INT(5),
         Math INT(5),
         CONSTRAINT id_course FOREIGN KEY(Id) REFERENCES students(Id)
    );

    学习成绩表的外键连接学生个人信息表的主键。这个时候,如果我们想要查询学生的Java成绩,

    SELECT name, Java FROM students, course WHERE course.Id = students.Id;

    显式内连接

    显示内连接:使用 INNER JOIN ... ON 语句, 可以省略 INNER

    SELECT 字段名 FROM 左表 [INNER] JOIN 右表 ON 条件

    如:

    还是上面创建的students表和course表

    SELECT * FROM students INNER JOIN course c ON students.Id = c.Id;

    查询students表的所有信息,按ID插入course表的数据,一并查询出来。

    外连接

    左外连接

    左外连接:使用 LEFT OUTER JOIN ... ON,OUTER 可以省略

    SELECT 字段名 FROM 左表 LEFT [OUTER] JOIN 右表 ON 条件

    用左边表的记录去匹配右边表的记录,如果符合条件的则显示;否则,显示 NULL 。可以理解为:在内连接的基础上保证左表的数据全部显示。

     

    右外连接

    右外连接:使用 RIGHT OUTER JOIN ... ON,OUTER 可以省略

    SELECT 字段名 FROM 左表 RIGHT [OUTER] JOIN 右表 ON 条件

    用右边表的记录去匹配左边表的记录,如果符合条件的则显示;否则,显示 NULL。可以理解为:在内连接的基础上保证右表的数据全部显示。

     

     

  • 相关阅读:
    jQuery下拉框级联实现
    js获取当前月的天数
    jQuery获取select选中值的文本
    JSTL常用代码总结
    matplotlib.basemap安装失败的解决
    获取MODIS MCD19A2气溶胶数据(AOD)并用GDAL转换投影坐标
    keras 显示错误 无法保存model图片_ImportError: Failed to import pydot.
    ArcGIS处理每个栅格图行列号一致且上下对齐
    北京DEM数据下载
    最新 夜光遥感影像VIIRS&DMSP下载总结
  • 原文地址:https://www.cnblogs.com/liyihua/p/12315445.html
Copyright © 2011-2022 走看看