MySQL 多表查询

多表查询的分类

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

 

 

内链接

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

 

隐式内链接

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

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

如:spa

建立一个学生我的信息表code

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

建立一个学习成绩表blog

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成绩,class

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表的数据,一并查询出来。di

 

外链接

左外链接

左外链接:使用 LEFT OUTER JOIN ... ON,OUTER 能够省略

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

用左边表的记录去匹配右边表的记录,若是符合条件的则显示;不然,显示 NULL 。能够理解为:在内链接的基础上保证左表的数据所有显示。

 

右外链接

右外链接:使用 RIGHT OUTER JOIN ... ON,OUTER 能够省略

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

用右边表的记录去匹配左边表的记录,若是符合条件的则显示;不然,显示 NULL。能够理解为:在内链接的基础上保证右表的数据所有显示。

相关文章
相关标签/搜索