在SQL中,如果我想知道一个表达式是否为NULL,我可以使用is null
。
但我不明白我如何在关系代数中表达is null
。
我可以使用δ Field_Name=NULL(Table_Name)
吗?
关系代数中没有 NULL。在 SQL 中,运算符在语法和语义上特别处理值 NULL 与其他值不同,通常在比较两个值时返回 NULL,当其中一个值为 NULL 时。所以 WHERE 中的 "=" 不是相等的,它是一个像相等一样的运算符,对 NULL 的作用不同。所以SQL WHERE与代数RESTRICT不是同一个运算符。
如果有人想将 NULL 与关系代数一起使用来设置或查询关系变量,您必须直接了解他们在说"AND"和"="之类的运算符时的意思(还有关系运算符,如 RESTRICT 和 PROJECT(,以及 NULL 是否是他们专门处理的值。
另请参阅建模和归一化时如何处理空值?。