对表中的数据进行限定
1.非空约束(not null)
在创建表的时候,进行约束
CREATE TABLE stud(
NAME VARCHAR(12) NOT NULL,
id INT
);
删除非空约束:
ALTER TABLE stud MODIFY NAME VARCHAR(20);#消除约束
ALTER TABLE stud MODIFY NAME VARCHAR(20) NOT NULL;#添加约束
2.唯一约束(UNIQUE)
CREATE TABLE stude(
id INT,
tel VARCHAR(11) UNIQUE
);
ALTER TABLE stude MODIFY tel VARCHAR(11) UNIQUE;#添加唯一约束
ALTER TABLE stude DROP INDEX tel;#去除唯一约束
3.主键约束(primary key)
主键:非空,唯一。用于多表联立。
在建表时添加主键(非空,唯一)
CREATE TABLE stude(
id INT primary key ,
tel VARCHAR(11) UNIQUE
);
删除主键:
alter table stude drop primary key;
添加主键:
alter table stude modify id int primary key;
自动增长id,配合int类型的主键使用
CREATE TABLE stude(
id INT primary key auto_increment,
tel VARCHAR(11) UNIQUE
);
设置完第一个数据后,insert into中的主键就可以为NULL了
删除自动增长
alter table stu modify id int;
添加自动增长
alter table stude modify id int auto_increment;
4.外键约束(CONSTRAINT)
从表内容不能直接删除,也不能修改。
修改可用 update department set id=10 where id=1;
解决两列数据重复冗余(如男性 全是 18岁 )
新建表时增加外键:
[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
create table employee(
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int, -- 外键对应主表的主键
-- 创建外键约束
constraint emp_depid_fk foreign key (dep_id) references department(id)
)
已有表增加外键:
ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段名);
外键约束-级联 ON update CASCADE
修改从表,使得主表的数据直接更新
添加外键时,设置级联
constraint emp_depid_fk foreign key (dep_id) references
department(id) on update cascade on update cascade
)
删除级联
constraint emp_depid_fk foreign key (dep_id) references
department(id) on update cascade on delete cascade
)