MySQL是一種常用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在數(shù)據(jù)庫設(shè)計中,數(shù)據(jù)完整性是非常重要的,這可以通過完整性約束來實現(xiàn)。
MySQL支持五種類型的完整性約束:NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY和CHECK。
NOT NULL:
該約束確保一個列不允許為空值。例如,下面的代碼在創(chuàng)建表時定義了一個NOT NULL約束,使名字列不能為空:
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT
);
UNIQUE:
該約束確保一個列的所有值都是唯一的。例如,下面的代碼在創(chuàng)建表時定義了一個UNIQUE約束,使手機號不能重復(fù):
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(50),
phone VARCHAR(20) UNIQUE,
email VARCHAR(50)
);
PRIMARY KEY:
PRIMARY KEY約束確保一個列或一組列的值是唯一的,并作為表的主鍵。例如,下面的代碼在創(chuàng)建表時定義了一個PRIMARY KEY約束,并將id列作為主鍵:
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
FOREIGN KEY:
該約束用于確保關(guān)系數(shù)據(jù)庫中的引用完整性。它創(chuàng)建了一個指向另一個表的外鍵,以確保一致性。例如,下面的代碼在創(chuàng)建表時定義了一個FOREIGN KEY約束,使course表中的student_id列與student表中的id列相關(guān)聯(lián):
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
CREATE TABLE course (
id INT PRIMARY KEY,
course_name VARCHAR(50),
student_id INT,
FOREIGN KEY (student_id) REFERENCES student(id)
);
CHECK:
該約束用于確保插入到表中的所有值都符合特定的條件。例如,下面的代碼在創(chuàng)建表時定義了一個CHECK約束,使age列的值必須大于等于18:
CREATE TABLE user (
id INT,
name VARCHAR(50),
age INT CHECK (age >= 18),
email VARCHAR(50)
);
上述五種完整性約束在MySQL中都可以使用。在設(shè)計數(shù)據(jù)庫時,應(yīng)根據(jù)需要選擇適當(dāng)?shù)募s束類型,并確保約束設(shè)置正確。