数据库 · 16 10 月, 2024

MySQL指令: CONSTRAINT(約束)

MySQL指令: CONSTRAINT(約束)

在資料庫管理系統中,約束(CONSTRAINT)是用來限制資料表中資料的有效性和完整性的重要工具。MySQL作為一個流行的開源資料庫管理系統,提供了多種約束類型,以確保資料的正確性和一致性。本文將深入探討MySQL中的約束類型及其使用方法。

約束的類型

MySQL支持多種約束,主要包括以下幾種:

  • NOT NULL: 確保某個欄位不能為空。
  • UNIQUE: 確保某個欄位的值在資料表中是唯一的。
  • PRIMARY KEY: 組合了NOT NULL和UNIQUE的特性,用於唯一標識資料表中的每一行。
  • FOREIGN KEY: 用於建立與其他資料表的關聯,確保資料的參照完整性。
  • CHECK: 用於限制欄位的值必須滿足特定條件。

使用範例

1. NOT NULL 約束

在創建資料表時,可以使用NOT NULL約束來確保某個欄位不會為空。例如:

CREATE TABLE users (
    id INT AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    PRIMARY KEY (id)
);

2. UNIQUE 約束

如果希望某個欄位的值在資料表中是唯一的,可以使用UNIQUE約束。例如:

CREATE TABLE products (
    id INT AUTO_INCREMENT,
    product_name VARCHAR(100) NOT NULL,
    sku VARCHAR(50) UNIQUE,
    PRIMARY KEY (id)
);

3. PRIMARY KEY 約束

PRIMARY KEY約束用於唯一標識資料表中的每一行,通常會在創建資料表時指定。例如:

CREATE TABLE orders (
    order_id INT AUTO_INCREMENT,
    user_id INT NOT NULL,
    order_date DATETIME NOT NULL,
    PRIMARY KEY (order_id)
);

4. FOREIGN KEY 約束

FOREIGN KEY約束用於建立資料表之間的關聯。例如:

CREATE TABLE order_items (
    item_id INT AUTO_INCREMENT,
    order_id INT,
    product_id INT,
    PRIMARY KEY (item_id),
    FOREIGN KEY (order_id) REFERENCES orders(order_id)
);

5. CHECK 約束

CHECK約束用於限制欄位的值必須滿足特定條件。例如:

CREATE TABLE employees (
    employee_id INT AUTO_INCREMENT,
    salary DECIMAL(10, 2),
    PRIMARY KEY (employee_id),
    CHECK (salary > 0)
);

約束的修改與刪除

在MySQL中,可以使用ALTER TABLE指令來修改或刪除約束。例如,若要刪除UNIQUE約束,可以使用以下指令:

ALTER TABLE products
DROP INDEX sku;

若要添加新的約束,可以使用:

ALTER TABLE employees
ADD CONSTRAINT chk_salary CHECK (salary > 0);

總結

MySQL中的約束是確保資料完整性和正確性的重要工具。透過使用NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY和CHECK等約束,開發者可以有效地管理資料庫中的資料。了解這些約束的使用方法,將有助於提升資料庫的設計質量和運行效率。

如需進一步了解如何在您的 香港VPS 上使用MySQL,請訪問我們的網站以獲取更多資訊。