MySQL學習筆記4 完整性約束

2021-07-05 18:37:23 字數 3063 閱讀 7951

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

比如字段含有預設值,不能是null等

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

設定表的主鍵

主鍵能夠標識表中每條資訊的唯一性,如同身份證號碼和人的關係

人可以同名,但是身份證號碼卻是唯一的,

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

單字段主鍵

mysql>

create

table student(

-> id int

primary

key,

-> name varchar(20),

-> *** boolean

-> );

query ok,0rows affected (0.09sec)

建立了三個字段,其中id為主鍵

多欄位主鍵

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

mysql>

create

table student2(

-> id int,

-> course_id int,

-> score float,

->

primary

key(id,course_id)

-> );

query ok,0rows affected (0.11sec)

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,0rows affected (0.12sec)

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

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

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

設定表的非空約束

非空性很好理解,就是設定表中字段的值不能為空(null)

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

mysql>

create

table student4(

-> id int

notnull,

-> name varchar(20),

-> *** boolean

-> );

query ok,0rows affected (0.10sec)

這裡的not null就是約束條件

設定表的唯一性約束

唯一性是指表中該字段的值不能重複出現,設定表的唯一性約束

也就是給表中某個字段加上unique

mysql>

create

table student5(

-> id int

unique,

-> name varchar(20)

-> );

query ok,0rows affected (0.10sec)

此處id欄位便不可重複

設定表的屬性值自動增加

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

乙個表只能有乙個字段使用auto_increment約束

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

mysql>

create

table student6(

-> id int

primary

key auto_increment,

-> name varchar(20)

-> );

query ok,0rows affected (0.12sec)

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

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

設定表中屬性的預設值

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

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

mysql>

create

table student7(

-> id int

primary

key,

-> score int

default

0

-> );

query ok,0rows affected (0.10sec)

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

MySQL完整性約束

create database adrui show databases use adrui not null 非空約束,插入資料該欄位不能為空 primary key 主鍵約束 主鍵約束相當於非空約束 唯一約束,auto increment是mysql擴充套件的字段值自加的約束,約束字段資料型別必...

Mysql 完整性約束

定義 完整性約束是對字段進行限制,從而符合該欄位達到我們期望的效果比如字段含有預設值,不能是null等,主要有唯 一 自增 主鍵 外來鍵約束 唯一約束 唯一約束可以有多個但索引列的值必須唯一,索引列的值允許有空值。如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該使用關...

完整性約束

create table student tb id int notnull 非空約束 資料不允許為空 name varchar 255 null 顯式指定允許為空 新增非空約束 alter table 表名 modify column 屬性名 屬性型別 not null alter table s...