当前位置: 首页 > java >正文

数据库Mysql_约束

将失败当作自己的老师,即使他会使自己难堪

                                                                                                                                   ----------陳長生.


1.什么是数据库约束

        数据库约束是在数据库中对表中的内容设定条件或者规则,设置了这些规则能使得数据更具体有准确性,可靠性。

2.约束类型

NOT NULL设置列不能为空
UNIQUE设置列只能是该表中唯一的值
PRIMARY KEYnut null与unique的结合,既不能为空并且是唯一值
FOREIGN KEY将主表内容与从表内容相关联
DEFAULT给设置列一个默认的值
CHECK给设置列限制一个输入的数据

3.NOT NULL 非空约束

定义列中不想为空时,可以为该列添加一个非空约束

create table if not exists student(
  id bigint not null,
  name varchar(20) not null
); 

设置一个非空约束后,name列就不会添加一个非空的值进来了

可以看到,当我们插入null值时,系统就会报错,证明了我们当前的非空约束成功设置了。

4.UNIQUE 唯一约束

        在很多场景下,我们需要一个唯一不重复的值,例如在学校中,两个人的名字可能会重复,但是他们的学号不会,如果学号也相同,那些后续的一些信息填入就会出现一些问腿,所以不重复的学号便是用来区分两个相同名字的同学,那么mysql中就给我们提供了这么一个约束。

create table if not exists student1(
  id bigint unique
  name varchar(20) not null
);

但我们将id列添加一个唯一约束时,id中的值就不会重复了

我们可以成功插入两个不同的id列的值,但是插入一个重复的”002“id的值就报错,证明了该唯一约束设置成功。

5.PRIMARY KEY 主键约束

  • 主键必须是唯一并且不为空的值
  • 每个表中只有一个主键值,可以由单列或多列组成        

create table if not exists student2(
  id bigint primary key,
  name varchar(20) not null
);

我们使用desc查看该表结构表

id的Key列中由PRI,说明主键 ”Primary key “生效

6.FOREIGN KEY 外键约束

  • 外键约束用来定义主表与从表的关系
  • 外键约束定义在从表上,主表关联的列必须是主键或者是唯一约束

主表(专业课表):

create table if not exists class(
  id bigint primary key,
  name varchar(20)
);

从表(学生表):

create table if not exists student3(
  id bigint primary key,
  name varchar(20),
  class_id bigint,
  foreign key (class_id) references class(id)
);

先声明外键约束哪从表中的哪一个列,然后再连接(references)主表中对应的主键值

关于删除:

        建立连接的两个表不可以随意删除,若想删除,须先删除从表中的数据,再删除主表中的数据,否则删除会失败。

-- 正确删除顺序
delete from student3;
delete from class; 

运行结果为成功~

7.DEFAULT 默认约束

        默认约束就是在创建列时,给一个默认值,后续如果不给该列赋值,那么会按默认值输出。

        

create table if not exists student4(
  id bigint primary key,
  name varchar(20) not null,
  age int default 18   —>设置该默认值为18
);

8.CHECK 限制约束

用于限制列中可以接受的值,确保数据的准确性与完整性

create table if not exists student5(
  id bigint,
  name varchar(20),
  age int,
  check(age>=16)  -->限制age列中的数字必须大于16
);

当我们试图插入age为14的数据时,系统提示我们违反"chl_1"的规则,证明当前的check约束创建成功。

http://www.xdnf.cn/news/3345.html

相关文章:

  • 第二章 日志分析-apache日志分析(玄机系列)
  • 【论文阅读26】贝叶斯-滑坡预测-不确定性
  • 图解 Git 工作流:理解 Rebase、Merge 与 Pull Request 的区别
  • 基于Redis实现-用户签到
  • C++——入门基础(2)
  • podman/docker国内可用的docker镜像源(2025-05)
  • 前端八股 3
  • Linux-04-搜索查找类命令
  • WPF实现数据库操作与日志记录
  • 工行手机银行安全吗?在应用商店下载工商银行安全吗?
  • 工 厂 模 式
  • 17. LangChain流式响应与实时交互:打造“类ChatGPT“体验
  • 数字智慧方案5974丨智慧农业大数据应用平台综合解决方案(79页PPT)(文末有下载方式)
  • 数据结构与算法学习笔记(Acwing提高课)----动态规划·背包模型(二)
  • 经典算法 青蛙跳杯子
  • 【大模型实战篇】华为信创环境采用vllm部署QwQ-32B模型
  • 【MySQL】复合查询与内外连接
  • 补题( Convolution, 二维卷积求输出矩阵元素和最大值)
  • 【方案分享】基于Three.js和Stencil Buffer的AR实物遮挡方案,支持不规则动态区域(AR地下设施、AR虚实遮挡)
  • 前端面经-webpack篇--定义、配置、构建流程、 Loader、Tree Shaking、懒加载与预加载、代码分割、 Plugin 机制
  • ruoyi-plus Spring Boot + MyBatis 中 BaseEntity 的设计与动态查询实践
  • AVDictionary 再分析
  • 安全学习基础入门5集
  • curl详解
  • 综合案例建模(1)
  • 毕业论文 | 基于STM32的自动烟雾报警系统设计
  • 4.30阅读
  • Seata客户端@GlobalTransactional核心源码解析
  • Linux企业级分区设置
  • PEFT实战(三)——IA3参数高效微调