约束的分类:
① not null (非空约束)
② unique (唯一性约束)
③ primary key (主键约束)
④ foreign key (外键约束)
⑤ check (检查约束)
⑥ default (默认值约束)
如何查看表中的约束:
SELECT * FROM information_schema.table_constraints
WHERE table_name = '表名';
① not null (非空约束)
CREATE TABLE时添加约束:
CREATE TABLE test1(
id INT NOT NULL,
last_name VARCHAR(15) NOT NULL,
email VARCHAR(25),
salary DECIMAL(10,2)
);
ALTER TABLE 时增加约束、删除约束:
#在AlTER TABLE时添加约束
ALTER TABLE test1
MODIFY email VARCHAR(25) NOT NULL;
#在ALTER TABLE时删除约束
ALTER TABLE test1
MODIFY email VARCHAR(25) NULL;
② unique (唯一性约束)
CREATE TABLE时添加约束:
CREATE TABLE test2(
id INT UNIQUE,#列级约束
last_name VARCHAR(25),
email VARCHAR(25),
salary DECIMAL(10,2),
#表级约束
CONSTRAINT uk_test2_email UNIQUE(email)
);
ALTER TABLE 时增加约束、删除约束:
#在ALTER TABLE时添加约束
#方式1
ALTER TABLE test2
ADD CONSTRAINT uk_test2_salary UNIQUE(salary)
#方式2
ALTER TABLE test2
MODIFY last_name VARCHAR(20) UNIQUE
#删除唯一性约束
-- 添加唯一性约束的列上也会自动创建唯一索引。
-- 删除唯一约束只能通过删除唯一索引的方式删除。
-- 删除时需要指定唯一索引名,唯一索引名就和唯一约束名一样。
-- 如果创建唯一约束时未指定名称,如果是单列,就默认和列名相同;如果是组合列,那么默认和()中排在第一个的列名相同。也可以自定义唯一性约束名。
ALTER TABLE test2
DROP INDEX last_name;
ALTER TABLE test2
DROP INDEX uk_test2_salary
复合的唯一性约束
CREATE TABLE test3(
id INT,
`name` VARCHAR(15),
`password` VARCHAR(25),
#表级约束
CONSTRAINT uk_test3_nameandpassword UNIQUE(`name`,`password`)
);