MySQL——约束条件

本文介绍了MySQL建表约束,包括主键约束确保记录唯一性,唯一约束限制字段重复,自增约束用于主键自动填充,非空约束防止字段为空,默认约束提供插入时的默认值,检查约束确保值满足特定条件,联合主键由多个字段构成的唯一标识,以及外键约束实现表间引用完整性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建表约束

主键约束
  • 可以唯一确定一张表的一条记录
  • 通过给某个字段添加约束,使得该字段不可重复、不可为空
create table 表名(
	id int primary key,
    name varchar(20));
  • 添加主键;创建表时忘记创建主键
create table 表名(
	id int,
    name varchar(20));
    
alter table 表名 add primary key(id);
  • 使用modify修改字段,添加约束
alter table 表名 modify id int primary key;
  • 删除主键
alter table 表名 drop primary key;
唯一约束
  • 约束修饰的字段的值不可以重复
  • 有多个唯一约束,加起来不重复、不可为空
create table user(
	id int unique,
    name varchar(20)
);
create table user(
	id int,
    name varchar(20),
    unique(id,name)
);
create table user(
	id int,
    name varchar(20)
);

alter table user add unique(id);
  • 添加
alter table 表名 modify id int unique;
  • 删除
alter table user drop index id;
自增约束
  • 搭配主键使用
  • 在主键为空时自动生成
create table user(	id int primary key auto_increment,    name varchar(20));
insert into user (name) values('张三');
非空约束
  • 约束的字段不能为空
create table user(	id int not null,    name varchar(20));
默认约束 default
  • 插入时有字段没有传值,就会使用默认值
create table user(	id int default 1,    name varchar(20));
检查约束CHECK
  • 指定某列中的值必须满足布尔表达式
USE testdb;CREATE TABLE IF NOT EXISTS parts (    cost DECIMAL(10 , 2 ) NOT NULL CHECK (cost > 0),    price DECIMAL(10 , 2 ) NOT NULL CHECK (price > 0),    CHECK (price >= cost));SQL
联合主键
  • 有多个主键
  • 主键加起来不重复、不可为空
create table 表名(	id int,    name varchar(20)    primary key(id,name)    );
外键约束
  • 涉及到两张表:主表、副表
  • 副表中的外键值,必须在主表中存在
  • 主表中被副表所引的项,不可以删除
create table class(	id int,    name varchar(20));
create table students(	id int,    name varchar(20),    class_id int,    foreign key(class_id) references class(id));
两张表的关联关系外键存放
1:1​外键可以放在任何一方
1:N外键放在多方
N:N创建关联关系表
模式
restrict严格模式
cascade级联模式
set null设置为null
foreign key(class_id) references class(id) on delete 模式 on update 模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值