在MySQL中,CREATE TABLE
命令用于創(chuàng)建新表,并且可以設置表約束來確保數據的完整性和準確性。以下是一些常見的表約束及其設置方法:
主鍵約束(PRIMARY KEY):
PRIMARY KEY
關鍵字指定主鍵列。CREATE TABLE students (id INT PRIMARY KEY, name VARCHAR(50), age INT);
唯一約束(UNIQUE):
UNIQUE
關鍵字指定某列或多列的組合必須唯一。CREATE TABLE users (username VARCHAR(50) UNIQUE, email VARCHAR(100));
檢查約束(CHECK):
CHECK
關鍵字添加條件表達式,確保列中的值滿足特定條件。CREATE TABLE products (price DECIMAL(10, 2), quantity INT CHECK (price > 0 AND quantity >= 0));
外鍵約束(FOREIGN KEY):
FOREIGN KEY
關鍵字創(chuàng)建外鍵列,該列引用另一個表的主鍵。ON DELETE SET NULL
或ON 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));
默認值約束(DEFAULT):
DEFAULT
關鍵字為列指定默認值。CREATE TABLE employees (salary DECIMAL(10, 2), join_date DATE DEFAULT CURRENT_DATE);
非空約束(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
表,其中包含了主鍵約束、非空約束、唯一約束和外鍵約束。