約束
約束保證資料的完整性和一致性
約束分為表級約束和列級約束
約束型別包括: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怎麼約束 mysql 約束
4 約束 1 對乙個列新增的約束叫列級約束。對兩個或兩個以上的列新增的約束叫做表級約束。2 表級約束只能在字段後面新增,列級約束既可以新增在字段後面,也可以在最後新增。3 非空 預設只存在列級約束。主鍵 唯 一 外來鍵都既有表級約束又有列級約束。4 約束有 primary key 主鍵 unique...
mysql約束 MySQL 約束型別
約束是一種限制,它通過對錶的行或列的資料做出限制,來確保表的資料的完整性 唯一性。mysql中,常用的幾種約束 約束型別 主鍵外來鍵唯一非空自增預設值 關鍵字 primary key foreign key unique not null auto increment default 1 主鍵約束 ...
mysql怎麼約束 MySQL 約束詳解
mysql 約束詳解 mysql 中的約束是用來保證資料的完整性的機制。資料完整性一般有以下三種形式 實體完整性 保證表中有乙個主鍵。域完整性 保證資料每列的值滿足特定條件。引用完整性 保證兩張表之間的引用關係。以上三種形式的完整性在 mysql 中都有相應約束進行保證。使用主鍵和唯一鍵約束可以保證...