SQL NOT NULL 約束

摘要:在本教程中,您將學習如何使用 SQL NOT NULL 約束來確保列不能有 NULL 值。

SQL NOT NULL 約束簡介 #

在 SQL 中,NULL 表示未知值或缺失資料。如果您在定義表列時未使用任何約束,該列將預設接受 NULL 值。

為確保列不能有 NULL 值,您可以使用 NOT NULL 約束。

NOT NULL 約束防止向指定列插入更新 NULL 值。這對於定義那些絕不應為 NULL 的重要列很有幫助。

要將 NOT NULL 約束應用於列,您可以使用以下語法:

column_name datatype NOT NULLCode language: SQL (Structured Query Language) (sql)

例如,下面的語句建立了一個名為 candidates 的表來儲存候選人資訊:

CREATE TABLE candidates (
  first_name VARCHAR(255) NOT NULL,
  last_name VARCHAR(255) NOT NULL,
  email VARCHAR(512) NOT NULL,
  phone VARCHAR(25) NOT NULL
);Code language: SQL (Structured Query Language) (sql)

試一試

candidates 表包含四個帶有 NOT NULL 約束的列。這意味著您不能向這些列中的任何一列插入 NULL 值。

以下語句將失敗,因為它試圖向 emailphone 列插入 NULL 值:

INSERT INTO
  candidates (first_name, last_name, email, phone)
VALUES
  ('John', 'Doe', NULL, NULL);Code language: SQL (Structured Query Language) (sql)

試一試

然而,下面的 insert 語句會成功,因為它為所有 NOT NULL 列提供了有效值:

INSERT INTO
  candidates (first_name, last_name, email, phone)
VALUES
  (
    'John',
    'Doe',
    '[email protected]',
    '(408)-111-2222'
  );Code language: SQL (Structured Query Language) (sql)

試一試

為現有列新增 NOT NULL 約束 #

通常,您在建立表時為列新增 NOT NULL 約束。但有時,您可能想為現有的可為空(nullable)的列應用 NOT NULL 約束。

為此,您需要遵循以下步驟:

首先,使用 UPDATE 語句將 NULL 更新為非 NULL 值:

UPDATE table_name
SET
  column_name = non_null_value
WHERE
  column_name IS NULL;Code language: SQL (Structured Query Language) (sql)

請注意,我們在 WHERE 子句中使用了 IS NULL 運算子來查詢 column_name 列中值為 NULL 的行。

其次,使用 ALTER TABLE 語句向列新增 NOT NULL 約束:

ALTER TABLE table_name
MODIFY column_name data_type NOT NULL;Code language: SQL (Structured Query Language) (sql)

以下示例展示瞭如何為現有列新增 NOT NULL 約束。

首先,建立一個名為 interviews 的表來儲存面試資訊:

CREATE TABLE interviews (
  candidate_id INT NOT NULL,
  hiring_manager VARCHAR(255) NOT NULL,
  interview_date TIMESTAMP
);Code language: SQL (Structured Query Language) (sql)

試一試

其次,向 interview_date 列新增 NOT NULL 約束:

ALTER TABLE interviews 
MODIFY interview_date TIMESTAMP NOT NULL;Code language: SQL (Structured Query Language) (sql)

試一試

摘要 #

  • 使用 NOT NULL 約束來確保列不能有 NULL 值。

資料庫 #

測驗 #

本教程是否有幫助?
© .