您好,登錄后才能下訂單哦!
這篇文章主要介紹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, sid int, FOREIGN KEY (sid) REFERENCES school(id) ON DELETE CASCADE );
SET NULL:從父表刪除或更新行,并設置子表的外鍵列為NULL。如果使用該項,必須保證子表列沒有指定NOT NULL
父表中刪除數據,將子表中的引用設置為NULL
RESTRICT:拒絕對父表的刪除或更新操作
NO ACTION:標準SQL的關鍵字,在MySQL中與RESTRICT相同
以上是“MySQL約束類型的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。