本文共 2670 字,大约阅读时间需要 8 分钟。
/*MySQL进阶13
常见六大约束:
1.not null 非空
2.default :默认值,用于保证该字段的默认值 ; 比如年龄:1900-10-10
3.primary key : 主键,用于保证该字段的值具有唯一性,并且非空
4.unique : 唯一约束,保证该字段的值可以为空,具有唯一性
5.check : 检查约束[mysql不支持,不报错,没有实际效果]
6.foreign key : 外键约束; 用于限制两个表的关系, 用于保证该字段的值必须来自于主表的关联列的值;
在从表中添加外键约束,用于引用主表中的某列的值;
比如: 学生表的专业编号,员工表的部门编号,员工表的工种编号;
添加约束的时机:
1.创建表时
2.修改表时
----------
约束的添加分类:
列级约束 : 六大约束语法上都支持,但外键没有效果!!
表级约束 :
除了非空,默认, 其他的都支持!
语法 : constraint 约束名 约束类型(字段名)
主键和唯一:
都可以组合!
#二. 修改表的时候
添加列级约束
alter table 表名 modify column 字段名 字段类型 新类型;
添加表级约束
alter table 表名 add [constraint 约束名] 约束类型(字段名) [外键的引用];
#********添加表名
# alter table 表名 add column 字段名 字段类型;*/
CREATE TABLE表名(
字段名 字段类型 列级约束,
字段名 字段类型,
表级约束
);
#一: 创建表时添加约束CREATE DATABASEstudents;
#1.添加列级约束USEstudents;CREATE TABLEstuinfo(
idINT PRIMARY KEY, #主键
stuNameVARCHAR(20) NOT NULL, #非空
genderCHAR(1) CHECK(gender IN ('男','女')), #检查约束
seatINT UNIQUE, #唯一
ageINT DEFAULT 18, #默认约束
majorIdINT REFERENCESmajor(id) #设置为外键
);DESCstuinfo;CREATE TABLEmajor(
idINT PRIMARY KEY,
majorNameVARCHAR(20)
);
#2添加表级约束DROP TABLE IF EXISTSstuinfo;CREATE TABLEstuinfo(
idINT, #主键
stuNameVARCHAR(20), #非空
genderCHAR(1), #检查约束
seatINT, #唯一
ageINT, #默认约束
majoridINT,CONSTRAINT pk PRIMARY KEY(id), #设置主键CONSTRAINT uq UNIQUE(seat), #唯一键CONSTRAINT ck CHECK(gender ='男' OR gender ='女'), #检查CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCESmajor(id) #外键
);
SHOWINDEX FROMstuinfo;
#组合写法,更常用! 主键和唯一:都可以组合!DROP TABLE IF EXISTSstuinfo;CREATE TABLEstuinfo(
idINT, #主键
stuNameVARCHAR(20), #非空
genderCHAR(1), #检查约束
seatINT, #唯一
ageINT, #默认约束
majoridINT,PRIMARY KEY(id,stuName), #设置主键UNIQUE(seat), #唯一键CHECK(gender ='男' OR gender ='女'), #检查CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCESmajor(id) #外键
);
#二. 修改表的时候添加约束DROP TABLE IF EXISTSstuinfo;CREATE TABLEstuinfo(
idINT,
stuNameVARCHAR(20),
genderCHAR(1),
seatINT,
ageINT,
majoridINT);DESCstuinfo;
#1.添加非空约束ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
#2添加默认约束ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
#3添加主键:1)列级约束ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
#2) 表级约束ALTER TABLE stuinfo ADD PRIMARY KEY(id);
#4.添加唯一
#1.列级约束ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;
#2) 表级约束ALTER TABLE stuinfo ADD UNIQUE(id);
#5.添加外键ALTER TABLE stuinfo ADD FOREIGN KEY(majorid) REFERENCESmajor(id);ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCESmajor(id);
#三 .删除约束
#1.删除非空约束ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;
#2删除默认约束ALTER TABLE stuinfo MODIFY COLUMN age INT;
#3删除主键ALTER TABLE stuinfo DROP PRIMARY KEY;
#4删除唯一ALTER TABLE stuinfo DROP INDEXseat;
#5.删除外键ALTER TABLE stuinfo DROP FOREIGN KEYfk_stuinfo_major;DESC stuinfo;
转载地址:http://rtfkp.baihongyu.com/