SQL - 預設約束:初學者指南

你好,有志於學習SQL的熱情者!今天,我們將深入探索SQL預設約束的奇妙世界。別擔心你對編程是新手——我將成為你這次旅程中的友好導遊,一步步為你解釋一切。所以,來一杯咖啡,我們開始吧!

SQL - Default Constraint

SQL 預設約束

想象你正在填寫一個表單,裡面有一個字段寫著「國家」。如果你的大多數用戶都來自美國,那麼在該字段中預先填入「USA」不是很好嗎?這正是SQL中的預設約束所做的——為列提供了一個預設值,當沒有提供特定值時使用。

如何工作

當你創建一個表或添加一個新列時,你可以指定一個預設值。如果你在添加新記錄時沒有提供特定值,這個值將被自動插入。

讓我們看一個例子:

CREATE TABLE Customers (
CustomerID int NOT NULL,
CustomerName varchar(255) NOT NULL,
ContactName varchar(255),
Country varchar(255) DEFAULT 'USA'
);

在這個例子中,我們創建了一個「Customers」表。 「Country」列設置了預設約束為 'USA'。這意味著如果我們在添加新客戶時沒有指定國家,它將自動設置為 'USA'。

使用預設值插入數據

現在,讓我們向我們的表中添加一些客戶:

INSERT INTO Customers (CustomerID, CustomerName, ContactName)
VALUES (1, 'John Doe', 'John');

INSERT INTO Customers (CustomerID, CustomerName, ContactName, Country)
VALUES (2, 'Jane Smith', 'Jane', 'Canada');

運行這些INSERT語句後,我們的表會像這樣:

CustomerID CustomerName ContactName Country
1 John Doe John USA
2 Jane Smith Jane Canada

注意John Doe的國家自動設置為 'USA',而Jane Smith的國家則被显式設置為 'Canada'。

使用「DEFAULT」作為值

有時候,你可能即使為其他列指定了值,還是想顯式使用預設值。SQL允許你通過使用DEFAULT關鍵字來做到這點。

INSERT INTO Customers (CustomerID, CustomerName, ContactName, Country)
VALUES (3, 'Bob Johnson', 'Bob', DEFAULT);

這會插入一條新記錄,Country為 'USA',就像我們完全省略了Country列一樣。

為現有列添加預設約束

如果你已經創建了表,現在想要添加預設約束,沒問題!SQL為你提供了支持。

具體語法可能會根據你的數據庫系統略有不同,但這裡有一個一般性的例子:

ALTER TABLE Customers
ALTER COLUMN Country SET DEFAULT 'USA';

這個命令修改了現有的「Customers」表,將「Country」列的預設值設置為 'USA'。

注意事項

請記住,添加預設約束不會影響現有數據。它只適用於新記錄或更新。所以如果你在Country列中之前有空值,它們會保持空值,直到你更新它們。

刪除預設約束

正如我們可以添加預設約束一樣,我們也可以刪除它們。這被稱為「刪除」約束。

同樣,具體語法可能會有所不同,但這裡有一個一般性的例子:

ALTER TABLE Customers
ALTER COLUMN Country DROP DEFAULT;

這個命令從「Customers」表的「Country」列中刪除了預設約束。

什麼時候刪除預設約束

你可能想要刪除預設約束,如果:

  1. 預設值不再適用
  2. 你想要強制手動輸入該列
  3. 你計劃完全刪除該列

預設約束的實際用途

預設約束在許多真實世界的場景中非常有用。以下是一些例子:

  1. 時間戳:你可以使用預設來自動記錄記錄插入的當前時間。
CREATE TABLE Orders (
OrderID int NOT NULL,
ProductName varchar(255) NOT NULL,
OrderDate datetime DEFAULT CURRENT_TIMESTAMP
);
  1. 狀態標誌:對於表示狀態或狀態的列,你可以設置一個默認的初始狀態。
CREATE TABLE Tasks (
TaskID int NOT NULL,
TaskName varchar(255) NOT NULL,
IsCompleted bit DEFAULT 0
);
  1. 配置設置:當存儲用戶偏好設置時,你可以設置合理的默認值。
CREATE TABLE UserSettings (
UserID int NOT NULL,
Theme varchar(50) DEFAULT 'Light',
NotificationsEnabled bit DEFAULT 1
);

結論

好了,各位!我們已經穿越了SQL預設約束的土地。我們看到了如何創建它們、使用它們、將它們添加到現有列,甚至當它們不再需要時如何刪除它們。

請記住,預設約束就像是你數據庫中的小精靈,當你忘記或不夠信息時為你填空。它們可以節省你的時間,減少錯誤,並使你的數據更加一致。

在你繼續你的SQL冒險時,你會發現預設約束還有許多其他用途。它們是你SQL工具包中簡單而強大的工具。所以,勇往直前並使用約束吧!祝編程愉快!

Credits: Image by storyset