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

要教会 阅读:945 2025-02-20 09:36:10 评论:0

一、内连接INNER JOIN

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

2个表的内连接示例:

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

5个表的内连接示例:

SELECT product.product_id, product.product_name, product.product_type
FROM product
INNER JOIN product2 ON product.product_id = product2.product_id
INNER JOIN product3 ON product2.product_id = product3.product_id
INNER JOIN product4 ON product3.product_id = product4.product_id
INNER 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 product
LEFT 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 product
RIGHT 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_type
FROM product
LEFT JOIN product3 ON product.product_id = product3.product_id

UNION

SELECT product3.product_id, product.product_name, product.product_type
FROM product3
LEFT JOIN product ON product3.product_id = product.product_id
WHERE product.product_id IS NULL;
要教会.jpeg

五、自连接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 product
CROSS JOIN product3;

要教会.jpeg

本文为要教会原创,欢迎转载分享。转载时请务必在文章页面明显位置提供本文链接并注明出处。感谢您对知识的尊重和对本文的肯定!本文链接网址:https://yaojiaohui.net/gongjuruanjian/1172.html

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

搜索
排行榜
关注我们

扫一扫关注我们,了解最新精彩内容