完整性約束是對字段進行限制,從而符合該欄位達到我們期望的效果
比如字段含有預設值,不能是null等
直觀點說:如果插入的資料不滿足限制要求,資料庫管理系統就拒絕執行操作
設定表的主鍵
主鍵能夠標識表中每條資訊的唯一性,如同身份證號碼和人的關係
人可以同名,但是身份證號碼卻是唯一的,
建立主鍵的目的在於快速查詢到表中的某一條資訊
單字段主鍵
mysql>建立了三個字段,其中id為主鍵create
table student(
-> id int
primary
key,
-> name varchar(20),
-> *** boolean
-> );
query ok,0rows affected (0.09sec)
多欄位主鍵
多欄位主鍵由多個屬性組合而成,在屬性定義完之後統一設定主鍵
mysql>student2表有三個字段,其中id和course_id的組合可以確定唯一的一條記錄create
table student2(
-> id int,
-> course_id int,
-> score float,
->
primary
key(id,course_id)
-> );
query ok,0rows affected (0.11sec)
設定表的外來鍵
表的外來鍵與主鍵是相對應的,比如表a中的id是外來鍵,表b中的id是主鍵
那麼就可以稱表b為父表,表a為子表
設定表外來鍵的作用在於建立與父表的聯絡,比如表b中id為123的學生刪除後,表a中id為123的記錄也隨著消失
這樣做的目的在於保證表的完整性
mysql>這裡建立student3表,constraint後面的fk是外來鍵別名,foreign key也就是設定外來鍵的字段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)
references後的內容表示父表,和父表中的主鍵
需要注意的是,父表中的主鍵不能為空,並且主鍵和外來鍵的資料型別要一致
設定表的非空約束
非空性很好理解,就是設定表中字段的值不能為空(null)
如果在已經設定此約束性條件的字段中插入空值,資料庫系統則會報錯
mysql>這裡的not null就是約束條件create
table student4(
-> id int
notnull,
-> name varchar(20),
-> *** boolean
-> );
query ok,0rows affected (0.10sec)
設定表的唯一性約束
唯一性是指表中該字段的值不能重複出現,設定表的唯一性約束
也就是給表中某個字段加上unique
mysql>此處id欄位便不可重複create
table student5(
-> id int
unique,
-> name varchar(20)
-> );
query ok,0rows affected (0.10sec)
設定表的屬性值自動增加
auto_increment主要用於為表中插入的新記錄自動生成唯一的id
乙個表只能有乙個字段使用auto_increment約束
並且該欄位必須為主鍵的一部分
mysql>這裡的id是主鍵,並且會自動增加id值,比如1,2,3,4……create
table student6(
-> id int
primary
key auto_increment,
-> name varchar(20)
-> );
query ok,0rows affected (0.12sec)
需要注意的是,auto_increment約束的值必須是整數型別
設定表中屬性的預設值
在表中插入一條新的記錄時,如果沒有為該字段賦值
那麼資料庫系統會自動為該字段賦上一條預設值
mysql>此處的score欄位便會預設為0create
table student7(
-> id int
primary
key,
-> score int
default
0
-> );
query ok,0rows affected (0.10sec)
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...