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.rhkb.cn/news/439158.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第454题四数相加II

题目: 题解: func fourSumCount(a, b, c, d []int) (ans int) {countAB : map[int]int{}for _, v : range a {for _, w : range b {countAB[vw]}}for _, v : range c {for _, w : range d {ans countAB[-v-w]}}return }

STM32新建工程-基于库函数

目录 一、创建一个新工程 二、为工程添加文件和路径 三、创建一个main.c文件,并调试 四、修改一些配置 五、用库函数进行写程序 1、首先加入一些库函数和头文件 2、编写库函数程序 一、创建一个新工程 我这里选择STM32F103C8的型号,然后点击OK。 …

如何提取b站的视频字幕,下载视频

打开视频地址 按F12打开—开发者工具 在开发者工具打开Network 过滤器关键字: 自动生成字幕:ai_subtitle 自制:json 打开/关闭字幕 刷新页面 找到字幕 点选字幕的respond 将方框中的内容复制; 复制到:https://www.drea…

蓝桥杯【物联网】零基础到国奖之路:十五. 扩展模块之双路ADC

蓝桥杯【物联网】零基础到国奖之路:十五. 扩展模块之双路ADC 第一节 硬件解读第二节 CubeMX配置第三节 代码编写 第一节 硬件解读 STM32的ADC是12位,通过硬件过采样扩展到16位,模数转换器嵌入到STM32L071xx器件中。有16个外部通道和2个内部通道&#xf…

github双重验证(2FA)启用方法

一、双重验证-2FA 在去年看到过说github启用双重验证的通知,觉得做为一个普通开发者,可能没有这么快会要求启用。结果,今天早晨一来就收到了邮件,要求说在11月底完成2FA的认证,否则权限受限。真是无了语。所谓2FA好理…

CSS 实现楼梯与小球动画

CSS 实现楼梯与小球动画 效果展示 CSS 知识点 CSS动画使用transform属性使用 页面整体布局 <div class"window"><div class"stair"><span style"--i: 1"></span><span style"--i: 2"></span>…

jmeter学习(2)变量

1&#xff09;用户定义的变量 路径&#xff1a;添加-》配置元件-》用户定义的变量 用户定义的变量是全局变量&#xff0c;可以跨线程组被调用&#xff0c;但在启动运行时获取一次值&#xff0c;在运行过程中不再动态获取值。 注意的是&#xff0c;如果在某个线程组定义了全…

使用GitLab CI构建持续集成案例

1. 部署GitLab &#xff08;1&#xff09;基础准备 解压软件包并导入镜像&#xff1a; [rootmaster ~]# curl -O http://mirrors.douxuedu.com/competition/Gitlab-CI.tar.gz [rootmaster ~]# tar -zxvf Gitlab-CI.tar.gz [rootmaster ~]# ctr -n k8s.io image import gitla…

linux基础指令的认识

在正式学习linux前&#xff0c;可以简单认识一下linux与win的区别 win&#xff1a;是图形界面&#xff0c;用户操作更简单&#xff1b;在刚开始win也是黑屏终端 指令操作&#xff0c;图形界面就是历史发展的结果。Linux&#xff1a;也存在图形界面比如desktop OS&#xff1b;但…

基于拥堵模型的轻量级平台公交室内情况监控系统

论文标题&#xff1a;Bus Indoor Situation Monitoring System Based on Congestion Model Using Lightweight Platform 作者信息&#xff1a;Dong Hyun Kim, Yun Seob Kim, 和 Jong Deok Kim* 所属机构&#xff1a;Pusan National University, Department of Computer Scienc…

网页打不开、找不到服务器IP地址

现象&#xff1a;网络连接ok&#xff0c;软件能正常使用&#xff0c;当网页打不开。 原因&#xff1a;DNS 配置错误导致网站域名无法正确解析造成。 影响DNS设置的&#xff1a;VPN软件、浏览器DNS服务选择、IPv4属性被修改。 1、VPN代理未关闭 2、浏览器DNS解析选择 3、以太…

Python | 使用Seaborn绘制KDE核密度估计曲线

核密度估计&#xff08;KDE&#xff09;图&#xff0c;一种可视化技术&#xff0c;提供连续变量概率密度的详细视图。在本文中&#xff0c;我们将使用Iris Dataset和KDE Plot来可视化数据集。 什么是KDE图&#xff1f; KDE图&#xff0c;全称核密度估计图(Kernel Density Est…

【JAVA开源】基于Vue和SpringBoot的旅游管理系统

本文项目编号 T 063 &#xff0c;文末自助获取源码 \color{red}{T063&#xff0c;文末自助获取源码} T063&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…

k8s的学习和使用

为什么用k8s&#xff0c;不用docker&#xff1f; k8s更适合复杂的微服务架构和大规模的容器应用。 Pods(Pod) Pod是k8s最小可部署单元&#xff0c;他包含一个或多个相关容器。这些容器共享网络命名空间和存储卷&#xff0c;他们通常协同工作来构成一个应用程序。 Serv…

微信小程序处理交易投诉管理,支持多小程序

大家好&#xff0c;我是小悟 1、问题背景 玩过微信小程序生态的&#xff0c;或许就有这种感受&#xff0c;如果收到投诉单&#xff0c;不会及时通知到手机端&#xff0c;而是每天早上10:00向小程序的管理员及运营者推送通知。通知内容为截至前一天24时该小程序账号内待处理的交…

哪款百元头戴式耳机性价比高?四款大火爆全网的机型盘点推荐!

在繁忙的生活节奏中&#xff0c;寻找一片属于自己的宁静空间&#xff0c;成为了许多人的内心渴望。头戴式降噪耳机&#xff0c;正是那把打开音乐世界的钥匙。它不仅能够隔绝外界的喧嚣&#xff0c;还能将您带入一个纯净无瑕的音乐世界。无论是沉浸在古典乐的悠扬旋律中&#xf…

66 使用注意力机制的seq2seq_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录动机加入注意力总结代码定义注意力解码器训练小结练习 我们来真的看一下实际应用中&#xff0c;key&#xff0c;value&#xff0c;query是什么东西&#xff0c;但是取决于应用场景不同&#xff0c;这三个东西会产生变化。先将放在seq2seq这个…

平面电磁波的电场能量磁场能量密度相等,能量密度的体积分等于能量,注意电场能量公式也没有复数形式(和坡印廷类似)

1、电场能量密度和磁场能量密度相等(实数场算的) 下面是电场能量密度和磁场能量密度的公式&#xff0c;注意这可不是坡印廷定理。且电场能量密度没有复数表达式&#xff0c;即不是把E和D换成复数形式就行的。注意&#xff0c;一个矢量可以转化为复数形式&#xff0c;两个矢量做…

深入计算机语言之C++:C到C++的过度

&#x1f511;&#x1f511;博客主页&#xff1a;阿客不是客 &#x1f353;&#x1f353;系列专栏&#xff1a;从C语言到C语言的渐深学习 欢迎来到泊舟小课堂 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 一、什么是C C&#xff08;c plus plus&#xff…

使用NumPy进行线性代数的快速指南

介绍 NumPy 是 Python 中用于数值计算的基础包。它提供了处理数组和矩阵的高效操作&#xff0c;这对于数据分析和科学计算至关重要。在本指南中&#xff0c;我们将探讨 NumPy 中可用的一些基本线性代数操作&#xff0c;展示如何通过运算符重载和内置函数执行这些操作。 元素级…