SQLite - 範圍約束:您的数据完整性指南
你好啊,未來的數據庫大師!今天,我們將踏上一段令人興奮的旅程,探索SQLite範圍約束的領域。別擔心如果你是編程新手——我將成為你的友好導覽,一步步解釋所有內容。在本教程結束時,你將能夠像專業人士一樣約束你的數據!
範圍約束是什麼?
在我們深入之前,讓我們先來討論一下範圍約束是什麼。想像你正在搭建一個紙牌屋。你希望它穩固,對吧?數據庫中的範圍約束就像你遵循的規則,以防止你的紙牌屋倒塌。它們確保你的數據保持一致和可靠。
範圍約束類型
SQLite提供了多種範圍約束。讓我們通過一些有趣的例子來探索每一種!
1. NOT NULL 範圍約束
NOT NULL範圍約束就像俱樂部的保鏢——它不允許空值進入你的數據庫。
CREATE TABLE students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
);
在這個例子中,我們正在創建一個學生表。name
和age
字段不能留空。如果你試圖插入一個沒有名字或年齡的學生,SQLite會客氣地(但堅定地)拒絕。
2. DEFAULT 範圍約束
DEFAULT範圍約束就像你媽媽為你打包午餐——如果你忘記帶東西,它會為你提供一個默認選項。
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
product TEXT NOT NULL,
quantity INTEGER DEFAULT 1,
order_date TEXT DEFAULT CURRENT_DATE
);
在這裡,如果你在訂單中沒有指定數量,它假設你想要一件商品。如果你忘記添加日期,它會使用當天的日期。
3. UNIQUE 範圍約束
UNIQUE範圍約束就像在教室中分配座位號——沒有兩個學生能夠有相同的座位。
CREATE TABLE users (
id INTEGER PRIMARY KEY,
username TEXT UNIQUE,
email TEXT UNIQUE
);
這確保了沒有兩個用戶可以擁有相同的用戶名或電子郵件地址。這對於防止重複賬戶非常完美!
4. PRIMARY KEY 範圍約束
PRIMARY KEY範圍約束就像給每個學生一張獨特的身份證。這是一種特殊的UNIQUE範圍約束,也不能為NULL。
CREATE TABLE books (
isbn TEXT PRIMARY KEY,
title TEXT NOT NULL,
author TEXT NOT NULL
);
在這個例子中,每本書都有一個獨一的ISBN作為其標識符。
5. CHECK 範圍約束
CHECK範圍約束就像老師檢查你的作業——它確保你的數據符合某些條件。
CREATE TABLE employees (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER CHECK(age >= 18),
salary REAL CHECK(salary > 0)
);
這確保所有員工至少18歲並且有正的薪水。這裡沒有童工或無薪實習!
6. FOREIGN KEY 範圍約束
FOREIGN KEY範圍約束就像連接拼圖塊——它根據相關數據將表連接起來。
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
customer_id INTEGER,
product TEXT NOT NULL,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
這個範圍約束確保orders
表中的每個customer_id
與customers
表中的某個id
匹配。
修改範圍約束
有時候,你可能需要改變你的範圍約束。讓我們看看如何做到這一點。
添加範圍約束
你可以使用ALTER TABLE命令向現有表添加範圍約束:
ALTER TABLE students ADD CONSTRAINT age_check CHECK(age > 0);
這會添加一個檢查,確保所有年齡都是正數。
刪除範圍約束
在SQLite中刪除範圍約束要複雜一些。你實際上需要重新創建一個沒有該範圍約束的表:
-- 步驟1:創建一個沒有範圍約束的新表
CREATE TABLE new_students AS SELECT * FROM students;
-- 步驟2:刪除舊表
DROP TABLE students;
-- 步驟3:重命名新表
ALTER TABLE new_students RENAME TO students;
範圍約束方法
這裡有一個方便的表格,總結了我們可以使用範圍約束的方法:
方法 | 描述 |
---|---|
NOT NULL | 確保列不能有NULL值 |
DEFAULT | 為列提供默認值 |
UNIQUE | 確保列中的所有值都是不同的 |
PRIMARY KEY | 在數據庫表中唯一標識每行/記錄 |
CHECK | 確保列中的所有值滿足某些條件 |
FOREIGN KEY | 在另一表中唯一標識一行/記錄 |
結論
恭喜你!你剛剛完成了SQLite範圍約束的速成課程。記住,範圍約束是你的朋友——它們幫助你保持數據的乾淨、一致和可靠。隨著你繼續在數據庫世界的旅程,你會發現這些範圍約束在維護數據完整性方面非常有價值。
總是思考你的數據應該遵循哪些規則,並使用範圍約束來執行這些規則。防止不良數據進入你的數據庫要比之後清理它來得容易得多!
持續練習,保持好奇心,並且快樂編程!??
Credits: Image by storyset