gpt4 book ai didi

sql - SQL 结果什么时候可以包含重复项?

转载 作者:行者123 更新时间:2023-12-04 21:42:54 25 4
gpt4 key购买 nike

我只是在学习关系数据库,并被告知他们不允许重复条目。起初我不相信这一点,因为我编写了返回重复结果的 SQL 查询。系统不会存储在一种关系中相同的集合,对吗?我的意思是,如果您有书籍和作者的关系并且只选择选择作者,那么如果同一作者写了不同的书(例如 select author from Books ),则可能会出现重复。另外,如果您使用 join 那么您可以获得重复的结果,对吗?还有其他场景吗?

基本上,当人们说 rmdbs 没有重复项时,他们只是指信息的存储方式(在一张表中),对吗?

最佳答案

关系数据库仅由关系变量(关系“表”)组成,根据定义,关系变量总是由唯一的元组(“行”)组成。关系数据库管理系统使用基于 Codd 关系代数的查询语言,该语言同样不会在结果中生成重复项,因为关系代数中的每个结果也是一个关系,因此由唯一的元组组成。

您之所以会感到困惑,是因为您假设 SQL 是一种适当的关系语言,而 SQL DBMS 是关系语言。不是,他们也不是。当您开始将 SQL 与其在关系世界中的近似等价物进行比较时,事情就会变得棘手。您的 SQL 查询:

SELECT author FROM Books;

可能会返回重复的行,但明显相似的关系查询:
π author (Books)

将不会。关系查询更像是以下 SQL:
SELECT DISTINCT author FROM Books;

在 SQL 中你必须非常小心,以避免在你不想要或不期望的地方得到重复。这是一个即使是有经验的 SQL 用户也会绊倒的问题。

关于sql - SQL 结果什么时候可以包含重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12812365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com