国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL約束類型及舉例介紹

2024-07-25 19:09:10
字體:
供稿:網(wǎng)友

約束

  • 約束保證數(shù)據(jù)的完整性和一致性
  • 約束分為表級約束和列級約束
  • 約束類型包括:NOT NULL (非空約束),PRIMARY KEY(主鍵約束),UNIQUE KEY(唯一約束),DEFAULT(默認約束),F(xiàn)OREIGN(外鍵約束)

1.主鍵約束

  • PRIMARY KEY
  • 每張數(shù)據(jù)表只能存在一個主鍵
  • 主鍵保證記錄的唯一性,主鍵的值不重復
  • 主鍵自動為 NOT NULL

舉例,創(chuàng)建一張student表,將學號設置為主鍵創(chuàng)建完表之后,通過SHWO COLUMNS FROM student查看表結(jié)構(gòu)

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

2.唯一約束

  • UNIQUE KEY
  • 唯一約束可以保證記錄的唯一性
  • 唯一約束的字段可以為空值(NULL)
  • 每張數(shù)據(jù)表可以存在多個唯一約束

舉例,創(chuàng)建一個teacher表,id字段自增,tea_name唯一

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

3.默認約束

  • DEFAULT
  • 當插入記錄時,如果沒有明確為字段賦值,則自動賦予默認值

舉例,創(chuàng)建一張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" 表創(chuàng)建時在 Id列、name列創(chuàng)建 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
  • 保持數(shù)據(jù)的一致性,完整性
  • 實現(xiàn)1對1或1對n關(guān)系

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

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 : 從父表刪除或更新且自動刪除或更新子表中匹配的行
  • 父表中被引用的列刪除了某個數(shù)據(jù),子表中刪除對應數(shù)據(jù)的行
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
  • 父表中刪除數(shù)據(jù),將子表中的引用設置為NULL
  • RESTRICT:拒絕對父表的刪除或更新操作
  • NO ACTION:標準SQL的關(guān)鍵字,在MySQL中與RESTRICT相同

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到MYSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 汾西县| 鞍山市| 农安县| 吴川市| 闵行区| 明水县| 科尔| 五莲县| 秀山| 河北区| 木兰县| 枞阳县| 中超| 栾城县| 罗定市| 舞钢市| 富阳市| 娱乐| 阳江市| 思茅市| 普陀区| 灵璧县| 汶上县| 富顺县| 甘肃省| 龙岩市| 集贤县| 潜江市| 金溪县| 康定县| 玉树县| 临泽县| 叙永县| 逊克县| 沐川县| 伊宁县| 敖汉旗| 中超| 瑞安市| 黄平县| 娱乐|