一、内连接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 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;
五、自连接SELF JOIN
SELF JOIN是一种特殊的JOIN操作,用于将表与其自身连接起来。通常,在一个表中,我们有多个记录和字段,有时需要将表按照特定条件连接自身,以便获得更多数据和信息。SELF JOIN允许我们通过将表的副本与原表进行连接来实现这个目的,从而在同一个表中进行数据比较和分析。
六、交叉连接CROSS JOIN
CROSS JOIN 是 SQL 中的一种连接操作,主要有以下特点:
CROSS JOIN 会产生两个表的笛卡尔积(Cartesian product),即将第一个表的每一行与第二个表的每一行进行组合。
结果集的行数等于两个表行数的乘积。例如,如果表 A 有 10 行,表 B 有 5 行,CROSS JOIN 的结果将有 50行。
使用 CROSS JOIN 时需要注意性能问题,因为它可能会产生非常大的结果集。
大多数关系型数据库支持 CROSS JOIN,包括 Oracle、MySQL、PostgreSQL 和 SQLite。
SELECT * FROM productCROSS JOIN product3;
发表评论 取消回复