📜  SQL 查询以使用联接和何处从表中选择数据(1)

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

SQL 查询中的联接和从表选择数据

在 SQL 数据库中,一个表中的数据通常与其他表中的数据有关联。为了处理这些关联,我们需要使用联接(join)操作,从两个或多个表中选择需要的数据,并按需要将它们合并在一起。

联接

SQL 中使用以下关键字来执行不同类型的联接操作:

  • INNER JOIN: 只返回匹配的行。
  • LEFT JOIN: 返回左表中的所有行以及与右表匹配的行。
  • RIGHT JOIN: 返回右表中的所有行以及与左表匹配的行。
  • FULL OUTER JOIN: 返回左表和右表中的所有行,无论是否匹配。
INNER JOIN

INNER JOIN 返回两个表中的匹配行。使用 INNER JOIN 时,查询可以按以下语法书写:

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

在该语法中,我们使用表格 table1table2,其中 table1.column_nametable2.column_name 是连接条件,指的是两个表格中用于匹配的列。

LEFT JOIN

LEFT JOIN 返回左表中的所有行以及与右表中匹配的行。该操作使用以下语法:

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

在该语法中,除了使用 INNER JOIN 中相同的方法之外,我们还使用了 LEFT JOIN 语句,以保留左表中的所有行。

  • 如果右表中没有匹配的行,则我们用 NULL 值填充。
RIGHT JOIN

RIGHT JOIN 与 LEFT JOIN 相反返回右表中的所有行,并将它们与左表中的所有匹配行相连。该操作使用以下语法:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
  • 如果左表中没有匹配的行,则我们用 NULL 值填充。
FULL OUTER JOIN

FULL OUTER JOIN 连接了左表和右表,并返回所有行,不论它们是否有匹配行。该操作使用以下语法:

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name;

在这个查询中,我们可以找到所有不匹配的行并且用 NULL 值填充。

WHERE 语句选择数据

WHERE 语句被用来过滤结果集中的数据。根据指定条件,它可以选择想要的数据,其语法为:

SELECT column_name(s)
FROM table_name
WHERE condition;

可以使用以下比较符号:

| 比较符号 | 描述 | | --- | --- | | = | 等于 | | <> | 不等于 | | > | 大于 | | < | 小于 | | >= | 大于等于 | | <= | 小于等于 | | LIKE | 模糊搜索 | | IN | 指定多个可能值 |

以下是使用 WHERE 语句选择数据的示例:

SELECT *
FROM Customers
WHERE Country = 'Germany';

在这个例子中,我们使用 WHERE 语句选择来自德国的顾客。