MySQL是一種流行的關系型數據庫管理系統。在MySQL中,可以使用約束(constraints)來限制表中數據的類型和值,以保持數據的準確性和一致性。下面是一些常用的MySQL約束:
- NOT NULL:指定列不能包含NULL值。 - UNIQUE:指定列的值必須是唯一的,即不能重復。 - PRIMARY KEY:在表中指定一個唯一標識,用于標識表中的每一行數據。 - FOREIGN KEY:用于建立表之間的關聯,約束一個表中的列必須在另一個表中存在。 - CHECK:限制列的值必須滿足某些條件。 - DEFAULT:指定當插入新行時,若未提供值,則使用默認值。
下面是一個簡單的MySQL表和約束的例子:
CREATE TABLE users ( id INT(11) NOT NULL PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, email VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, role ENUM('admin', 'user') DEFAULT 'user' CHECK(role IN ('admin', 'user')) ); CREATE TABLE posts ( id INT(11) NOT NULL PRIMARY KEY, user_id INT(11) NOT NULL, title VARCHAR(255) NOT NULL, content TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) );
在上面的例子中,我們創建了兩個表:users和posts。在users表中,我們指定了以下約束:
- id必須是一個INT類型,并且不能包含NULL值,因為它是主鍵(PRIMARY KEY)。 - username必須是一個VARCHAR類型,并且不能包含NULL值和重復值,因為它是唯一(UNIQUE)的。 - email必須是一個VARCHAR類型,并且不能包含NULL值。 - password必須是一個VARCHAR類型,并且不能包含NULL值。 - created_at和updated_at都必須是TIMESTAMP類型,并且在插入和更新時使用默認值,分別表示創建時間和最后更新時間。 - role必須是一個ENUM類型,只能是'admin'或'user'中的一個,否則會觸發CHECK約束。
在posts表中,我們指定了以下約束:
- id必須是一個INT類型,并且不能包含NULL值,因為它是主鍵。 - user_id必須是一個INT類型,并且不能包含NULL值,因為它是外鍵(FOREIGN KEY),參照的是users表中的id列。 - title必須是一個VARCHAR類型,并且不能包含NULL值。 - content必須是一個TEXT類型,并且不能包含NULL值。 - created_at和updated_at都必須是TIMESTAMP類型,并且在插入和更新時使用默認值,分別表示創建時間和最后更新時間。
上面的例子中包含了一些基本的MySQL約束,但MySQL支持的約束類型還有很多,可以根據具體需求選擇使用哪些約束。
上一篇mysql約束教學
下一篇html css李靜