1、常見約束
not null:非空約束,針對某個字段設定其值不為空,如:學生的姓名不能為空。
unique:唯一約束,它可以使某個欄位的值不能重複,如:email不能重複:
primary key:主鍵約束,每個表應該具有主鍵,主鍵可以標識記錄的唯一性,主鍵分為單一主鍵和復合(聯合)主鍵,單一主鍵是由乙個字段構成的,復合(聯合)主鍵是由多個字段構成的。
foreign key:外來鍵約束,外來鍵主要是維護表之間的關係的,主要是為了保證參照完整性,如果表中的某個欄位為外來鍵字段,那麼該字段的值必須**於參照的表的主鍵,如:emp中的deptno值必須**於dept表中的deptno字段值。
注意:當乙個表中存在外來鍵約束時,比如a表中有乙個外來鍵來自b表,那麼刪除資料的時候的時候要先刪除a表中的引用記錄,再刪除b表中的資料。
2、乙個完整的建立表並新增約束的模板
drop table if exists t_classes;
create table t_classes(
classes_idint (3),
classes_namevarchar(30)not null,
constraintpk_classes_idprimary key(classes_id)
drop table if exists t_student;
create table t_student(
student_idint(10),
student_name varchar(50) not null,
***char(2) not null,
birthdaydate not null,
emailvarchar(30) unique,
classes_idint (3) not null,
constraintpk_student_idprimary key(student_id),
constraintfk_classes_idforeign key(classes_id) references t_classes(classes_id)
3、級聯更新與級聯刪除
當乙個表中存在外來鍵約束時,刪除和修改都會是乙個比較令人頭疼的事情,一不小心就會報錯。可以採用級聯的方法去解決這個問題。
on update cascade 級聯更新
mysql對有些約束的修改比較麻煩,所以我們可以先刪除,再新增
alter table t_student drop foreign key fk_classes_id;
alter table t_student add constraint fk_classes_id_1 foreign key(classes_id) references t_classes(classes_id) on update cascade;
on delete cascade 級聯刪除
mysql對有些約束的修改時不支援的,所以我們可以先刪除,再新增
alter table t_student drop foreign key fk_classes_id;
alter table t_student add constraint fk_classes_id_1 foreign key(classes_id) references t_classes(classes_id) on delete cascade;
delete from t_classes where classes_id = 20;
4、新增約束
① 新增外來鍵約束:alter table 從表 add constraint 約束名稱 foreign key 從表(外來鍵字段) references 主表(主鍵字段);
示例:alter table t_student add constraint fk_classes_id_1 foreign key(classes_id) references t_classes(classes_id);
② 新增主鍵約束:alter table 表 add constraint 約束名稱 primary key 表(主鍵字段);
示例:alter table t_student add constraint pk primary key(student_id);
③ 新增唯一性約束:alter table 表 add constraint 約束名稱 unique 表(字段);
示例:alter table t_student add constraint uk unique(email);
5、修改約束
alter table t_student modify student_name varchar(30) unique;
mysql對有些約束的修改時不支援,所以我們可以先刪除,再新增
6、刪除約束
刪除外來鍵約束:alter table 表名 drop foreign key 約束名;
刪除主鍵約束:alter table 表名 drop primary key ;
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 中都有相應約束進行保證。使用主鍵和唯一鍵約束可以保證...