SQL - 預設約束:初學者指南
你好,有志於學習SQL的熱情者!今天,我們將深入探索SQL預設約束的奇妙世界。別擔心你對編程是新手——我將成為你這次旅程中的友好導遊,一步步為你解釋一切。所以,來一杯咖啡,我們開始吧!
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」列中刪除了預設約束。
什麼時候刪除預設約束
你可能想要刪除預設約束,如果:
- 預設值不再適用
- 你想要強制手動輸入該列
- 你計劃完全刪除該列
預設約束的實際用途
預設約束在許多真實世界的場景中非常有用。以下是一些例子:
- 時間戳:你可以使用預設來自動記錄記錄插入的當前時間。
CREATE TABLE Orders (
OrderID int NOT NULL,
ProductName varchar(255) NOT NULL,
OrderDate datetime DEFAULT CURRENT_TIMESTAMP
);
- 狀態標誌:對於表示狀態或狀態的列,你可以設置一個默認的初始狀態。
CREATE TABLE Tasks (
TaskID int NOT NULL,
TaskName varchar(255) NOT NULL,
IsCompleted bit DEFAULT 0
);
- 配置設置:當存儲用戶偏好設置時,你可以設置合理的默認值。
CREATE TABLE UserSettings (
UserID int NOT NULL,
Theme varchar(50) DEFAULT 'Light',
NotificationsEnabled bit DEFAULT 1
);
結論
好了,各位!我們已經穿越了SQL預設約束的土地。我們看到了如何創建它們、使用它們、將它們添加到現有列,甚至當它們不再需要時如何刪除它們。
請記住,預設約束就像是你數據庫中的小精靈,當你忘記或不夠信息時為你填空。它們可以節省你的時間,減少錯誤,並使你的數據更加一致。
在你繼續你的SQL冒險時,你會發現預設約束還有許多其他用途。它們是你SQL工具包中簡單而強大的工具。所以,勇往直前並使用約束吧!祝編程愉快!
Credits: Image by storyset