国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 新巴尔虎右旗| 梧州市| 灌阳县| 岑溪市| 台湾省| 马尔康县| 郎溪县| 汉沽区| 长汀县| 恩施市| 仪陇县| 大同县| 大名县| 兴和县| 微博| 林芝县| 通渭县| 万年县| 剑阁县| 湘潭县| 闽侯县| 水富县| 繁昌县| 邛崃市| 平乡县| 东阳市| 平武县| 沙坪坝区| 应城市| 达州市| 云梦县| 霍邱县| 灵台县| 应用必备| 灌南县| 吉林市| 德格县| 湟源县| 即墨市| 渭南市| 温泉县|