sách gpt4 ai đã đi

null - Biểu thức đại số quan hệ cho "là null"

In lại 作者:行者123 更新时间:2023-12-02 02:18:26 30 4
mua khóa gpt4 Nike

下面查询的关系代数表达式是什么?我找不到“Is Null”的表达式。

SELECT reader.name
FROM reader LEFT JOIN book_borrow ON reader.cardid = book_borrow.cardid
WHERE book_borrow.cardid Is Null;

1 Câu trả lời

这项任务需要一点创造力,而不是逐字翻译。

此查询中发生了什么?首先,我们将 book_borrow 加入 reader 中。记住definition :即使 ON 子句与最右表中的任何行都不匹配,连接仍将返回一行,使其在右表的字段中包含 NULL。我们的表如下所示:

reader.name | reader.cardid | book_borrow.cardid | book_borrow.book_id
Alice | 1 | 1 | 1
Alice | 1 | 1 | 5
Bob | 2 | 2 | 5
Charlie | 3 | NULL | NULL

我们可以看到 Alice 借了两本书(id 1 和 5),Bob 借了一本(id 5),而 Charlie 在他的 book_borrow 字段中得到了 NULL,因为他没有借过任何书。然后,查询继续仅获取 book_borrow.cardid 为 NULL 的行,因此查询只是说:“获取所有未借过任何书籍的人”。

像这样表述任务,编写关系代数表达式很容易:

  • 让我们自然地连接 reader 和 book_borrow,这将产生不需要的行,即借阅任何书籍的人的姓名。
  • 然后从所有人的集合中减去这些人,结果就是没有借过书的人的集合。

在这里,释放我的 latex :

π(name){ π(name, carddid){Reader} - π(name, cardid){Reader join Book_borrow} }

这个故事的寓意:尽管,正如欧文指出的,关系代数的最纯粹形式中不存在零(因为关系代数建立在一阶逻辑之上),但我们并不总是需要它来表达缺乏某物;左连接可以用基本运算符表示;左连接的发明是为了提高计算效率:您可以轻松地看到采用左连接并选择空值是如何更加实用的。

关于null - "is null"的关系代数表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20481363/

30 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com