Mysql 常見約束

含義:一種限制,用於限制表中的數據,爲了保證表中的數據的準確和可靠性

分類:六大約束

1.not null 非空,保證該字段的只不能爲空

2.default 默認,用於保證該字段有默認值

3.primary key 主鍵,用於保證該字段的值唯一,且非空

4.unique 唯一,用於保證該字段的值唯一,但可以爲空

5.check 檢查約束(mysql中不支持)

6.foreign key 外鍵,用於限制兩個表的關係,用於保證該字段的值必須來自於主表的關聯列的值

添加的時機

1.創建表時

2.修改表時

 

約束的添加分類:

列級約束

六大約束語法均可,但外鍵約束沒有效果

表級約束

除了非空和默認,其他的都支持

 

一、創建表時添加約束

1.添加列級約束

create table stuinfo
(
        id int primary key,#主鍵
        stuName varchar(20) not null,#非空
        gender char(1) check(gender = '男' or gender = '女'),#檢查約束 
        seat int unique,#唯一約束
        age int default 18,#默認約束
        majorId int
        
) 

直接在字段名和類型名追加約束類型即可,check和外鍵不支持

2.添加表級約束

create table stuinfo
(
        id int,
        stuName varchar(20),
        gender char(1),
        seat int,
        age int,
        majorId int
        
        constraint pk primary key(id),#主鍵
        constraint uq unique(seat),#唯一
        constraint ck check(gender....)
        constraint fk_stufnfo_major foreign key(majorId) references major(id)#外鍵
        
) 

語法:在各個字段的最小碼

【constraint 約束名】 約束類型(字段名)【】內容可以省略

 

主鍵和唯一鍵的比較

  保證唯一性 是否允許爲空 一個表可以有多少個 是否允許組合
主鍵 可以 不可以 至多有一個 可以,但不推薦
唯一 可以 可以 可以有多個 可以,但不推薦

外鍵的要求:

1.要求從表設置外鍵關係

2.從表的外鍵列的類型和主表的關聯列的類型要求一致,名稱無要求

3.主表的關聯列必須是一個鍵(主鍵或唯一鍵)

4.插入數據時,先插入主表,再插入從表,刪除數據時,先刪除從表,再刪除主表

 

二、修改表時添加約束

1.添加列級約束

alter table 表名 modify column 列名 類型 約束名

2.添加表級別約束

alter table 表名 add unique(列名)

三、修改表時刪除約束

alter table 表名 modify column 列名 類型

或者

alter table 表名 drop 約束名

刪除唯一

alter table 表名 drop index 列名

刪除外鍵

alter table 表名 drop foreign key 外鍵名

刪除主鍵

alter table 表名 drop primary key

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章