MySQL約束超詳解

MySQL約束操作

概念:對表中的數據進行限定,保證數據的正確性,有效性和完整性。

分類:

  • 主鍵:primary key
  • 非空約束:not null
  • 唯一約束:unique
  • 外鍵約束:foreign key

1.非空約束

not null,值不能為空。

創建表時添加非空約束:

CREATE TABLE stu(
 id INT,
 NAME VARCHAR(20) NOT NULL
);

創建表完後,添加非空約束

ALTER TABLE stu 
MODIFY NAME VARCHAR(20) NOT NULL;

刪除非空約束

ALTER TABLE stu 
MODIFY NAME VARCHAR(20);

2.唯一約束

unique,值不能重復。

創建表時添加唯一約束

CREATE stu(
 id INT;
 phone_number VARCHAR(20) UNIQUE
);

註意:mysql中,唯一約束限定的列的值可以有多個null

刪除唯一約束

ALTER TABLE stu
DROP INDEX phone_number;

創建表完後,添加唯一約束

ALTER TABLE stu 
MODIFY phone_number VARCHAR(20) UNIQUE;

3.主鍵約束

primary key,

  • 非空且唯一。
  • 一張表隻能有一個字段為主鍵。
  • 主鍵就是表中記錄的唯一標識。

創建表時添加主鍵約束

CREATE TABLE stu( 
 id INT PRIMARY KEY,
 NAME VARCHAR(20)
);

刪除主鍵

ALTER TABLE stu 
DROP PRIMARY KEY;

創建表完後,添加主鍵

ALTER TABLE stu 
MODIFY id INT PRIMARY KEY ;

這裡補充一個知識點:自動增長

概念:如果某一列是數值類型的,使用auto_increment可以來完成自動增長。

例子:

在創建表時,添加主鍵約束,並且完成主鍵自動增長

CREATE TABLE stu(
 id INT PRIMARY KEY AUTO_INCREMENT,
 NAME VARCHAR(20)
);
#自動增長會根據當前列的最後一行的值往後增加。

刪除自動增長

ALTER TABLE stu
MODIFY id INT;
#這樣隻會刪除自動增長,主鍵刪不掉。

創建表完後,在添加自動增長

ALTER TABLE stu
MODIFY id INT AUTO_INCREMENT;

4.外鍵約束

foreign ley,讓表與表產生關系,從而保證數據的正確性。

在創建表時,可以添加外鍵

CREATE TABLE 表名(
 ...
 外鍵列
 CONSTRAINT 外鍵名稱 FOREIGN KEY (外鍵列名稱) REFERENCES 主表名稱(主表列名稱)
);

刪除外鍵

ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名稱;

創建表之後,添加外鍵

ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY (外鍵字段名稱) REFERENCES 主表名稱(主表列名稱);

5、級聯

添加級聯操作

ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 
FOREIGN KEY (外鍵字段名稱) REFERENCES 主表名稱(主表列名稱)
ON UPDATE CASCADE ON DELETE CASCADE  ;

級聯刪除

ON UPDATE CASCADE

到此這篇關於MySQL約束超詳解的文章就介紹到這瞭,更多相關MySQL約束內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: