PostgreSQL教程

PostgreSQL 非空约束

在本节中,我们将了解 PostgreSQL NOT NULL约束的工作原理,该约束用于确保列的值不为空。
PostgreSQL NOT NULL约束的示例, 。
在理解PostgreSQL NOT NULL约束的概念之前,我们将学习Null。

什么是NULL?

NULL 用于表示未知或丢失的信息。而且它与数据库中的空字符串或数字零不同。
例如,,如果我们要插入客户的手机号码进入特定表格,我们可以要求他/她的手机号码。但是,如果我们不知道客户是否有手机号码,则可以在手机号码列中插入NULL。
在这种情况下,NULL表示
NULL非常重要,因为它不等于任何东西,甚至不等于任何东西,正如我们在下面的表达式中所观察到的:
NULL = null 
上面的语句将返回 NULL ,因为两个未标识的值不应相等。
我们可以使用 IS NULL 布尔运算符,如果我们想检查该值是否为NULL。 例如,如果手机号码列的值为NULL,则以下语句返回true。
Mobile_number IS null
注意:
IS NOT NULL 运算符与 IS NULL 的输出 我们永远不要使用(=)等于运算符将值与 NULL 进行比较,因为它总是返回 NULL 。

什么是PostgreSQL不是Null约束?

在 PostgreSQL中,非空约束是一列,默认情况下可以容纳 Null 值。如果我们不希望一列具有NULL值,则需要对此列状态进行解释,现在该特定列不接受NULL。
始终创建not null约束作为列约束,它表示未知数据,但这并不意味着数据应该为空。
换句话说,我们可以说 PostgreSQL非空约束用于确保列不能有任何空值。
它是列约束不能用作表约束,这意味着无法指定名称来创建非空约束。我们可以直接在列的数据类型之后放置非空约束。
PostgreSQL非空约束的语法
在下图中,我们将使用NOT NULL约束来检查列是否可以接受NULL值:
CREATE TABLE table_name(
   ...
 column_name data_type NOT null,
   ...
);
注意: 如果列包含NOT NULL约束,或者我们试图在该列中插入或更新NULL,则它将在输出中发出错误。

PostgreSQL NOT NULL约束示例

要了解 PostgreSQL not null约束的工作原理,下面的示例说明了如何在PostgreSQL中使用 NOT NULL约束。
在下面的命令中,我们将创建一个新表,作为 Bills 和创建命令的帮助,并使用 INSERT 命令。
要将 Bills 创建到 lidihuo数据库,我们将使用 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 数据库中。
PostgreSQL非空约束
在上面的示例中,我们在 Item_id 和 Quantity 列的数据类型之后使用了 NOT NULL 关键字来表示 NOT NULL 约束。
注意:
在PostgreSQL中,一列可以包含各种约束,例如CHECK,FOREIGN KEY,UNIQUE KEY和 NOT NULL ,它们紧挨着出现。 PostgreSQL可以按任何顺序控制约束列表,因为约束的顺序并不重要。 默认情况下,如果我们未定义 NOT NULL或NULL,它将接受 NULL值

使用ALTER TABLE命令向现有列添加PostgreSQL NOT NULL约束

在PostgreSQL中,我们可以添加 NOT NULL约束在 ALTER TABLE 命令的帮助下,将其移至现有表的列中。
使用ALTER table命令添加not null约束的语法
以下 ALTER TABLE 命令的图示用于添加现有表中的NOT NULL约束:
ALTER TABLE table_name
ALTER COLUMN column_name 
SET NOT null;
OR
如果我们想向各个列添加几个NOT NULL约束,则可以使用以下语法:
ALTER TABLE table_name
ALTER COLUMN column_name_1 SET NOT null,
ALTER COLUMN column_name_2 SET NOT null,
...;

使用ALTER TABLE命令的PostgreSQL Not Null约束示例

