📜  sql 连接 (1)

📅  最后修改于: 2023-12-03 15:20:17.688000             🧑  作者: Mango

SQL 连接

SQL 连接是在两个或多个表之间创建关联的行为。这有助于有效地管理数据并提高查询性能。在 SQL 中,有几个不同类型的连接,包括内部连接、左连接、右连接和全连接。

内部连接

内部连接是指只选出在两个表中都存在的记录。它是最常用的连接类型之一。下面是一些内部连接的示例:

-- 连接两个表,按照 email 地址匹配
SELECT *
FROM users
INNER JOIN orders
ON users.email = orders.email;

-- 连接三个表,按照 product_id 匹配
SELECT *
FROM orders
INNER JOIN order_details
ON orders.order_id = order_details.order_id
INNER JOIN products
ON order_details.product_id = products.product_id;
左连接

左连接是指选出左表中的所有记录,以及右表中与之匹配的记录。如果右表中没有匹配的记录,则显示空值。下面是一些左连接的示例:

-- 连接两个表,只显示左表中的记录
SELECT *
FROM users
LEFT JOIN orders
ON users.email = orders.email;

-- 连接三个表,只显示左表中的记录
SELECT *
FROM orders
LEFT JOIN order_details
ON orders.order_id = order_details.order_id
LEFT JOIN products
ON order_details.product_id = products.product_id;
右连接

右连接与左连接相同,但是只显示右表中的记录和左表中与之匹配的记录。如果左表中没有匹配的记录,则显示空值。下面是一些右连接的示例:

-- 连接两个表,只显示右表中的记录
SELECT *
FROM users
RIGHT JOIN orders
ON users.email = orders.email;

-- 连接三个表,只显示右表中的记录
SELECT *
FROM orders
RIGHT JOIN order_details
ON orders.order_id = order_details.order_id
RIGHT JOIN products
ON order_details.product_id = products.product_id;
全连接

全连接是指选出左表和右表中的所有记录,如果没有匹配的记录则显示空值。下面是一些全连接的示例:

-- 连接两个表,显示全部记录
SELECT *
FROM users
FULL OUTER JOIN orders
ON users.email = orders.email;

-- 连接三个表,显示全部记录
SELECT *
FROM orders
FULL OUTER JOIN order_details
ON orders.order_id = order_details.order_id
FULL OUTER JOIN products
ON order_details.product_id = products.product_id;

以上是 SQL 连接的基本知识。根据数据的实际情况和需求,可以灵活地选择合适的连接类型。