PostgreSQL 非空约束2025年3月17日 | 阅读 8 分钟 在本节中,我们将了解 PostgreSQL NOT NULL 约束 的工作原理,该约束用于确保列的值不为 null。 PostgreSQL NOT NULL 约束的示例、如何声明 PostgreSQL NOT NULL 约束以及向现有列添加 NOT NULL 约束。 在理解 PostgreSQL NOT NULL 约束的概念之前,我们将先学习 Null。 什么是 NULL?NULL 用于表示未知或缺失的信息。根据数据库理论,它不等于空字符串或数字零。 例如,如果我们想在一个特定表中插入客户的手机号码,我们可以询问他的手机号码。但如果我们不知道客户是否有手机号码,我们可以在手机号码列中插入 NULL。 在这种情况下,NULL 表示在记录时手机号码是未知的。 NULL 非常重要,因为它不等于任何东西,甚至不等于它本身,正如我们在下面的表达式中可以看到的 上述语句将返回 NULL,因为两个未知值不相等是有意义的。 如果我们想检查值是否为 NULL,我们可以使用 IS NULL 布尔运算符。例如,如果手机号码列的值为 NULL,则以下语句返回 true。 注意
什么是 PostgreSQL 非空约束?在 PostgreSQL 中,not-null 约束 是一列,默认情况下它可以包含 Null 值。如果我们不希望某一列出现 NULL 值,我们需要在该列状态上定义这样的约束,并且 NULL 不再能被该特定列接受。 not null 约束始终作为列约束创建,它代表未知数据,但这并不意味着数据应该是 null。 换句话说,我们可以说 PostgreSQL not-null 约束 用于确保列不能包含任何 null 值。 它是一个列约束,不能用作表约束,这意味着在创建not-null 约束时不能指定名称。我们可以将 not-null 约束直接放在列的数据类型之后。 PostgreSQL not-null 约束的语法 在下面的插图中,我们将使用 NOT NULL 约束来检查列是否可以接受 NULL 值。 注意:如果一列包含 NOT NULL 约束,或者我们尝试在列中插入或更新 NULL,则会产生错误。PostgreSQL NOT NULL 约束示例为了理解 PostgreSQL not null 约束 的工作原理,我们将看下面的示例,该示例描述了 NOT NULL 约束 在 PostgreSQL 中是如何使用的。 在下面的命令中,我们将使用 CREATE 命令创建一个名为 Bills 的新表,并使用 INSERT 命令 插入一些值。 要使用包含 Bill_id、Item_id、Quantity、Actual_price 列的 CREATE 命令,在 Javatpoint 数据库中创建Bills。 输出 执行上述命令后,我们将收到以下消息:Bills 表已成功创建到 Jtp 数据库中。 ![]() 在上面的示例中,我们在 Item_id 和 Quantity 列的数据类型之后使用了 NOT NULL 关键字来表示 NOT NULL 约束。 注意
使用 ALTER TABLE 命令向现有列添加 PostgreSQL NOT NULL 约束在 PostgreSQL 中,我们可以使用 ALTER TABLE 命令将 NOT NULL 约束添加到现有表的列中。 使用 ALTER TABLE 命令添加 not null 约束的语法 以下 ALTER TABLE 命令的插图用于将 NOT NULL 约束添加到现有表中。 或 如果我们想将多个 NOT NULL 约束添加到多个列,我们可以使用以下语法。 使用 ALTER TABLE 命令的 PostgreSQL Not Null 约束示例为了理解 PostgreSQL NOT NULL 约束的工作原理,我们将看下面的示例,该示例描述了如何在 PostgreSQL 中通过 ALTER table 命令添加 NOT NULL 约束。 在下面的示例中,我们将创建一个名为 Orders 的新表到 Jtp 数据库中。 在创建 Orders 表之前,如果 Jtp 数据库中存在类似的表,我们将使用 DROP TABLE 命令。 输出 执行上述命令后,我们将收到以下窗口消息,显示 Orders 表已成功删除。 ![]() 一旦之前创建的 Orders 表被删除,我们将创建一个新的 Orders 表,其中包含 ID、Specification、Raw_material_id、Quantity、Begin_id 和 End_id 等列。 输出 实施上述命令后,我们将收到以下消息:Orders 表已成功创建到 Jtp 数据库中。 ![]() 一旦 Orders 表成功创建,我们将使用 INSERT 命令向其中插入几条记录,如下面的命令所示。 输出 执行上述命令后,我们将收到以下消息窗口,显示一个值已成功插入到 Orders 表中。 ![]() 之后,我们可以将非空约束添加到 Quantity 列,以确保 Quantity 列即使已经包含一些数据,也不会是 null。 要将NOT NULL 约束添加到包含 NULL 值的列中,我们将遵循以下步骤。 步骤 1 首先,我们需要将NULL 更新为 NOT-NULL,如下面的语句所示。 输出 执行上述命令后,我们将收到下面的消息窗口,显示Orders表已成功更新。 ![]() 如上截图所示,Quantity 列中的值已更新为一。 步骤 2 现在,我们将使用 ALTER table 命令将NOT NULL 约束添加到 Quantity 列,如下面的语句所示。 输出 执行上述命令后,我们将收到以下消息窗口,显示Orders表已成功修改。 ![]() 步骤 3 之后,我们将使用以下命令更新 Raw_material_id、Begin_date 和 End_date 列的非空约束。 输出 执行上述命令后,我们将收到以下消息窗口,显示Orders表已成功更新。 ![]() 步骤 4 之后,我们将将非空约束添加到各种列,如下面的语句所示。 输出 执行上述命令后,我们将检索到以下消息窗口,显示特定表已成功更改。 ![]() 步骤 5 最后,我们将尝试将 Quantity 列中的值修改为 NULL,如下面的语句所示。 输出 执行上述命令后,PostgreSQL 发出了以下错误消息。 ERROR: null value in column "quantity" violates not-null constraint DETAIL: Failing row contains (1, Make for TCS, PQR, null, 2013-04-08, 2013-04-08)。 ![]() NOT NULL 约束的不同情况除了 PostgreSQL Not Null Constraint,我们还可以使用 CHECK 约束来强制列接受 NULL 值,而 NOT NULL 约束等同于下面的 CHECK 约束。 让我们看一个示例,以了解 PostgreSQL Not Null 约束的特殊情况。 假设我们希望 Buyer 表的 Login_name 或 Phone_number 列非空或为空。在这种情况下,我们可以使用 CHECK 约束。 为此,我们将首先使用 Create Table 命令创建 Buyer 表,如下面的命令所示。 输出 实施上述命令后,我们将收到以下消息窗口,显示Buyer表已成功创建到 jtp 数据库中。 ![]() 成功创建名为 Buyer 的新表后,我们将使用 INSERT 命令向其中输入一些值。 输出 实施上述命令后,我们将收到以下消息窗口,显示四个值已成功插入到 Buyer 表中。 ![]() 但是下面的命令将不起作用,因为它会中断 CHECK 约束。 输出 执行上述命令后,PostgreSQL 将抛出以下错误。 ERROR: new row for relation "buyer" violates check constraint "login_name_phone_number_notnull" DETAIL: Failing row contains (5, null, null,). ![]() 概述在 PostgreSQL Not Null Constraint 部分,我们学习了以下主题。
下一个主题PostgreSQL 函数 |
我们请求您订阅我们的新闻通讯以获取最新更新。