PostgreSQL 非空约束

在本节中,我们将了解PostgreSQL NOT NULL 约束的工作原理,该约束用于确保列的值不为空。

PostgreSQL NOT NULL 约束示例,如何声明 PostgreSQL NOT NULL 约束,以及向现有列添加 NOT NULL 约束。

在了解 PostgreSQL NOT NULL 约束的概念之前,我们将了解 Null。

什么是Not Null空值?

NULL用于表示未知或信息缺失。而且它并不类似于数据库理论中的空字符串或数字零。

例如,如果我们想将客户的手机号码插入到特定的表中,我们可以请求他/她的手机号码。但是如果我们不知道客户是否有手机号码,我们可以在手机号码列中插入 NULL 。

在这种情况下,NULL 指定移动号码在记录时未知。

NULL 非常重要,因为它不等同于任何东西,甚至不等同于它自己,正如我们可以在下面的表达式中观察到的那样:

NULL = NULL 

上面的语句将返回NULL,因为两个未识别的值不应该相等是有道理的。

如果我们想检查值是否为 NULL,我们可以使用IS NULL布尔运算符。例如,如果手机号码列的值为NULL,则以下语句返回 true 。

Mobile_number IS NULL

注意事项:

  • IS NOT NULL运算符与IS NULL的输出相矛盾
  • 我们不应该使用 (=)等于运算符来比较值与NULL,因为它总是返回NULL。

什么是 PostgreSQL 非空约束?

PostgreSQL中,非空约束是一个列,默认可以容纳Null值。如果我们不希望某个列具有 NULL 值,我们需要对此列状态解释此类约束,并且 NULL 现在对于该特定列来说是不可接受的。

not null 约束总是创建为列约束,它表示未知数据,但并不意味着数据应该为null。

换句话说,我们可以说PostgreSQL 的 not-null 约束用于确保列不能有任何空值。

并且它是一个不能用作表约束的列约束,这意味着不能指定名称来创建非空约束。我们可以将非空约束直接放在列的数据类型之后。

PostgreSQL 非空约束的语法

在下图中,我们将使用 NOT NULL 约束来检查列是否可以接受 NULL 值:

CREATE TABLE table_name(  
   ...  
 column_name data_type NOT NULL,  
   ...  
);  

PostgreSQL NOT NULL 约束示例

要了解PostgreSQL 非空约束的工作原理,我们将看到下面的示例,它描述了如何在 PostgreSQL 中使用NOT NULL 约束。

在下面的命令中,我们将使用CREATE命令的帮助创建一个新表作为Bills,并使用INSERT命令插入一些值。

要将Bills创建到Javatpoint 数据库中,我们将使用包含各种列的CREATE命令,例如Bill_id、Item_id、Quantity、Actual_price列。

CREATE TABLE Bills(  
 Bill_id SERIAL PRIMARY KEY,  
  Item_id INT NOT NULL,  
  Quantity NUMERIC NOT NULL CHECK(Quantity > 0),  
  Actual_price NUMERIC CHECK(Actual_price > 0)   
);  

执行上述命令后,我们将得到以下消息:Bills表已成功创建到Jtp数据库中。

在上面的示例中,我们在Item_id和Quantity列的数据类型之后使用了NOT NULL关键字来表示NOT NULL约束。

注意事项:

  • 在 PostgreSQL 中,列可以包含各种约束,例如 CHECK、FOREIGN KEY、UNIQUE KEY 和NOT NULL,它们彼此相邻出现。
  • PostgreSQL 可以按任意顺序控制约束列表,因为约束的顺序并不重要。
  • 默认情况下,如果我们没有定义NOT NULL 或 NULL,它接受NULL 值

热门文章

优秀文章