SQLite - 範圍約束:您的数据完整性指南

你好啊,未來的數據庫大師!今天,我們將踏上一段令人興奮的旅程,探索SQLite範圍約束的領域。別擔心如果你是編程新手——我將成為你的友好導覽,一步步解釋所有內容。在本教程結束時,你將能夠像專業人士一樣約束你的數據!

SQLite - Constraints

範圍約束是什麼?

在我們深入之前,讓我們先來討論一下範圍約束是什麼。想像你正在搭建一個紙牌屋。你希望它穩固,對吧?數據庫中的範圍約束就像你遵循的規則,以防止你的紙牌屋倒塌。它們確保你的數據保持一致和可靠。

範圍約束類型

SQLite提供了多種範圍約束。讓我們通過一些有趣的例子來探索每一種!

1. NOT NULL 範圍約束

NOT NULL範圍約束就像俱樂部的保鏢——它不允許空值進入你的數據庫。

CREATE TABLE students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
);

在這個例子中,我們正在創建一個學生表。nameage字段不能留空。如果你試圖插入一個沒有名字或年齡的學生,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_idcustomers表中的某個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