SQL - 預設約束



SQL DEFAULT 約束

SQL 的DEFAULT 約束用於指定表列的預設值。我們通常在建立表時設定預設值。

如果在插入資料時未提供任何值,則預設值將被視為列值,從而確保該列始終具有值。我們可以在 SQL 表中為多個列指定預設值。

語法

以下是 SQL DEFAULT 約束的語法:

CREATE TABLE table_name (
   column1 datatype DEFAULT default_value,
   column2 datatype DEFAULT default_value,
   column3 datatype,
   .....
   columnN datatype
);

示例

在以下查詢中,我們使用 CREATE TABLE 語句建立 CUSTOMERS 表。在這裡,我們向 NAME、AGE、ADDRESS 和 SALARY 列添加了預設約束:

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL DEFAULT 'Ramesh',
   AGE INT NOT NULL DEFAULT '32',
   ADDRESS CHAR (25) DEFAULT 'Ahmedabad',
   SALARY DECIMAL (18, 2) DEFAULT '2000',
   PRIMARY KEY (ID)
);

以下查詢使用 INSERT 語句將值插入此表:

INSERT INTO CUSTOMERS (ID) VALUES (1);
INSERT INTO CUSTOMERS VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );

該表在 NAME、AGE、ADDRESS 和 SALARY 列中為第一行建立了預設值,如下所示:

ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00

傳遞“DEFAULT”作為值

在將資料插入表時,如果列名未包含在 INSERT 查詢中,則要將預設值插入記錄中,我們需要將“DEFAULT”作為值傳遞,如下所示:

INSERT INTO CUSTOMERS VALUES
(3, 'Kaushik', DEFAULT, DEFAULT, 2000.00),
(4, 'Chaitali', DEFAULT, DEFAULT, DEFAULT);

獲得的表如下所示:

ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 32 Ahmedabad 2000.00
4 Chaitali 32 Ahmedabad 2000.00

向現有列新增預設約束

我們還可以使用ALTER TABLE語句向表的現有列新增預設約束。這允許我們透過指定預設值來修改現有表的結構,從而確保資料庫中的資料一致性。

語法

以下是向現有表中的列新增預設約束的語法:

ALTER TABLE table_name
ALTER COLUMN column_name SET DEFAULT 'default_value';

示例

假設我們使用 CREATE TABLE 語句建立了另一個名為 BUYERS 的表,如下所示:

CREATE TABLE BUYERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

以下查詢將預設約束新增到 BUYERS 表的 ADDRESS 列。

ALTER TABLE BUYERS ALTER ADDRESS SET DEFAULT 'Delhi';

以下 INSERT 語句透過為除 ADDRESS 之外的所有列提供值來將記錄插入 BUYERS 表:

INSERT INTO BUYERS (ID, NAME, AGE, SALARY) VALUES
(01, 'Rahul', 27, 50000);

驗證

插入記錄後,如果您將其取回,您可以在地址列中觀察到預設值(“Delhi”):

SELECT * FROM BUYERS WHERE ID = 01;

輸出

獲得的表如下:

ID NAME AGE ADDRESS SALARY
01 Rahul 27 Delhi 50000.00

刪除預設約束

我們可以使用ALTER TABLE... DROP語句從表中刪除預設約束。

語法

以下是從表中刪除預設約束的語法:

ALTER TABLE table_name
ALTER COLUMN column_name DROP DEFAULT;

示例

在這裡,我們從 CUSTOMERS 表的 ADDRESS 列中刪除預設約束:

ALTER TABLE CUSTOMERS ALTER ADDRESS DROP DEFAULT;

驗證

我們可以使用以下查詢驗證表詳細資訊(結構)並檢查是否存在預設約束:

DESC CUSTOMERS;

獲得的表如下所示:

欄位 型別 預設 額外
ID int NO PRI NULL
NAME varchar(20) NO Ramesh
AGE int NO 32
ADDRESS char(25) YES NULL
SALARY decimal(18,2) YES 2000.00
廣告