MySQL資料庫四大約束詳解

2021-08-25 02:40:58 字數 1978 閱讀 4100

在定義資料表的時候,預設情況下所有欄位是允許為空值的,如果需要禁止欄位為空,那麼就需要在建立表的時候顯示指定.

指定乙個欄位不為空的方式就是在字段定義後加上 not null.

非空約束不因對通過insert語句插入的資料起作用,而且對於使用update語句進行更新是也起作用.

它用於防止乙個特定的列中兩個記錄具有一定的值,如果希望乙個欄位在表中的值是唯一的.那麼就可以將唯一約束設定到這個欄位上,設定方式就是在字段定義後面加上unique,也可以在加上非空約束.

唯一約束可以新增到多個字段當中,也就是一張表中可以存在多個唯一約束,但是這樣的單字段約束只能約束''欄位a的值在表中不重複'',''欄位b的值在表中不重複'',卻不能約束欄位a的值和字段b的值同時重複,復合唯一約束是建立在多個欄位上的約束,被約束的字段不能同時重複,就是在表中復合唯一約束的兩個字段,不能同時出現第二次.比如,一條資料是 (1,2),就不能再出現一條同時包含(1,2)的資料.

語法:

constraint  約束的名字 unique (欄位a,欄位b)

給建好的表新增約束:

alter table 表名  add constraint 約束名 unique(欄位1,欄位2);

刪除約束:

alter table 表名drop index 約束名;

主鍵約束是非常重要的,而且主鍵約束是外來鍵關聯的基礎條件,主鍵約束為表之間的關聯提供了鏈結點.

主鍵必須能夠唯一標識一條記錄,也就是主鍵欄位中的值必須是唯一的,而且不能包含null值,也可以說主鍵約束是唯一約束和非空約束的組合.定義主鍵非常簡單.

語法:

在字段定義後 新增primary key 關鍵字就行.

除了這種單一字段組成的主鍵之外,還可以有多個欄位來組成主鍵,這樣的主鍵被稱為復合主鍵或者聯合主鍵.復合主鍵的定義個復合唯一約束的定義類似.

語法:

constraint 主鍵名 primary key(欄位1,欄位2),

儘管在建立表的時候定義乙個主鍵是好習慣,但是如果表建立了沒有定義主鍵,那麼也可以在後面新增主鍵,不過通過這種方式新增主鍵有乙個附件條件,那就是組成的主鍵的字段必須包含 not null約束,如果沒有新增非空約束的字段上建立主鍵,系統就會報錯.

語法:

alter table 表名 add constraint 主鍵名 primary key(欄位1,欄位2);

刪除主鍵:

alter table 表名 drop primary key;

自增列(主要用在給主鍵產生乙個唯一值)

create table course(

cid int primary key auto_increment, /*產生乙個自動增長的值*/

cname varchar(10)

);

不從1開始的例子

create table course(

cid int primary key auto_increment, /*產生乙個自動增長的值*/

cname varchar(10)

) auto_increment=1000;

注意:

使用了自增賦值,就不要手動賦值,否則就會使用手動賦的值.

當一些資訊在表中重複出現的時候,我們就要考慮將他們提取到另外一張表中,然後在原表中引用新建立表中的資料.

在刪除乙個表中的資料的時候,如果有其他的表存在外來鍵關係,那麼就會刪除失敗.必須把所有有關的資料刪除之後,才能刪除成功.

語法:

foreign key (外來鍵字段) references 外來鍵表名(外來鍵表中的主鍵字段)

資料庫五大約束

所謂約束,其實就是一種保障,比如乙個屬性新增了主鍵約束,那麼就強制保障了它的唯一性和非空性,請帶著這樣正確的理解去閱讀後文。資料庫有五大約束,分別是 主鍵約束的要求是 唯一,非空 因此主鍵不需要 也不能再設定唯一約束了。另外,主鍵可以設定自動增長,而且,主鍵不一定是自動增長的,但自動增長的一定是主鍵...

資料庫五大約束

資料庫中的五種約束 資料庫中的五種約束及其新增方法 五大約束 1.主鍵約束 primay key coustraint 唯一性,非空性 2.唯一約束 unique counstraint 唯一性,可以空,但只能有乙個 3.檢查約束 check counstraint 對該列資料的範圍 格式的限制 如...

資料庫約束六大約束語句

新增 not null alter table user modify name varchar 20 not null 刪除 not null alter table user modify name varchar 20 新增 unique alter table user add unique...