约束

本文详细介绍了数据库设计中的各种约束,包括非空约束、唯一性约束、主键约束、默认约束、检查约束和外键约束。这些约束用于确保数据的完整性和有效性,如非空约束确保字段不为空,主键约束确保数据的唯一性并创建索引,而外键约束则实现了表之间的关联。此外,还展示了如何在创建和修改表时添加和删除这些约束。

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

一. 约束的简单介绍

约束英文:constraint
约束实际上就是表中数据的限制条件

1. 约束的作用

表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效。

2. 约束

  • 非空约束

  • 唯一性约束

  • 主键约束

  • 默认约束

  • 检查约束

  • 外键约束


二. 约束的使用

1. 非空约束(not null)

用not null约束的字段不能为null值,必须给定具体的数据

例子: 1. 比如name字段中要让其用户名不重复,这就需要添加约束。或者必须注册的时候需要添加邮箱等

--用户名不能为空
create table 表名(
  id int(10),
  name varchar(32) not null
);

2. 唯一性约束(unique)

nique约束的字段,具有唯一性,不可重复,但可以为null

列级约束

--创建表,保证邮箱地址的唯一(列级约束)
create table t_user(
  id int(10),
  name varchar(32) not null,
  email varchar(127) unique
);

表级约束

--表级约束
create table t_user(
  id int(10),
  name varchar(32) not null,
  email varchar(128),
  unique(email)
);

使用表级约束,给多个字段 联合约束

/*
联合约束,表示两个或以上的字段同时与另一条记录相等,则报错
*/
create table b(
  id int(10),
  name varchar(32) not null,
  email varchar(128),
  unique(name,email)
);

表级约束可以给 约束起名字 (方便以后通过这个名字来删除这个约束

create table b(
  id int(11),
  name varchar(32) not null,
  email varchar(128),
  constraint asddddd unique(email)
):
-- 唯一约束和非空约束作用一个字段 会变成一个主键约束
--用户名不能为空,也不能重复
name varchar(32) not null unique

三. 主键约束(primary key)

表设计一定要有主键
表中的某个字段添加主键约束后,该字段为主键字段,主键字段中出现的每一个数据都称为主键值

  • 给某个字段添加主键约束之后,该字段不能重复也不能为空,效果和"not null unique"约束相同,但是本质 不同
    主键约束除了可以做到"not null unique"之外,还会默认添加"索引——index"

单一主键:给一个字段添加主键约束(列级定义)

create table ta(
  id int(10) primary key,
  name varchar(22)
);

单一主键:(表级定义)

create table as(
  id int(10),
  name varchar(32) not null,
  constraint asd primary key(id)
);

复合主键(表级定义)

create table asd(
  id int(10),
  name varchar(32) not null
  email varchar(128) unique,
  primaty key(id,name)
);

自动增长

create table kk(
  id int(10) primary key auto_increment,
  name varchar(128) not null
);

四. 默认约束(default)

默认性别是男

create table asd(
  id int(10) primary key auto_increment,
  sex varchar(10) default '男'
);

默认是女

create table ta(
  id int(10) primary key auto_increment,
  sex varchar(10) default '女'
);

五. 检查约束

添加检查约束
检查约束只能在创建语言中使用,不能在modify中使用

/*检查约束只能在创建语言中使用,不能在modify中使用*/
--检查只能是男女两种选择
create table jj(
  id int(11) primary key auto_increment,
  sex char(2) default '男' check (sex in('男''女'))
);
--此功能可以用enum
create table kk(
  id int(11) primary key auto_increment,
  sex enum('男','女') not null
);
  • add添加
alter table 表明 add constraint 约束名 check(字段 > 10);
  • 删除检查约束
alter table 表名 drop constraint 约束名;

六. 外键约束

添加外键约束

  1. 主表必须以存在
  2. 从表的那个字段要设置成外键约束,并关联到主表的主键上。
  3. 关联的字段的数据类型必须和主表的主键的数据类型相同。
--建立一个部门表
create table a(
  id int(11) primary key,
  name varchar(22) not null,
  location varchar(50)
);
--建立员工表
create table b(
  id int(11) primary key,
  name varchar(22),
  deptId int(11),
  salary float,
  constraint ab foreign key(deptId) references a(id)
);
  • 在修改表中添加外键约束
alter table 数据表名 add constraint 外键名 foreign key(列名) references 主表(主键)
  • 删除外键约束
alter table 表名 drop foreign key 外键约束名
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YJiaStudy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值