本文共 2629 字,大约阅读时间需要 8 分钟。
约束是一种用来限制数据库表中数据的完整性和唯一性的机制,确保数据的合理性和一致性。以下是 MYSQL 中常用的几种约束类型及其应用场景。
主键约束是最常用的约束类型之一。它结合了唯一约束和非空约束的功能,确保数据库表中某一列或多列的值不会重复且不为 NULL。一个表最多只能有一个主键约束。
-- 创建主键约束create table user ( id int primary key, name varchar(20));-- 删除主键约束alter table user drop primary key;-- 添加主键约束alter table user add primary key (id, name);-- 修改主键约束alter table user modify id int primary key;
外键约束用于确保两个表之间的数据一致性。它定义了一个表中某些列与另一个表中的某些列之间的参照关系。
-- 主表创建示例create table type ( id int primary key, type varchar(20));-- 副表创建示例create table tag ( id int primary key, name varchar(20), type_id int, foreign key (type_id) references type(id));-- 多列外键约束示例create table classes ( id int, name varchar(20), number int, primary key (name, number));-- 子表创建示例create table student ( id int auto_increment primary key, name varchar(20), classes_name varchar(20), classes_number int, foreign key (classes_name, classes_number) references classes(name, number));-- 删除外键约束alter table student drop foreign key student_id;-- 添加外键约束alter table student add foreign key (classes_name, classes_number) references classes(name, number);
唯一约束确保某一列或多列的值在整个表中是唯一的,防止重复记录。
-- 创建表时设置唯一约束create table user ( id int not null, name varchar(20), password varchar(10), unique(name, password));-- 添加唯一约束alter table user add unique (name, password);-- 修改唯一约束alter table user modify name varchar(25) unique;-- 删除约束alter table user drop index name;
非空约束用于确保某一列的值不能为 NULL,并且可以设置默认值。
-- 创建表时设置非空约束create table user ( id int not null, name varchar(255) not null default 'abc', sex char null);-- 修改非空约束alter table user modify sex varchar(2) not null;-- 取消非空约束alter table user modify sex varchar(2) null;-- 取消非空约束并设置默认值alter table user modify sex varchar(2) default 'abc' null;
自增约束用于自动为某一列生成递增的值,通常用于主键字段。
create table user ( id int auto_increment primary key, name varchar(255) not null, sex char null);
默认值约束用于设置某一列的默认值,当插入新记录时,如果该列没有提供值时,系统会使用默认值。
create table user ( id int auto_increment primary key, name varchar(255) not null, sex varchar(2) default '男');
通过合理运用这些约束类型,可以显著提高数据库表的数据质量和一致性,减少冗余数据和错误数据的产生。
转载地址:http://evbfk.baihongyu.com/