SQL语句入门:多表关联查询

云游道人 2025-02-02 470 阅读 0评论

一、内连接INNER JOIN

  INNER JOIN是一种连接类型,用于将两个或多个表的行组合在一起,但仅限于那些在所有表中都具有匹配值的行。换句话说,只有当两个表在某个字段(通常是主键和外键)上具有相同的值时,才会返回这些表的记录。

2个表的内连接示例:

SELECT product.product_id,product.product_name,product.product_type FROM productINNER JOIN product2 ON product.product_id = product2.product_id;

5个表的内连接示例:

SELECT product.product_id, product.product_name, product.product_typeFROM productINNER JOIN product2 ON product.product_id = product2.product_idINNER JOIN product3 ON product2.product_id = product3.product_idINNER JOIN product4 ON product3.product_id = product4.product_idINNER JOIN product5 ON product4.product_id = product5.product_id


二、左连接LEFT JOIN

    在SQL中,左连接(LEFT JOIN)是一种连接类型,用于从两个表中返回匹配的行。当使用左连接时,结果集将包含左表(第一个表)的所有记录,即使右表(第二个表)中没有匹配的记录。对于右表中没有匹配的记录,结果集中的右表字段将显示为NULL。

SELECT product.product_id,product.product_name,product.product_type FROM productLEFT JOIN product3 ON product.product_id = product3.product_id;


三、右连接RIGHT JOIN

    在SQL中,右连接(RIGHT JOIN)是一种连接类型,它与左连接(LEFT JOIN)相似,但方向相反。右连接返回右表(第二个表)的所有记录,即使左表(第一个表)中没有匹配的记录。如果左表中没有匹配的记录,则结果集中的左表字段将显示为NULL。

SELECT product.product_id,product.product_name,product.product_type FROM productRIGHT JOIN product3 ON product.product_id = product3.product_id;

四、全连接FULL OUTER  JOIN

MySQL 不支持 FULL OUTER JOIN 语法

支持 FULL OUTER JOIN 的数据库系统:PostgreSQL 或 OracleMySQL 支持的连接类型包括:

  • INNER JOIN

  • LEFT JOIN (或 LEFT OUTER JOIN)

  • RIGHT JOIN (或 RIGHT OUTER JOIN)

  • CROSS JOIN

    在 MySQL 中实现全连接FULL OUTER JOIN 的效果,需要结合 LEFT JOIN 和 RIGHT JOIN 的组合,再加上 UNION 操作。以下为示例语句:

SELECT product.product_id, product.product_name, product.product_typeFROM productLEFT JOIN product3 ON product.product_id = product3.product_id
UNION
SELECT product3.product_id, product.product_name, product.product_typeFROM product3LEFT JOIN product ON product3.product_id = product.product_idWHERE product.product_id IS NULL;五、自连接SELF JOIN

    SELF JOIN是一种特殊的JOIN操作,用于将表与其自身连接起来。通常,在一个表中,我们有多个记录和字段,有时需要将表按照特定条件连接自身,以便获得更多数据和信息。SELF JOIN允许我们通过将表的副本与原表进行连接来实现这个目的,从而在同一个表中进行数据比较和分析。


六、交叉连接CROSS JOIN

CROSS JOIN 是 SQL 中的一种连接操作,主要有以下特点:

  1. CROSS JOIN 会产生两个表的笛卡尔积(Cartesian product),即将第一个表的每一行与第二个表的每一行进行组合。

  2. 结果集的行数等于两个表行数的乘积。例如,如果表 A 有 10 行,表 B 有 5 行,CROSS JOIN 的结果将有 50行。

  3. 使用 CROSS JOIN 时需要注意性能问题,因为它可能会产生非常大的结果集。

  4. 大多数关系型数据库支持 CROSS JOIN,包括 Oracle、MySQL、PostgreSQL 和 SQLite。

SELECT * FROM productCROSS JOIN product3;

喜欢就支持以下吧
点赞 0

发表评论

快捷回复: 表情:
aoman baiyan bishi bizui cahan ciya dabing daku deyi doge fadai fanu fendou ganga guzhang haixiu hanxiao zuohengheng zhuakuang zhouma zhemo zhayanjian zaijian yun youhengheng yiwen yinxian xu xieyanxiao xiaoku xiaojiujie xia wunai wozuimei weixiao weiqu tuosai tu touxiao tiaopi shui se saorao qiudale qinqin qiaoda piezui penxue nanguo liulei liuhan lenghan leiben kun kuaikule ku koubi kelian keai jingya jingxi jingkong jie huaixiao haqian aini OK qiang quantou shengli woshou gouyin baoquan aixin bangbangtang xiaoyanger xigua hexie pijiu lanqiu juhua hecai haobang caidao baojin chi dan kulou shuai shouqiang yangtuo youling
提交
评论列表 (有 0 条评论, 470人围观)

最近发表

热门文章

最新留言

热门推荐

标签列表