目錄
- 主鍵約束
- 唯一主鍵
- 非空約束
- 默認約束
- 外鍵約束
主鍵約束
-- 主鍵約束
-- 使某個字段不重復且不得為空,確保表內所有數據的唯一性。
CREATE TABLE user (id INT PRIMARY KEY,name VARCHAR(20)
);-- 聯合主鍵
-- 聯合主鍵中的每個字段都不能為空,并且加起來不能和已設置的聯合主鍵重復。
CREATE TABLE user (id INT,name VARCHAR(20),password VARCHAR(20),PRIMARY KEY(id, name)
);-- 自增約束
-- 自增約束的主鍵由系統自動遞增分配。
CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20)
);-- 添加主鍵約束
-- 如果忘記設置主鍵,還可以通過SQL語句設置(兩種方式):
ALTER TABLE user ADD PRIMARY KEY(id);
ALTER TABLE user MODIFY id INT PRIMARY KEY;-- 刪除主鍵
ALTER TABLE user drop PRIMARY KEY;
唯一主鍵
-- 建表時創建唯一主鍵
CREATE TABLE user (id INT,name VARCHAR(20),UNIQUE(name)
);-- 添加唯一主鍵
-- 如果建表時沒有設置唯一建,還可以通過SQL語句設置(兩種方式):
ALTER TABLE user ADD UNIQUE(name);
ALTER TABLE user MODIFY name VARCHAR(20) UNIQUE;-- 刪除唯一主鍵
ALTER TABLE user DROP INDEX name;
非空約束
-- 建表時添加非空約束
-- 約束某個字段不能為空
CREATE TABLE user (id INT,name VARCHAR(20) NOT NULL
);-- 移除非空約束
ALTER TABLE user MODIFY name VARCHAR(20);
默認約束
-- 建表時添加默認約束
-- 約束某個字段的默認值
CREATE TABLE user2 (id INT,name VARCHAR(20),age INT DEFAULT 10
);-- 移除非空約束
ALTER TABLE user MODIFY age INT;
外鍵約束
-- 班級
CREATE TABLE classes (id INT PRIMARY KEY,name VARCHAR(20)
);-- 學生表
CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(20),-- 這里的 class_id 要和 classes 中的 id 字段相關聯class_id INT,-- 表示 class_id 的值必須來自于 classes 中的 id 字段值FOREIGN KEY(class_id) REFERENCES classes(id)
);
需要注意
1. 主表(父表)classes 中沒有的數據值,在副表(子表)students 中,是不可以使用的;
2. 主表中的記錄被副表引用時,主表不可以被刪除。