要了解 PostgreSQL NOT NULL约束的工作原理,,我们将看到以下示例,该示例描述了如何通过PostgreSQL中的 ALTER table 命令添加 NOT NULL约束。
在下面的示例中,我们将创建一个新表在 Jtp 数据库中调用 Orders 。
在创建 Orders 表之前,我们将如果 Jtp <中存在类似的表,请使用 drop table 命令.. strong> 数据库。
DROP TABLE if EXISTS Orders;
输出
执行上述命令后,我们将获得以下窗口消息,其中显示 Orders 表已成功删除。
PostgreSQL Not-Null Constraint
上一次已删除创建的 Orders 表,我们将创建一个新的 Orders 表,该表包含各种列,例如 ID,规格,Raw_material_id,数量,Begin_id和End_id列。
CREATE TABLE Orders (
    ID SERIAL PRIMARY KEY,
    Specification VARCHAR (50) NOT null,
    Raw_material_id VARCHAR (15),
    Quantity NUMERIC,
    Begin_date DATE,
    End_date DATE
);
输出
执行上述命令后,我们将得到以下消息: Orders 表具有已成功创建到 Jtp 数据库中。
PostgreSQL非空约束
成功创建 Orders 表之后,我们将在 INSERT 命令的帮助下向其中插入几条记录,如下所示: 以下命令:
INSERT INTO Orders (Specification)
VALUES('Make for TCS');
输出
执行上述命令时,我们将获得以下消息窗口,其中显示一个值已成功插入进入 Orders 表。
不是PostgreSQL-Null Constraint
之后,我们可以在 Quantity 列中添加 non-null约束,以确保 Quantity 列不是 null ,尽管该列已经包含一些数据。
要将 NOT NULL约束添加到包含NULL值的列中,我们将按照以下步骤进行操作: 以下步骤。
Step1
首先,我们需要将 NULL更新为NOT-NULL ,如以下声明:
UPDATE Orders
SET Quantity = 1;
输出
执行上述命令后,我们将获得以下消息窗口,其中显示 Orders 表已成功更新。
PostgreSQL非空约束
我们可以看到上面的屏幕截图中,数量列中的值已更新为一个。
Step2
现在,我们将使用ALTER table命令将 NOT NULL约束添加到 Quantity 列,如下面的语句所示:
ALTER TABLE Orders 
ALTER COLUMN Quantity
SET NOT null;
输出
在执行上述命令时,我们将获得以下消息窗口,该窗口显示 Orders 表已成功修改。
PostgreSQL非空约束
Step3
在那之后,我们将借助以下命令,为 Raw_material_id,Begin_date和End_date 列设置非空约束:
UPDATE Orders
SET Raw_material_id = 'PQR',
 Begin_date = '2013-04-08',
 End_date = '2013-04-08';
输出
我们将获得以下消息窗口,其中显示 Orders 表已更新执行上面的命令后成功:
PostgreSQL非空约束
Step4
在那之后,我们将 Not-Null约束添加到各个列中,如以下语句所示:
ALTER TABLE Orders 
ALTER COLUMN Raw_material_id SET NOT null,
ALTER COLUMN Begin_date SET NOT null,
ALTER COLUMN End_date SET NOT null;
输出
在执行上述命令时,我们将检索以下消息窗口,该窗口显示特定表已成功更改。
PostgreSQL非null约束
Step5
最后,我们将尝试将数量列中的值修改为 NUL L,因为我们可以观察到以下语句:
UPDATE Orders
SET Quantity = null;
输出
实施上述命令后,PostgreSQL发出以下错误消息:
错误: 列" quantity"中的值为空"违反了非null约束。详细信息: 失败行包含(1,Make for TCS,PQR,null,2013-04-08,2013-04-08)。
PostgreSQL Not-Null Constraint

NOT NULL约束的不同情况

除了 PostgreSQL非空约束,我们可以使用 CHECK约束强制列接受接受NULL值,并且 NOT NULL约束相等到以下CHECK约束:
CHECK(column IS NOT null)
让我们看一个示例示例,以了解PostgreSQL非空约束的特殊情况。
假设我们需要 的 Login_name或Phone_number 列>买方 表不为空或为空。在这种情况下,我们可以使用 CHECK约束。
为此,首先,我们将创建 买方 借助"创建表"命令的帮助,如以下命令所示:
CREATE TABLE Buyer (
ID serial PRIMARY KEY,
Login_name VARCHAR (40),
Password VARCHAR (40),
Phone_number VARCHAR (40),
CONSTRAint Login_name_Phone_number_notnull CHECK (
   NOT (
     (Login_name IS null OR  Login_name = '' )
     AND
     ( Phone_number IS null  OR  Phone_number = '' )
   )
 )
);
输出
执行上述命令后,我们将获得以下消息窗口,其中显示 Buyer strong>表已成功创建到 jtp 数据库中。
PostgreSQL不-Null Constraint
成功将新表创建为 Buyer 后,我们将在 INSERT 命令的帮助下向其中输入一些值
INSERT INTO Buyer (Login_name, Phone_number)
VALUES
    ('Login1', null),
    (NULL, '9876543210'),
    ('Login2,'0123456789'),
    ('Login3', '');
输出
执行上述命令后,我们将获得以下消息窗口,其中显示四个值已成功插入
不是PostgreSQL,请输入购买者 表。-Null Constraint
但是以下命令将不起作用,因为它会中断 CHECK约束:
INSERT INTO Buyer (Login_name, Phone_number)
VALUES 
(NULL, ''),
(NULL, null), 
('', ''),
('', null);
输出
执行上述命令后,PostgreSQL将引发以下错误:
错误: 关系"买方"的新行违反了检查约束" login_name_phone_number_notnull"详细信息: 失败行包含(5,null,null,)。
PostgreSQL不是-空约束

概述

在 PostgreSQL非空约束部分,我们学习了以下主题:
我们已使用 NOT NULL约束来确保列的值不为空。 我们了解PostgreSQL NOT NULL约束的不同情况。 要检查值是否为 NULL ,我们使用了 IS NULL 运算符,其中 IS NOT NULL 拒绝输出 IS NULL 的值。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4