約束
約束是給表中的資料新增的強制執行的校驗規則,被增、刪、改的資料必須符合約束條件,查詢到的資料才是合理的。
關係型資料庫中有5個完整性約束:
非空約束
唯一性約束
主鍵約束
外來鍵約束
檢查約束
非空約束:not null
值不能為空,列級約束,約束條件寫在列的後面,僅對某列有效
非空約束
唯一性約束:unique
值不能重複,(可以有多個null,null不是值),列級約束、表級約束。
寫在列的後面,可以給某一列新增唯一性約束。
唯一性列級約束
也可以寫在表的後面,給多列一起做唯一性約束。
唯一性表級約束
說明:id,name組合唯一性約束
給組合的約束鍵起名:
組合的**約束鍵**起名
主鍵約束:primary key
值非空且唯一,能夠唯一標識該條記錄,是列級約束或表級約束。一張表中只能有乙個主鍵。
主鍵約束
表級約束寫法:
表級約束寫法
外來鍵約束:foreign key
值是另一張表的主鍵,若有值一定是主鍵的值。主鍵表稱為主表,使用主鍵做外來鍵的表成為從表。首先定義主表,然後定義從表。使用外來鍵表必須是innodb引擎。
定義主表:
主表定義從表:
從表檢查約束:check
mysql不支援檢查約束
自增長auto_increment,一般用於主鍵,需要列為數值型別。
預設值deafult '預設值',設定字段預設值。
索引一張表對應3個檔案:
frm結構檔案
myd資料檔案
myi索引檔案
刪除對應檔案關係:
刪除命令
對應檔案
drop
刪除frm,myd,myi
truncate
刪除myi,myd刪除了日誌資訊
delete
刪除myd在myi檔案中保留著索引記錄
修改約束
alter語句修改約束
新增新列並設定主鍵:alter table 表名 add 列名 int primary key;
刪除主鍵:alter table 表名 drop primary key;
已有列新增主鍵:alter table 表名 add primary key(列名);
新增外來鍵:alter table 從表名 add constraint 從表外鍵名 foreign key(從表外來鍵列名) references 主表名(主表主鍵列名);
刪除外來鍵:alter table 從表名 drop foreign key 外鍵名 ;
唯一性約束的新增和刪除
新增:alter table add constraint 定義的約束名 unique (列名);
刪除:drop index 定義的約束名 on 表名
修改:alter table 表名 modify 列名 列型別;
預設值的新增和刪除
新增:alter table 表名 alter column 列名 set default 預設值;
刪除:alter table 表名 alter column 列名 drop default;
mysql新增構成組合約束 Mysql中約束詳解
約束定義 約束是用來限定表中資料準確性 完整性 一致性 聯動性的一套規則。在mysql中,約束儲存在information schema資料庫的table constraints中,可以通過該錶查詢約束資訊。如下圖 常見的約束 not null not null為非空約束,指定某一行的值不能為nul...
mysql 新增約束 mysql怎麼新增約束?
在mysql資料庫中,建表時就可以進行對錶的各項進行一些操作,例如新增主鍵約束或者非空約束 也可以在建表後進行新增約束和刪除約束的操作。下面本篇文章就來帶大家具體了解一下,希望對大家有所幫助。什麼是約束?約束實際上就是表中資料的限制條件 目的是為了保證表中的記錄完整和有效。常用的約束有 1 非空約束...
mysql新增約束
第一種,建立表時新增約束 create table table name 列名1 資料型別 int primary key auto increment,列名2 資料型別 not null,列名3 資料型別 unique,列名4 資料型別 default 值 constraint 索引名 forei...