1. 程式人生 > 資料庫 >MySQL約束型別及舉例介紹

MySQL約束型別及舉例介紹

約束

  • 約束保證資料的完整性和一致性
  • 約束分為表級約束和列級約束
  • 約束型別包括:NOT NULL (非空約束),PRIMARY KEY(主鍵約束),UNIQUE KEY(唯一約束),DEFAULT(預設約束),FOREIGN(外來鍵約束)

1.主鍵約束

  • PRIMARY KEY
  • 每張資料表只能存在一個主鍵
  • 主鍵保證記錄的唯一性,主鍵的值不重複
  • 主鍵自動為 NOT NULL

舉例,建立一張student表,將學號設定為主鍵建立完表之後,通過SHWO COLUMNS FROM student查看錶結構

CREATE TABLE student(
id int PRIMARY KEY,stu_name varchar(20)
);

2.唯一約束

  • UNIQUE KEY
  • 唯一約束可以保證記錄的唯一性
  • 唯一約束的欄位可以為空值(NULL)
  • 每張資料表可以存在多個唯一約束

舉例,建立一個teacher表,id欄位自增,tea_name唯一

CREATE TABLE teacher(
id int AUTO_INCREMENT PRIMARY KEY,tea_name varchar(20) NOT NULL UNIQUE KEY
);

3.預設約束

  • DEFAULT
  • 當插入記錄時,如果沒有明確為欄位賦值,則自動賦予預設值

舉例,建立一張course表,預設上課時間為40分鐘

CREATE TABLE course(
id int AUTO_INCREMENT PRIMARY KEY,cou_name varchar(20) NOT NULL UNIQUE KEY,time int DEFAULT 40
);
INSERT INTO course(cou_name) values('語文');

4.非空約束

  • NOT NULL
  • 強制列不能為 NULL 值,約束強制欄位始終包含值。
  • 這意味著,如果不向欄位新增值,就無法插入新記錄或者更新記錄。

舉例,在 "Persons" 表建立時在 Id列、name列建立 not null 約束:

create table Persons(
id int not NULL,p_name varchar(20) not null,deparment varchar(20),address varchar(20),telNum varchar(20)
)
DESC Persons;

5.外來鍵約束

  • FOREIGN KEY
  • 保持資料的一致性,完整性
  • 實現1對1或1對n關係

1.父表與子表必須使用相同的儲存引擎,而且禁止使用臨時表。
2.資料表的儲存引擎只能是InnoDB
3.外來鍵列和參照列必須具有相似的資料型別。其中數字的長度或是否有符號位必須相同;而字元的長度則可以不同。
4.外來鍵列和參照列必須建立索引。如果外來鍵列不存在索引的話,MySQL將自動建立索引。

CREATE TABLE school(
id int AUTO_INCREMENT PRIMARY KEY,sname varchar(20) NOT NULL
);
CREATE TABLE student2(
id int AUTO_INCREMENT PRIMARY KEY,sid int,FOREIGN KEY (sid) REFERENCES school(id)
);

外來鍵約束的參照操作

  • CASCADE : 從父表刪除或更新且自動刪除或更新子表中匹配的行
  • 父表中被引用的列刪除了某個資料,子表中刪除對應資料的行
CREATE TABLE student3(
id int AUTO_INCREMENT PRIMARY KEY,FOREIGN KEY (sid) REFERENCES school(id) ON DELETE CASCADE
);
  • SET NULL:從父表刪除或更新行,並設定子表的外來鍵列為NULL。如果使用該項,必須保證子表列沒有指定NOT NULL
  • 父表中刪除資料,將子表中的引用設定為NULL
  • RESTRICT:拒絕對父表的刪除或更新操作
  • NO ACTION:標準SQL的關鍵字,在MySQL中與RESTRICT相同

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支援。如果你想了解更多相關內容請檢視下面相關連結