SQL - NOT NULL 範例:新手指南
你好,未來的資料庫魔法師!今天,我們將要踏入令人興奮的 SQL 世界,並探索一個關鍵概念:NOT NULL 範例。別擔心你對編程還是新手;我會一步步引導你,就像我過去幾年來對無數學生所做的一樣。那麼,我們就挽起袖子開始吧!
SQL NOT NULL 範例
NOT NULL 是什麼?
想像你正在填寫一張新的圖書館借書證申請表。有些欄位是可選的,比如你的中間名,但有些則是絕對必要的,例如你的名字和地址。在資料庫的世界裡,NOT NULL 範例扮演著類似角色。它確保一個列必須始終包含一個值;不能留空。
為什麼 NOT NULL 很重要?
想像一個學校的資料庫。一個學生記錄沒有名字或學號,這有道理嗎?可能沒有!NOT NULL 範例有助於維護數據的完整性,防止關鍵信息被省略。
在表中創建 NOT NULL 範例
讓我們從為我們想像中的圖書館創建一個簡單的表開始。我們將稱之為 "Books"。
CREATE TABLE Books (
BookID INT NOT NULL,
Title VARCHAR(100) NOT NULL,
Author VARCHAR(50) NOT NULL,
PublicationYear INT,
ISBN VARCHAR(13) NOT NULL
);
在這個例子中:
-
BookID
、Title
、Author
和ISBN
被標記為 NOT NULL,因為我們認為這些字段是必要的。 -
PublicationYear
沒有 NOT NULL 範例,所以它是可選的。
現在,讓我們嘗試插入一些數據:
-- 這個會正常工作
INSERT INTO Books (BookID, Title, Author, PublicationYear, ISBN)
VALUES (1, 'To Kill a Mockingbird', 'Harper Lee', 1960, '9780446310789');
-- 這個也會正常工作(省略了可選的 PublicationYear)
INSERT INTO Books (BookID, Title, Author, ISBN)
VALUES (2, '1984', 'George Orwell', '9780451524935');
-- 這個會失敗,因為我們試圖省略 Author,它是 NOT NULL
INSERT INTO Books (BookID, Title, PublicationYear, ISBN)
VALUES (3, 'The Great Gatsby', 1925, '9780743273565');
最後一個 INSERT 語句會拋出錯誤,因為我們違反了 Author 列的 NOT NULL 範例。
從表中移除 NOT NULL 範例
有時候,我們可能會意識到,我們最初認為是必要的一個字段其實可以是可選的。讓我們假設我們決定 ISBN 不總是必要的(也許對於非常古老的書)。以下是如何移除 NOT NULL 範例的方法:
ALTER TABLE Books
MODIFY COLUMN ISBN VARCHAR(13);
現在,ISBN 可以是 NULL。但記住,更改現有表的範例應小心謹慎,尤其是在生產環境中!
為現有表添加 NOT NULL 範例
如果我們後來發現我們確實需要確保每本書都有出版年份怎麼辦?我們可以向現有的列添加 NOT NULL 範例:
-- 首先,我們需要確保列中沒有 NULL 值
UPDATE Books
SET PublicationYear = 0
WHERE PublicationYear IS NULL;
-- 現在我们可以添加 NOT NULL 範例
ALTER TABLE Books
MODIFY COLUMN PublicationYear INT NOT NULL;
這裡發生了什麼:
- 我們更新任何 NULL 值為 0(或其他適當的默認值)。
- 我們更改表以添加 NOT NULL 範例。
在添加範例之前處理現有的 NULL 值是至关重要的;否則,ALTER TABLE 語句將會失敗。
一句忠告
向現有表添加 NOT NULL 範例可能會有些棘手。在進行此類更改之前,總是備份你的數據!
使用 NOT NULL 的最佳實踐
實踐 | 描述 |
---|---|
寶貴使用 | 只對真正必須有值的列應用 NOT NULL |
考慮默認值 | 對於應該總是有值但可能未被提供的列,考慮使用默認值與 NOT NULL 一起使用 |
提前規劃 | 在設計階段試圖識別 NOT NULL 列,以避免後來更改表 |
文档化 | 在你的模式設計中清晰地記錄為什麼某些列是 NOT NULL |
結論
好了,我的熱情學生們!我們已經穿越了 NOT NULL 範例的土地,從創建有 NOT NULL 列的表到為現有表添加和移除這些範例。記住,NOT NULL 就像一個嚴肅的圖書館管理員,確保我們數據庫中的 "書籍" 所有重要細節都被正確填寫。
在你繼續你的 SQL 冒險時,你會發現 NOT NULL 只是你數據庫工具包中的許多工具之一。它可能看起來很小,但請相信我,在維護數據完整性方面它非常有力。我見過無數數據庫災難因為恰當放置的 NOT NULL 範例而被避免!
繼續練習,保持好奇心,在你不知道之前,你將會在睡夢中寫 SQL 查詢(雖然我實際上不建議這樣——鍵盤是糟糕的枕頭)。
祝編程愉快,未來的數據大師們!
Credits: Image by storyset