溫馨提示×

怎樣通過create命令設置表約束

小樊
81
2024-10-02 10:27:13
欄目: 編程語言

在MySQL中,CREATE TABLE命令用于創(chuàng)建新表,并且可以設置表約束來確保數據的完整性和準確性。以下是一些常見的表約束及其設置方法:

  1. 主鍵約束(PRIMARY KEY)

    • 使用PRIMARY KEY關鍵字指定主鍵列。
    • 主鍵列必須唯一,并且不允許為NULL。
    • 示例:CREATE TABLE students (id INT PRIMARY KEY, name VARCHAR(50), age INT);
  2. 唯一約束(UNIQUE)

    • 使用UNIQUE關鍵字指定某列或多列的組合必須唯一。
    • 唯一約束允許NULL值(如果列定義為允許NULL)。
    • 示例:CREATE TABLE users (username VARCHAR(50) UNIQUE, email VARCHAR(100));
  3. 檢查約束(CHECK)

    • 使用CHECK關鍵字添加條件表達式,確保列中的值滿足特定條件。
    • 檢查約束在插入或更新數據時進行驗證。
    • 示例:CREATE TABLE products (price DECIMAL(10, 2), quantity INT CHECK (price > 0 AND quantity >= 0));
  4. 外鍵約束(FOREIGN KEY)

    • 使用FOREIGN KEY關鍵字創(chuàng)建外鍵列,該列引用另一個表的主鍵。
    • 外鍵列必須唯一,并且不允許為NULL(除非指定了ON DELETE SET NULLON DELETE CASCADE)。
    • 示例:CREATE TABLE orders (order_id INT PRIMARY KEY, product_id INT, supplier_id INT, FOREIGN KEY (product_id) REFERENCES products(id), FOREIGN KEY (supplier_id) REFERENCES suppliers(id));
  5. 默認值約束(DEFAULT)

    • 使用DEFAULT關鍵字為列指定默認值。
    • 當插入新行且未為該列提供值時,將使用默認值。
    • 示例:CREATE TABLE employees (salary DECIMAL(10, 2), join_date DATE DEFAULT CURRENT_DATE);
  6. 非空約束(NOT NULL)

    • 使用NOT NULL關鍵字指定列不允許為NULL。
    • 必須在插入或更新數據時為列提供值。
    • 示例:CREATE TABLE contact_info (email VARCHAR(100) NOT NULL, phone VARCHAR(20));

在創(chuàng)建表時,可以將這些約束與CREATE TABLE命令一起使用,以確保數據的完整性和準確性。例如:

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    phone VARCHAR(20),
    hire_date DATE NOT NULL,
    job_id INT,
    salary DECIMAL(10, 2),
    manager_id INT,
    FOREIGN KEY (job_id) REFERENCES jobs(job_id),
    FOREIGN KEY (manager_id) REFERENCES employees(id)
);

在這個示例中,我們定義了一個employees表,其中包含了主鍵約束、非空約束、唯一約束和外鍵約束。

0