1. 約束的概念
對錶中的數據進行限定,保證數據的正確性、有效性和完整性。
2. 約束的分類
(1)主鍵約束:primary key
(2)非空約束:not null
(3)唯一約束:unique
(4)外鍵約束:foreign key
2.1 非空約束:值不能爲空
(1)創建表時添加約束
CREATE TABLE STU(
id INT,
name VARCHAR(20) NOT NULL;#name爲非空
);
(2)創建表後,添加非空約束
ALTER TABLE stu MODIFY name VARCHAR(20) NOT NULL;
(3)刪除name的非空約束
ALTER TABLE stu MODIFY name VARCHAR(20);
2.2 唯一約束:值不能重複
(1)創建表時添加約束
CREATE TABLE STU(
id INT,
tel VARCHAR(20) UNIQUE;#tel不能重複
);
(2)創建表後,添加唯一約束
ALTER TABLE stu MODIFY tel VARCHAR(20) UNIQUEL;
(3)刪除tel的唯一約束
ALTER TABLE stu DROP INDEX tel;
2.3 主鍵約束:非空且唯一,一個表中只能有一個主鍵,唯一標識
(1)創建表時添加主鍵約束
CREATE TABLE STU(
id INT primary key,#添加主鍵
name VARCHAR(20)
);
(2)創建表後,添加主鍵約束
ALTER TABLE stu MODIFY id int primary key;
(3)刪除主鍵約束
ALTER TABLE stu DROP PRIMARY KEY;
2.4.1 主鍵約束中的自動增長
(1)創建表時添加主鍵約束及自增長
CREATE TABLE STU(
id INT primary key auto_increment,#添加主鍵及自增長
name VARCHAR(20)
);
(2)創建表後,添加主鍵約束及自增長
ALTER TABLE stu MODIFY id INT primary key auto_increment;
(3)刪除自增長,無法刪除主鍵
ALTER TABLE stu MODIFY id INT;
2.5 外鍵約束
(1)創建表時添加外鍵約束
CREATE TABLE 表名(
......
外鍵列
constraint 外鍵名稱 foreign key (外鍵列名稱) references 主表名稱(主表列名稱)
);
(2)創建表後,添加主鍵約束及自增長
ALTER TABLE 表名 ADD constraint 外鍵名稱 foreign key (外鍵列名稱) references 主表名稱(主表列名稱);
(3)刪除外鍵約束
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名稱;
2.5.1 外鍵約束設置級聯更新和級聯刪除
ALTER TABLE 表名 ADD constraint 外鍵名稱 foreign key (外鍵列名稱) references 主表名稱(主表列名稱) on update cascade on delete cascade;