MySQL表的約束

2021-09-27 16:07:39 字數 1923 閱讀 3991

為了保證資料的合法性,也可以說是資料的正確性,需要在屬性上加一些約束,在表的角度下屬性就是乙個列的屬性。

1. 空屬性

在乙個表中,有些屬性是不能為空的,如乙個學生資訊表中,學生姓名、學號等不能為空。

空屬性有兩個值:null(預設的)和not null(不為空)

在前面建立表時,屬性都是預設空的,因此我們插入資料時,沒有新增資料的列都是空的,如:

但是我們應該盡可能保證欄位不為空,因為資料為空沒辦法參與運算。

於是在建立表的時候,不能為空的列我們就要加入not null這個屬性。

2. 預設值

預設值:如果沒有給該列資料,則會自動填充,通常是某個列經常性的出現某個具體的值,可以在一開始就指定好,這就是預設值。注意下圖方框的插入形式

通過字面意思就是,填充0 的意思,沒錯,當給資料型別的時候,是規定了長度的,如char(10),也就是 10 個長度的寬度,但是只給了 5 個長度的,於是會填充 5 個 0。如:

4. 主鍵

primary key用來唯一的約束該欄位裡面的資料,不能重複,不能為空,一張表中最多只能有乙個主鍵,主鍵所在的列通常是整數型別。主鍵也可以有復合主鍵,復合主鍵就是多個屬性組合成的主鍵。

主鍵的建立方式有三種:

在建立表的時候,建立主鍵。

建立表之後,新增主鍵。

語句的最後新增復合主鍵。

刪除主鍵

alter

table 表名 drop

primary

key;

5. 唯一鍵

由於乙個表中只能有乙個主鍵,但是可能會有很多不能重複的屬性,這裡會不會有這樣乙個疑問?把重複的屬性弄成復合主鍵,注意==復合主鍵:(『曹孟德』, 10)(『曹操』, 20)==是不同的主鍵,也就是說只要組合不同,就是不同的主鍵。

因此一鍵就可以解決表中有多個字段需要唯一性約束的問題。

唯一鍵的本質和主鍵差不多,唯一鍵允許為空,而且可以多個為空,空字段不做唯一性比較。

6. 外來鍵

外來鍵用於定義主表和從表之間的關係:外來鍵是主表的主鍵,外來鍵在從表中是乙個屬性,其實就是乙個鍵把兩個表聯絡起來了。

如:先建立乙個班級的主表:

7. 自增長

這個就是一般用在編號上,讓其自己增長。

Mysql 表的約束

約束型別 說明主鍵約束 primary key 要求主鍵列資料唯一,並且不允許空。主鍵可以包含表的一列或多列,如果包含火烈,則序號在表級定義。唯一約束 unique 要求該列唯一,允許為空。檢查約束 check 某列取值範圍限制 格式等限制,如年齡的約束。非空約束 not null 某類內容不能為空...

MySQL 表的約束

為了防止錯誤資料的產生,在mysql中定義了一些維護資料庫完整性的規則即表的約束,如下表所示 表的約束 約束條件 說明primary key 主鍵約束,用於標識唯一對應的記錄 例如賬號 foreign key 外來鍵約束 not null 非空約束 unique 唯一性約束 default 預設值約...

MySQL 表的約束

create table tt6 age tinyint not null,name varchar 5 not null,char 2 default 男 建立乙個名為tt6的字段,age欄位為tinyint型,不可為空,name欄位為varchar 5 不可為空,欄位為char 2 型別,預設值...