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