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。可以理解为:在内连接的基础上保证右表的数据全部显示。

     

     

  • 相关阅读:
    0218 scikitlearn库之k*邻算法
    087 Python文件的两种用途
    0217 kd树
    Java8的十大新特性
    Java8的十大新特性
    Spring加载Bean的流程(源码分析)
    Spring加载Bean的流程(源码分析)
    线程池原理(JDK1.8)
    JS原生Ajax和jQuery的Ajax与代码示例ok
    JS原生Ajax和jQuery的Ajax与代码示例ok
  • 原文地址:https://www.cnblogs.com/liyihua/p/12315445.html
Copyright © 2011-2022 走看看