#not null 非空约束
-- 只能用列级约束,不能表级约束
#创建数据库
create DATABASE db;
use db;
#在 CREATE TABLE 时添加约束
CREATE TABLE test1(
id int not null,
last_name VARCHAR(15) not null,
email VARCHAR(25),
salary int
);
desc test1;
#插入数据
INSERT into test1
(id,last_name,email,salary)
VALUES
(1,'tan','tanjianci@qq.com',null);
#查看表结构
SELECT*from test1;
#把email变为空值
update test1
set email=null
where id=1;
#把salary变成6000
UPDATE test1
set salary=6000
where id=1;
#在 ALTER TABLE 时添加约束
-- 规则:‘如果’报错,本身有null值,再改为not null时,不能添加
ALTER TABLE test1
MODIFY email VARCHAR(25) not null;
#在 alter table 时删除约束
ALTER TABLE test1
MODIFY last_name VARCHAR(10) NULL;
DESC test1;
CREATE table test2(
id int UNIQUE, #列级约束
last_name VARCHAR(15),
email VARCHAR(25),
salary int,
#表级约束
CONSTRAINT uk_test2_email UNIQUE(email)
);
DESC test2;
SELECT* from test2;
INSERT into test2
(id,last_name,email,salary)
VALUES
(1,'Tom','Tom@163.com',8000);
#id,last_name,email,salary不能与第一条数据冲突
INSERT into test2
(id,last_name,email,salary)
VALUES
(1,'Sam','Tom@163.com',8000);
#在 ALTER TABLE 时添加约束
#方式一:
DESC test2;
alter table test2
ADD CONSTRAINT uk_test2_sal UNIQUE(salary);
#方式二:
alter table test2
MODIFY last_name VARCHAR(20) UNIQUE;
SELECT * FROM information_schema.table_constraints WHERE table_name = 'test2';