Thumbnail: jekyll

    连接查询解惑笔记

on under jekyll
1 minute read

除了一般的select查询,还有内连接、外连接(左连接、右连接)和交叉连接的概念。

下面在mysql中建立test01表和test02表来说明这几种连接查询的区别。

表一: file-list 表二: file-list

###1. 内连接 内连接是查询几张表的公共部分的数据,如下图。 file-list 查询语句:

SELECT *
FROM TEST01 A
INNER JOIN TEST02 B
    ON A.AID = B.BCONTENT;

但是通常内连接都会采用更简单的方式:

SELECT *
FROM TEST01 A , TEST02 B
    ON A.AID = B.BCONTENT;

查询出来的结果是一样的,如下图: file-list 左连接查询中,如果将test01和test02两个表的位置互换,和不换的时候的右连接结果是一样的

###2. 外连接 外连接查询分为左外连接、右外连接和全外连接查询三种。 ####1. 左连接 左连接是以左表为基准,查询出来的结果显示左表的所有数据,右表没有符合条件数据显示null。

SELECT *
FROM TEST01 A
LEFT JOIN TEST02 B
    ON A.AID = B.BCONTENT;

可以这样理解,ON后边的条件只作用于右表。 查询结果为: file-list ####2. 右连接 右连接和左连接对应,是以右表为基准,查询出来的结果显示右表的所有数据,左表没有符合条件数据显示null。

SELECT *
FROM TEST01 A
RIGHT JOIN TEST02 B
    ON A.AID = B.BCONTENT;

ON后边的条件只作用于左表。 查询结果为: file-list ####3. 全连接 目前为止,MySQL还不支持全连接,但是可以通过union操作进行全连接。

SELECT *
FROM TEST01 A
LEFT JOIN TEST02 B
    ON A.AID = B.BCONTENT
UNION
SELECT *
FROM TEST01 A
RIGHT JOIN TEST02 B
    ON A.AID = B.BCONTENT;

查询结果如下图: file-list ###3. 交叉连接 交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。

学习笔记, SQL, 数据库
comments powered by Disqus