📜  SQL 自然连接(1)

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

SQL 自然连接

SQL自然连接是一种Join操作,它会返回两个表中的共同行,而不需要指定一个Join条件。

语法
SELECT column_name(s)
FROM table1
NATURAL JOIN table2;

其中:

  • SELECT:选择要查询的列名
  • table1:要连接的第一个表的名称
  • NATURAL JOIN:执行自然连接
  • table2:要连接的第二个表的名称
  • column_name(s):要选择的列名
示例

现在有两个表:

  • 学生表(students)

id | name | age :-:|:------:|:--: 1 | Alice | 20 2 | Bob | 21 3 | Charlie| 19

  • 成绩表(scores)

id | subject | score :-:|:-------:|:----: 1 | Math | 85 1 | English | 92 2 | Math | 78 3 | Art | 95

可以通过以下查询获得具有共同ID的学生和他们的成绩:

SELECT *
FROM students
NATURAL JOIN scores;

输出结果:

id | name | age | subject | score :-:|:------:|:--:|:-------:|:----: 1 | Alice | 20 | Math | 85 1 | Alice | 20 | English | 92

这里可以看到,ID为1的Alice有数学(85)和英语(92)的成绩。

注意事项
  • 自然连接不需要显式指定Join条件,因此很容易使用。但是它有时无法为查询提供足够的控制,因此要根据具体情况而定。
  • 如果两个表具有相同的列名称,并且在自然连接中这些列匹配,则它们将被视为一个,并且只在连接结果中出现一次。
  • 自然连接将返回具有完全相同值的行。这意味着如果两个表中有ID为1的行,则这些行将被匹配并返回到结果集中。
  • SQL自然连接与INNER JOIN相似,但INNER JOIN要求明确指定连接条件。