mysql約束教程 mysql教程(七) 約束詳解

2021-10-17 21:50:04 字數 2442 閱讀 5375

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 中都有相應約束進行保證。使用主鍵和唯一鍵約束可以保證...