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

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约束,确保工资不能低于0
    CONSTRAINT 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.kler.cn/news/330333.html

相关文章:

  • Eclipse 快捷键:提高开发效率的利器
  • 计算机网络:计算机网络体系结构 —— 专用术语总结
  • Spring Boot+VUE《班级综合测评管理系统》
  • 无人机之视觉导航算法篇
  • CSS | 响应式布局之媒体查询(media-query)详解
  • 使用 vite 快速初始化 shadcn-vue 项目
  • 初步认识产品经理
  • 基于Spring Boot的IT互动平台解决方案
  • 第三弹:C++ 中的友元机制与运算符重载详解
  • Laravel Admin 中的 “Array to String Conversion“ 问题及其解决方法
  • 本地化测试对游戏漏洞修复的影响
  • 云原生(四十一)| 阿里云ECS服务器介绍
  • MongoDB 的基本使用
  • 【C++】树形结构的关联式容器:set、map、multiset、multimap的使用
  • Jenkins的安装
  • 【ubuntu】【VirtualBox】VirtualBox无法加载USB移动设备的解决方法(支持U盘启动盘)
  • 面向代理的从单体到基于服务架构的转变的好处
  • 改进YOLO——更换骨干网络GhostNetV2
  • C语言 | Leetcode C语言题解之题451题根据字符出现频率排序
  • 微信小程序用户信息更新指南:头像与昵称篇