MySql中的完整性約束

2021-10-08 11:21:54 字數 2220 閱讀 3031

列級約束:對乙個資料列建立的約束

表級約束:對多個資料列建立的約束

列級約束既可以在定義時宣告,也可以在定以後宣告。表級約束只能在列定義後宣告。

mysql中的完整性約束主要包括下面這些:

not null

非空約束,當我們給某個字段新增非空約束後,我們新增的記錄的時候,就必須給該字段賦值,如果不賦值則會報錯。

auto_increment

自動編號,且必須與主鍵組合使用;預設情況下,起始值為1,每次的增量為1.這樣就可以保證該字段的唯一性。

primary key

主鍵約束,每張資料表只能存在乙個主鍵,主鍵保證的記錄的唯一性,主鍵自動為not null。如果我們只設定主鍵,而不設定auto_increment,當我們插入記錄的時候,需要自己主動新增主鍵字段,並且主鍵字段不能重複。如果,我們給某個字段同時新增primary key和auto_increment。那麼就不需要,我們主動新增該欄位,mysql會自動的幫我們新增該欄位。一般我們在乙個表中通常會新增乙個id欄位並同時新增primary key和auto_increment。該欄位沒有任何具體的含義,主要是為了保證記錄的唯一。

unique key

唯一約束,也可以保證表中某個欄位的惟一性。與primary key不同的地方是唯一約束的字段可以為空值,而且一張表中可以同時存在多個唯一約束。而主鍵約束在一張表中只存在乙個。

default

預設約束,如果我們給乙個字段新增預設約束。當插入記錄時,如果我們給該字段賦值了,該字段的值即為我們設定的值。如果沒有給該字段明確賦值,則自動賦予預設值。

foreign key

1 具有外來鍵列的表為字表,字表外來鍵列參照的表為父表

2 父表和子表必須使用相同的儲存引擎,而且禁止使用臨時表。

3 資料表的儲存引擎只能為innodb

4 外來鍵列和參照列必須具有相似的資料型別。其中數字的長度或是否有符號位必須相同;而字元的長度則可以不同。

5 外來鍵列和參照列必須建立索引。如果外來鍵列不存在索引的話,mysql將自動建立索引。

編輯資料表的預設儲存引擎

在mysql的安裝目錄中找到my.ini,在my.ini檔案中找到default-storage-engine=innodb,可以看出缺省的儲存引擎innodb,在這裡我們也可以自己修改預設的儲存引擎。修改後需要重啟mysql服務。

外來鍵約束的參照操作

1 cascade:從父表刪除或更新行同時自動刪除或更新子表中匹配的行

2 set null:從父表刪除或更新行同時設定子表中的外來鍵列為null。如果使用該選項,必須保證子表列沒有指定not null

3 restrict:拒絕對父表的刪除或更新操作。

4 no action:標準sql的關鍵字,在mysql中與restrict相同

在實際開發過程中很少使用物理的外來鍵約束,一般都使用邏輯的外來鍵約束(即我們定義表的結構的時候,按照表的邏輯結構去定義,但不使用關鍵字foreign key)。因為foreign key 只支援innode引擎,不支援其他的引擎。

create table subject(

id int unsigned primary key auto_increment,

username varchar(

20) unique not null );

create table user(

id int unsigned primary key auto_increment, 建立id並設定auto_increment

username varchar(

20) unique not null, 將username新增唯一約束,並且非空

age smallint unsigned default 20

, 將age的預設值設定為20

sid int unsigned,

foreign key (sid) references subject(

id) on delete cascade

); 將user表中的sid欄位設為外來鍵,參照subject表中的id欄位,外來鍵約束參照操作on delete cascade, 即從父表中刪除記錄時,同時刪除子表中相關聯的記錄

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...