資料庫教程:MySQL 約束概述
在資料庫管理系統中,約束(Constraints)是用來限制資料表中資料的有效性和完整性的重要工具。MySQL 作為一個流行的開源資料庫管理系統,提供了多種約束類型,以確保資料的正確性和一致性。本文將對 MySQL 中的主要約束進行概述,幫助讀者更好地理解如何在資料庫設計中應用這些約束。
約束的類型
MySQL 支援多種約束,主要包括以下幾種:
- 主鍵約束(PRIMARY KEY)
- 外鍵約束(FOREIGN KEY)
- 唯一約束(UNIQUE)
- 檢查約束(CHECK)
- 非空約束(NOT NULL)
1. 主鍵約束(PRIMARY KEY)
主鍵約束用於唯一標識資料表中的每一行。每個資料表只能有一個主鍵,且主鍵的值不能為空。主鍵通常由一個或多個欄位組成,這些欄位的組合必須是唯一的。
CREATE TABLE users (
id INT AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
);2. 外鍵約束(FOREIGN KEY)
外鍵約束用於建立兩個資料表之間的關聯。它確保在一個資料表中的某個欄位的值必須存在於另一個資料表的主鍵欄位中。這有助於維護資料的參照完整性。
CREATE TABLE orders (
order_id INT AUTO_INCREMENT,
user_id INT,
order_date DATETIME,
PRIMARY KEY (order_id),
FOREIGN KEY (user_id) REFERENCES users(id)
);3. 唯一約束(UNIQUE)
唯一約束確保資料表中的某個欄位或欄位組合的值是唯一的,這意味著不可以有重複的值。與主鍵不同的是,唯一約束的欄位可以包含空值。
CREATE TABLE products (
product_id INT AUTO_INCREMENT,
product_name VARCHAR(100) NOT NULL,
sku VARCHAR(50) UNIQUE,
PRIMARY KEY (product_id)
);4. 檢查約束(CHECK)
檢查約束用於限制欄位的值必須滿足特定條件。這在 MySQL 8.0 版本中得到了支持,能夠幫助開發者確保資料的有效性。
CREATE TABLE employees (
employee_id INT AUTO_INCREMENT,
age INT,
CHECK (age >= 18),
PRIMARY KEY (employee_id)
);5. 非空約束(NOT NULL)
非空約束確保某個欄位不能包含空值。這對於那些必須有值的欄位非常重要,例如用戶名或電子郵件地址。
CREATE TABLE customers (
customer_id INT AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
PRIMARY KEY (customer_id)
);結論
在 MySQL 中使用約束是設計資料庫時不可或缺的一部分。透過適當的約束,可以確保資料的完整性和一致性,從而提高資料庫的可靠性。了解各種約束的功能和使用方法,將有助於開發者在實際應用中更有效地管理資料。
如果您正在尋找高效的 VPS 解決方案來運行您的 MySQL 資料庫,Server.HK 提供多種選擇,滿足不同需求的客戶。無論是 香港VPS 還是其他類型的 伺服器,我們都能為您提供穩定的服務。