MySQL 完整性約束是確保表中數據的正確性和完整性的一種技術。這種技術強制執行表中存儲的數據的某些規則、限制和約束。
MySQL 完整性約束包括:
- 主鍵約束:要求 PRIMARY KEY 列是唯一標識表中每個行的列。
- 外鍵約束:要求 FOREIGN KEY 列是另一個表中的 PRIMARY KEY 列的引用。
- 唯一約束:要求特定列的值是唯一的。
- 非空約束:要求特定列不允許為空。
- 默認值約束:在插入新行時,如果未指定值,則使用默認值。
- 檢查約束:要求插入的值滿足特定條件。
-- 創建一個帶有主鍵約束的表 CREATE TABLE students ( id INT(11) NOT NULL PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT(3) NOT NULL, gender ENUM('M', 'F') NOT NULL ); -- 創建一個帶有外鍵約束的表 CREATE TABLE student_classes ( id INT(11) NOT NULL PRIMARY KEY, student_id INT(11) NOT NULL, class_id INT(11) NOT NULL, FOREIGN KEY (student_id) REFERENCES students(id), FOREIGN KEY (class_id) REFERENCES classes(id) ); -- 創建一個帶有唯一約束的表 CREATE TABLE employees ( id INT(11) NOT NULL PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(50) NOT NULL UNIQUE, phone VARCHAR(20) NOT NULL UNIQUE, hire_date DATE NOT NULL ); -- 創建一個帶有非空約束的表 CREATE TABLE orders ( id INT(11) NOT NULL PRIMARY KEY, order_date DATE NOT NULL, customer_id INT(11) NOT NULL, total_amount DECIMAL(10, 2) NOT NULL ); -- 創建一個帶有默認值約束的表 CREATE TABLE contacts ( id INT(11) NOT NULL PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(50) DEFAULT 'NA', phone VARCHAR(20) DEFAULT 'NA' ); -- 創建一個帶有檢查約束的表 CREATE TABLE products ( id INT(11) NOT NULL PRIMARY KEY, name VARCHAR(50) NOT NULL, price DECIMAL(10, 2) NOT NULL, stock INT(11) NOT NULL, CHECK (price >0), CHECK (stock >= 0) );
MySQL 完整性約束是確保數據的準確性和完整性的重要方法。使用一些約束可以避免不必要的數據錯誤和重復。請注意,在 MySQL 中設置完整性約束可能會影響性能,因此應該權衡利弊。
上一篇mysql完美數據遷移
下一篇MySQL完整使用