MySQL學習筆記4:完整性條件約束

來源:互聯網
上載者:User

完整性條件約束是對欄位進行限制,從而符合該欄位達到我們期望的效果

比如欄位含有預設值,不能是NULL等

直觀點說:如果插入的資料不滿足限制要求,資料庫管理系統就拒絕執行操作

 

設定表的主鍵

主鍵能夠標識表中每條資訊的唯一性,如同社會安全號碼碼和人的關係

人可以同名,但是社會安全號碼碼卻是唯一的,

建立主鍵的目的在於快速尋找到表中的某一條資訊

 

單欄位主鍵
mysql> create table student(    -> id int primary key,    -> name varchar(20),    -> sex boolean    -> );Query OK, 0 rows affected (0.09 sec)

建立了三個欄位,其中id為主鍵

 

多欄位主鍵

多欄位主鍵由多個屬性群組合而成,在屬性定義完之後統一設定主鍵

mysql> create table student2(    -> id int,    -> course_id int,    -> score float,    -> primary key(id,course_id)    -> );Query OK, 0 rows affected (0.11 sec)

student2表有三個欄位,其中id和course_id的組合可以確定唯一的一條記錄

 

設定表的外鍵

表的外鍵與主鍵是相對應的,比如表A中的id是外鍵,表B中的id是主鍵

那麼就可以稱表B為父表,表A為子表

設定表外鍵的作用在於建立與父表的聯絡,比如表B中id為123的學生刪除後,表A中id為123的記錄也隨著消失

這樣做的目的在於保證表的完整性

mysql> create table student3(    -> id int primary key,    -> course_id int,    -> teacher varchar(20),    -> constraint fk foreign key(id,course_id)    -> references student2(id,course_id)    -> );Query OK, 0 rows affected (0.12 sec)

這裡建立student3表,constraint後面的fk是外鍵別名,foreign key也就是設定外鍵的欄位

references後的內容表示父表,和父表中的主鍵

需要注意的是,父表中的主鍵不可為空,並且主鍵和外鍵的資料類型要一致

 

設定表的非空約束

非空性很好理解,就是設定表中欄位的值不可為空(NULL)

如果在已經設定此約束性條件的欄位中插入空值,資料庫系統則會報錯

mysql> create table student4(    -> id int not null,    -> name varchar(20),    -> sex boolean    -> );Query OK, 0 rows affected (0.10 sec)

這裡的not null就是約束條件

 

設定表的唯一性限制式

唯一性是指表中該欄位的值不能重複出現,設定表的唯一性限制式

也就是給表中某個欄位加上unique

mysql> create table student5(    -> id int unique,    -> name varchar(20)    -> );Query OK, 0 rows affected (0.10 sec)

此處id欄位便不可重複

 

設定表的屬性值自動增加

auto_increment主要用於為表中插入的新記錄自動產生唯一的ID

一個表只能有一個欄位使用auto_increment約束

並且該欄位必須為主鍵的一部分

mysql> create table student6(    -> id int primary key auto_increment,    -> name varchar(20)    -> );Query OK, 0 rows affected (0.12 sec)

這裡的id是主鍵,並且會自動增加id值,比如1,2,3,4……

需要注意的是,auto_increment約束的值必須是整數類型

 

設定表中屬性的預設值

在表中插入一條新的記錄時,如果沒有為該欄位賦值

那麼資料庫系統會自動為該欄位賦上一條預設值

mysql> create table student7(    -> id int primary key,    -> score int default 0    -> );Query OK, 0 rows affected (0.10 sec)

此處的score欄位便會預設為0

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.