Mysql數(shù)據(jù)庫之約束條件詳解
一、主鍵約束
主鍵約束(PRIMARY KEY constraint)用于唯一標識數(shù)據(jù)庫表中的每條記錄。
語法:
create table 表名 ( 列名1 數(shù)據(jù)類型 primary key, 列名2 數(shù)據(jù)類型, ... );
在主鍵的后面添加:auto_increment, 可以讓主鍵自增。
設(shè)置auto_increment之后,可以不用設(shè)置id, id會自增。
創(chuàng)建表之后再創(chuàng)建主鍵的語法:alter table 表名 add primary key (列名1, 列名2, ...);
二、非空約束
非空約束是一種數(shù)據(jù)庫約束,用于確保表中的某個列不接受空值。當為表的某個列定義了非空約束后,插入或更新該列時,必須提供非空的值。
語法:
create table 表名 ( 列名 數(shù)據(jù)類型 not null, ... );
創(chuàng)建表之后再設(shè)置非空的語法:alter table 表名 modify 列名 數(shù)據(jù)類型 not null;
三、唯一約束
唯一約束是一種數(shù)據(jù)庫約束,用于確保表中的某個列或一組列的值是唯一的,即不允許重復值。唯一約束是一種數(shù)據(jù)完整性措施,它可以保證數(shù)據(jù)的唯一性和一致性。
語法:
create table 表名 ( 列名2 數(shù)據(jù)類型 unique, ... );
在創(chuàng)建好的表中添加唯一約束:alter table 表名 add constraint 約束名 unique (列名1, 列名2, ...);
四、默認值約束
默認值約束是一種數(shù)據(jù)庫約束,用于在插入數(shù)據(jù)時,如果未顯式為列指定值,則自動使用指定的默認值,是一種數(shù)據(jù)完整性措施,它確保了在缺少顯式值的情況下,表中的列始終具有默認值。
語法:
Create table 表名 ( 列名1 數(shù)據(jù)類型 default 默認值, 列名2 數(shù)據(jù)類型 default 默認值, ... );
在創(chuàng)建好的表中添加默認值約束:alter table 表名 alter colum 列名 set default 默認值;
五、外鍵約束
外鍵約束是一種數(shù)據(jù)庫約束,用于在相關(guān)表之間建立關(guān)聯(lián)關(guān)系,保持數(shù)據(jù)的完整性和一致性。
外鍵約束可以確保在一個表中的列值必須在另一個表中存在。
語法:
Create table 表名 ( 列名1 數(shù)據(jù)類型, 列名2 數(shù)據(jù)類型, ... foreign key (列名) references 關(guān)聯(lián)表名(關(guān)聯(lián)列名) );
例:作者和文章的關(guān)系是:1:N, 外鍵存在多的一方,所以外鍵設(shè)在文章表, 所以先創(chuàng)建作者表。
創(chuàng)建作者表:
創(chuàng)建文章表,并設(shè)置外鍵:
在創(chuàng)建好的表中添加外鍵約束(約束名自己命名):
alter table 表名 add constraint 約束名 foreign key (列名) references 關(guān)聯(lián)表名(關(guān)聯(lián)列名);
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL開啟慢查詢?nèi)罩緇og-slow-queries的方法
MySQL中提供了一個慢查詢的日志記錄功能,可以把查詢SQL語句時間大于多少秒的語句寫入慢查詢?nèi)罩荆粘>S護中可以通過慢查詢?nèi)罩镜挠涗浶畔⒖焖贉蚀_地判斷問題所在2016-05-05一文搞定MySQL binlog/redolog/undolog區(qū)別
這篇文章主要介紹了一文搞定MySQL binlog/redolog/undolog區(qū)別,作為開發(fā),我們重點需要關(guān)注的是二進制日志(binlog)和事務(wù)日志(包括redo log和undo log),本文接下來會詳細介紹這三種日志,需要的朋友可以參考下2023-04-04MySQL中幾種數(shù)據(jù)統(tǒng)計查詢的基本使用教程
這篇文章主要介紹了幾種MySQL中數(shù)據(jù)統(tǒng)計查詢的基本使用教程,包括平均數(shù)和最大最小值等的統(tǒng)計結(jié)果查詢方法,是需要的朋友可以參考下2015-12-12MySQL中distinct和count(*)的使用方法比較
這篇文章主要針對MySQL中distinct和count(*)的使用方法比較,對兩者之間的使用方法、效率進行了詳細分析,感興趣的小伙伴們可以參考一下2015-11-11