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

数据库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约束创建成功。

相关文章:

  • 响应式布局,在飞帆平台中如此简单
  • 红利底波是什么意思?
  • LegalOne:本土与国际视野融合的法律评级,大湾区律师及律师事务所榜单申报启动
  • 使用CubeMX新建DMA工程——存储器到外设模式
  • 梳理顶会论文相关的经验贴
  • L3-040 人生就像一场旅行
  • 目标文件的段结构及核心组件详解
  • C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 17)
  • 【Shell 脚本编程】详细指南:第三章 - 运算符与条件判断
  • PostgreSQL:pgAdmin 4 使用教程
  • tiktok web X-Bogus X-Gnarly 分析
  • 【dify—8】Agent实战——占星师
  • L3-041 影响力
  • 艺华直播 5.0 |专注于提供港澳台及央视频道的电视直播应用,加载快,播放流畅
  • PMP-第九章 项目资源管理(一)
  • 嵌入式产品运行中数据丢失怎么办?
  • ES6异步编程中Promise与Proxy对象
  • centos7 离线安装python3 保留python2
  • 使用Set和Map解题思路
  • 25.4.30数据结构|并查集 路径压缩
  • 魔都眼|买买买,老铺黄金新店开业被挤爆:有人排队5小时
  • 对谈|《对工作说不》,究竟是要对什么说不?
  • 八成盈利,2024年沪市主板公司实现净利润4.35万亿元
  • 2025年“投资新余•上海行”钢铁产业“双招双引”推介会成功举行
  • 宋徽宗《芙蓉锦鸡图》亮相,故宫首展历代动物绘画
  • 西湖大学独家回应本科招生走出浙江:经过三年试点,条件成熟