一、常見的約束
NOT NULL
:非空,該字段的值必填
UNIQUE
:唯一,該字段的值不可重復(fù)
DEFAULT
:默認(rèn),該字段的值不用手動(dòng)插入有默認(rèn)值
CHECK
:檢查,
PRIMARY KEY
:主鍵,該字段的值不可重復(fù)并且非空 unique not null
FOREIGN KEY
:外鍵,該字段的值引用了另外的表的字段
主鍵和唯一
1、區(qū)別:
①、一個(gè)表至多有一個(gè)主鍵,但可以有多個(gè)唯一
②、主鍵不允許為空,唯一可以為空
2、相同點(diǎn)
都具有唯一性
都支持組合鍵,但不推薦
外鍵:
1、用于限制兩個(gè)表的關(guān)系,從表的字段值引用了主表的某字段值
2、外鍵列和主表的被引用列要求類型一致,意義一樣,名稱無要求
3、主表的被引用列要求是一個(gè)key(一般就是主鍵)
4、插入數(shù)據(jù),先插入主表
刪除數(shù)據(jù),先刪除從表
可以通過以下兩種方式來刪除主表的記錄
#方式一:級(jí)聯(lián)刪除ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE;
#方式二:級(jí)聯(lián)置空ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL;
二、創(chuàng)建表時(shí)添加約束
create table 表名( 字段名 字段類型 not null,#非空 字段名 字段類型 primary key,#主鍵 字段名 字段類型 unique,#唯一 字段名 字段類型 default 值,#默認(rèn) constraint 約束名 foreign key(字段名) references 主表(被引用列))
注意:
支持類型 | 可以起約束名 | |
---|---|---|
列級(jí)約束 | 除了外鍵 | 不可以 |
表級(jí)約束 | 除了非空和默認(rèn) | 可以,但對(duì)主鍵無效 |
列級(jí)約束可以在一個(gè)字段上追加多個(gè),中間用空格隔開,沒有順序要求
三、修改表時(shí)添加或刪除約束
非空
添加非空
alter table 表名 modify column 字段名 字段類型 not null;
刪除非空
alter table 表名 modify column 字段名 字段類型 ;
默認(rèn)
添加默認(rèn)
alter table 表名 modify column 字段名 字段類型 default 值;
刪除默認(rèn)
alter table 表名 modify column 字段名 字段類型 ;
主鍵
添加主鍵
alter table 表名 add【 constraint 約束名】 primary key(字段名);
刪除主鍵
alter table 表名 drop primary key;
唯一
添加唯一
alter table 表名 add【 constraint 約束名】 unique(字段名);
刪除唯一
alter table 表名 drop index 索引名;
外鍵
添加外鍵
alter table 表名 add【 constraint 約束名】 foreign key(字段名) references 主表(被引用列);
刪除外鍵
alter table 表名 drop foreign key 約束名;
四、自增長(zhǎng)列
特點(diǎn):
不用手動(dòng)插入值,可以自動(dòng)提供序列值,默認(rèn)從1開始,步長(zhǎng)為1
auto_increment_increment
如果要更改起始值:手動(dòng)插入值
如果要更改步長(zhǎng):更改系統(tǒng)變量
set auto_increment_increment=值;
一個(gè)表至多有一個(gè)自增長(zhǎng)列
自增長(zhǎng)列只能支持?jǐn)?shù)值型
自增長(zhǎng)列必須為一個(gè)key
一、創(chuàng)建表時(shí)設(shè)置自增長(zhǎng)列
create table 表( 字段名 字段類型 約束 auto_increment)
二、修改表時(shí)設(shè)置自增長(zhǎng)列
alter table 表 modify column 字段名 字段類型 約束 auto_increment
三、刪除自增長(zhǎng)列
alter table 表 modify column 字段名 字段類型 約束
來源:https://www.icode9.com/content-2-660201.html
聯(lián)系客服