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

MySQL--数据库约束(详解)

目录

  • 一、前言
  • 二、概念
  • 三、数据库约束
    • 3.1 约束类型
      • 3.1.1 NOT NULL 约束
      • 3.1.2 UNIQUE (唯一)
      • 3.1.3 DEFAULT(默认)
      • 3.1.4 PRIMARY KEY(主键)
      • 3.1.5 FOREIGN KEY(外键)
      • 3.1.6 CHECK
  • 四、总结

一、前言

                      欢迎大家来到权权的博客~欢迎大家对我的博客进行指导,有什么不对的地方,我会及时改进哦~      

博客主页链接点这里–>:权权的博客主页链接

二、概念

对表中的数据进行限定,保证数据的正确性,有效性,完整性,是关系型数据库的一个重要功能。

三、数据库约束

3.1 约束类型

1.主键约束(primary key):保证该字段具有非空且唯一性,一张表中只能有一个主键,主键是表中字段的唯一标识。
2.非空约束(not null):保证字段不能为空。
3.唯一约束(unique):保证该字段具有唯一性但是可以为null。
4.外键约束(foreign key):在一个表中存在的另一个表的主键或唯一键称此表的外键。
5.默认约束(default+默认值):用于保证该字段有默认值(用引号引起来)。
6.检查约束(check)用来检查数据表中,字段值是否有效。比如年龄、性别。

3.1.1 NOT NULL 约束

指定某一列不能存储NULL值。
创建表时,在相应的字段加入约束类型

>create  table if not exists student>(>name varchar(255) null,>id bigint(20) null,>age int(11) not null>);

查表结构如下:
在这里插入图片描述
在这里插入图片描述

3.1.2 UNIQUE (唯一)

保证某列的每行必须有唯一的值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1.3 DEFAULT(默认)

规定没有给列赋值时的默认值

给school表添加name字段并且设置默认约束
在这里插入图片描述
在这里插入图片描述

3.1.4 PRIMARY KEY(主键)

not null 和 unique 的结合,确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更加快速地找到表中的一个特定的记录。
是一种用于唯一标识表中每一行数据的标识符。在Mysql中,主键可以是一个或多个列的组合,但是必须满足以下条件
主键列的值必须唯一,不能重复。
主键列的值不能为空,不能为NULL。
一个表只能有一个主键。

主键约束的列即是非空也是唯一的
把表中ID设置成为唯一且非空。
在这里插入图片描述

注意:
1.一个表中不能有两个主键:
在这里插入图片描述
2.一个主键可以包含多个列(复合主键)
在这里插入图片描述
在这里插入图片描述

3.1.5 FOREIGN KEY(外键)

外键是一种用于建立表与表之间关联关系的机制。外键可以用于保证数据的完整性和一致性。

语法:

foreign key(列名) references 主表名(主列名); 

表中的某个列值必须是别一张表中的主键列,或是唯一约束列的值,也就是当前表中的值在另一张表中必须存在,且满足主键或者唯一约束。
创建animals表跟dog表并且设置主键约束跟外键约束;
在这里插入图片描述

3.1.6 CHECK

用来检查数据表中,字段值是否有效,比如年龄、性别。CHECK约束是数据库表中的一种规则,用于限制列可以接受的值。当对表进行数据插入或更新操作时,数据库会检查这些值是否满足CHECK约束中定义的条件。如果不满足,操作将会失败,并且数据库会返回一个错误。

如何创建带有CHECK约束的表?
在创建表时,你可以在列定义后直接添加CHECK约束。以下是一个例子:

CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,first_name VARCHAR(50) NOT NULL,last_name VARCHAR(50) NOT NULL,salary DECIMAL(10, 2),department ENUM('HR', 'Tech', 'Sales', 'Marketing') NOT NULL,-- 在这里添加CHECK约束,确保工资不能低于0CONSTRAINT chk_salary CHECK (salary >= 0)
);

在这个例子中,chk_salaryCHECK约束的名称,它确保了salary列的值不能小于0。
注意事项:

  • 在MySQL 5.7之前,虽然可以定义CHECK约束,但它们实际上不会强制执行。
  • 从MySQL 8.0开始,CHECK约束默认是启用的,并且会被强制执行。
  • 在MySQL 5.7中,如果想要CHECK约束被强制执行,必须确保服务器运行在严格模式。
  • CHECK约束可以引用同一表中的多个列。
  • CHECK约束不能引用其他表中的列。
  • 当插入或更新数据时,如果违反了CHECK约束,操作将会失败,并返回错误。

四、总结

在这里插入图片描述

在这里插入图片描述
欧耶!!!我学会啦!!!


http://www.mrgr.cn/news/40925.html

相关文章:

  • C语言 | Leetcode C语言题解之题451题根据字符出现频率排序
  • 可视化图表与源代码显示配置项及页面的动态调整功能分析
  • C++ | Leetcode C++题解之第451题根据字符出现频率排序
  • Linux 实用工具Axel安装及使用教程(支持多线程下载)
  • SD-WebUI forge支持flux模型。算力互联forge镜像使用教程
  • Unity Input System自动生成配置
  • AccessoriesqueryController
  • Difference of Convex Relaxation (DC)
  • 基于深度学习的任务序列中的快速适应
  • Hive数仓操作(十)
  • 课设实验-数据结构-线性表-手机销售
  • 2024多模态大模型发展调研
  • buuctf--->Youngter-drive
  • 复习HTML(基础)
  • 重置linux后vscode无法再次使用ssh连接
  • 【ShuQiHere】深入理解 LC-3 指令集架构(LC-3 ISA):硬件与软件的桥梁 ️
  • 华为OD机试真题---数大雁
  • 在Ubuntu 14.04上安装带SSL的Webmin的方法
  • profile-spec-ref元素
  • 【计算机毕业设计】springboot企业客户信息反馈平台