SQL--約束
博客說明
文章所涉及的資料來自互聯(lián)網(wǎng)整理和個(gè)人總結(jié),意在于個(gè)人學(xué)習(xí)和經(jīng)驗(yàn)匯總,如有什么地方侵權(quán)掷豺,請聯(lián)系本人刪除,謝謝薄声!
概念
對表中的數(shù)據(jù)進(jìn)行限定当船,保證數(shù)據(jù)的正確性、有效性和完整性
分類
- 主鍵約束:primary key
- 非空約束:not null
- 唯一約束:unique
- 外鍵約束:foreign key
非空約束
not null默辨,值不能為null
-
創(chuàng)建表時(shí)添加約束
CREATE TABLE stu( id INT, NAME VARCHAR(20) NOT NULL -- name為非空 );
-
創(chuàng)建表完后生年,添加非空約束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
-
刪除name的非空約束
ALTER TABLE stu MODIFY NAME VARCHAR(20);
主鍵約束
primary key
-
注意:
- 含義:非空且唯一
- 一張表只能有一個(gè)字段為主鍵
- 主鍵就是表中記錄的唯一標(biāo)識(shí)
-
在創(chuàng)建表時(shí),添加主鍵約束
create table stu( id int primary key,-- 給id添加主鍵約束 name varchar(20) );
-
刪除主鍵
-- 錯(cuò)誤 alter table stu modify id int ; ALTER TABLE stu DROP PRIMARY KEY;
-
創(chuàng)建完表后廓奕,添加主鍵
ALTER TABLE stu MODIFY id INT PRIMARY KEY;
-
自動(dòng)增長:
概念:如果某一列是數(shù)值類型的抱婉,使用 auto_increment 可以來完成值得自動(dòng)增長
-
在創(chuàng)建表時(shí),添加主鍵約束桌粉,并且完成主鍵自增長
create table stu( id int primary key auto_increment,-- 給id添加主鍵約束 name varchar(20) );
-
刪除自動(dòng)增長
ALTER TABLE stu MODIFY id INT;
-
添加自動(dòng)增長
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
唯一約束
unique蒸绩,值不能重復(fù)
-
創(chuàng)建表時(shí),添加唯一約束
CREATE TABLE stu( id INT, phone_number VARCHAR(20) UNIQUE -- 添加了唯一約束 );
- 注意mysql中铃肯,唯一約束限定的列的值可以有多個(gè)null
-
刪除唯一約束
ALTER TABLE stu DROP INDEX phone_number;
-
在創(chuàng)建表后患亿,添加唯一約束
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
外鍵約束
foreign key,讓表于表產(chǎn)生關(guān)系,從而保證數(shù)據(jù)的正確性押逼。
-
在創(chuàng)建表時(shí)步藕,可以添加外鍵
-
語法:
create table 表名( .... 外鍵列 constraint 外鍵名稱 foreign key (外鍵列名稱) references 主表名稱(主表列名稱) );
-
-
刪除外鍵
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名稱;
-
創(chuàng)建表之后,添加外鍵
ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY (外鍵字段名稱) REFERENCES 主表名稱(主表列名稱);
-
級聯(lián)操作
-
添加級聯(lián)操作
語法:ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱
FOREIGN KEY (外鍵字段名稱) REFERENCES 主表名稱(主表列名稱) ON UPDATE CASCADE ON DELETE CASCADE ;
-
分類:
- 級聯(lián)更新:ON UPDATE CASCADE
- 級聯(lián)刪除:ON DELETE CASCADE
-
感謝
黑馬程序員
以及勤勞的自己