MySQL中檢查約束舉例詳細(xì)講解
一. 簡(jiǎn)介
檢察約束屬于DDL
約束可以理解成一種校驗(yàn)方式
一共有5種約束,現(xiàn)在分別講解一下
- 主鍵約束(Primary Key)
不允許為空
不允許有重復(fù)值出現(xiàn)
保證數(shù)據(jù)的唯一性
- 外鍵約束(Foreign Key)
允許有空值
允許有重復(fù)
值必須是參照表的參照列中所包含的值
保證數(shù)據(jù)的參照完整性
- 唯一性約束(Unique)
相同值只能出現(xiàn)一次
允許為多個(gè)列添加唯一性約束
保證數(shù)據(jù)的唯一性
- 非空約束(Not Null)
列中不能有空值
允許重復(fù)值
允許為多個(gè)列添加非空約束
保證數(shù)據(jù)沒(méi)有空值
- 檢查約束(Check)
用戶自己定義約束條件
保證數(shù)據(jù)滿足自定義的條件約束
MySQL 目前不支持檢查約束
二. 主鍵約束(primary key)
1. 添加主鍵約束
alter table 表名 add primary key(列名)
例
顯然這里的id字段(列)要設(shè)置成主鍵
alter table students add primary key(id);
因?yàn)槭侵麈I,那么在當(dāng)前表中是唯一的
如果主鍵是 int 型,那么就可以使用自動(dòng)增長(zhǎng)
alter table 表名 modify 主鍵 類型 auto_increment
alter table student modify id int auto_increment
2. 刪除主鍵
alter table 表名 drop primary key
alter table students drop primary key;
三. 外鍵約束(Foreign Key)
1. 添加外鍵
alter table 表名 add constraint 約束名 foreign key(列名) references 參照的表名(參照的列名)單詞:
constraint : 約束
references:引用
alter table students add constraint fk_students_courses foreign key (course_id) references courses(id);
2. 刪除外鍵
alter table 表名 drop foreign key 約束名
alter table students drop foreign key fk_students_courses;
四. 唯一性約束(Unique)
1. 添加唯一約束
alter table 表名 add constraint 約束名 unique(列名)
alter table students add constraint uk_students_name unique (name);
2. 刪除唯一約束
alter table 表名 drop key 約束名
alter table students drop key uk_students_name;
五. 非空約束(Not Null)
1. 添加非空約束
alter table 表名 modify 列名 類型 not null單詞:
modify:修改
在修改的時(shí)候添加非空約束
alter table students modify name varchar(50) not null;
2. 刪除非空約束
alter table modify 列名 類型 null
alter table students modify name varchar(50) null;
六. 創(chuàng)建表時(shí)添加約束
直接可以在創(chuàng)建的時(shí)候順便添加約束
create table enhanced_students ( -- 添加主鍵約束,并自動(dòng)增長(zhǎng) id int auto_increment primary key, -- 添加非空約束(不能為空) name varchar(50) not null, gender enum('男', '女') not null, -- 添加唯一約束 students_name varchar(30) unique );
七. 總結(jié)
到此這篇關(guān)于MySQL中檢查約束的文章就介紹到這了,更多相關(guān)MySQL檢查約束內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL存儲(chǔ)過(guò)程輸入?yún)?shù)(in),輸出參數(shù)(out),輸入輸出參數(shù)(inout)
這篇文章主要介紹了MySQL存儲(chǔ)過(guò)程輸入?yún)?shù)(in),輸出參數(shù)(out),輸入輸出參數(shù)(inout),存儲(chǔ)過(guò)程就是一組SQL語(yǔ)句集,功能強(qiáng)大,可以實(shí)現(xiàn)一些比較復(fù)雜的邏輯功能,類似于JAVA語(yǔ)言中的方法;Python里面的函數(shù)2022-07-07MySQL下高可用故障轉(zhuǎn)移方案MHA的超級(jí)部署教程
這篇文章主要介紹了MySQL下高可用故障切換方案MHA的超級(jí)部署教程,文中隊(duì)MHA方案的一些特點(diǎn)做了介紹,示例基于Linux系統(tǒng)的服務(wù)器環(huán)境,需要的朋友可以參考下2015-12-12mysql 8.0.15 winx64壓縮包安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了mysql 8.0.15 winx64壓縮包安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05mysql查詢上下級(jí)機(jī)構(gòu)的方法實(shí)例
大家應(yīng)該都知道表里有上下級(jí)機(jī)構(gòu)的,下面這篇文章主要給大家介紹了關(guān)于mysql查詢上下級(jí)機(jī)構(gòu)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04分享一下Mysql常見的幾個(gè)錯(cuò)誤問(wèn)題及解決方法
這篇文章主要為大家分享一下Mysql常見的幾個(gè)錯(cuò)誤問(wèn)題及解決方法,需要的朋友可以參考下2015-08-08淺析SQL語(yǔ)句行列轉(zhuǎn)換的兩種方法 case...when與pivot函數(shù)的應(yīng)用
SQL語(yǔ)句行列轉(zhuǎn)換的兩種方法 case...when和pivot函數(shù)應(yīng)用,運(yùn)用pivot 函數(shù)只支持?jǐn)?shù)據(jù)庫(kù)版本2005以上的。一般運(yùn)用case when else end 的方法比較多,比較普遍2013-08-08MySQL數(shù)據(jù)庫(kù)備份方法說(shuō)明
MySQL數(shù)據(jù)庫(kù)備份方法說(shuō)明...2007-07-07MySQL group by分組后如何將每組所得到的id拼接起來(lái)
這篇文章主要介紹了MySQL group by分組后如何將每組所得到的id拼接起來(lái),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07MySQL數(shù)據(jù)庫(kù)中的TRUNCATE?TABLE命令詳解
這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)中TRUNCATE?TABLE命令的相關(guān)資料,Truncate Table“清空表”的意思,它對(duì)數(shù)據(jù)庫(kù)中的表進(jìn)行清空操作,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05