MySQL中的数据库约束

news2024/12/24 2:09:11

目录

导读:

约束类型

1、not null(不能为空)

2、unique(唯一)

3、default(默认值约束)

4、primary key(唯一)与unique

相同点:

不同点:

auto_increment:

5、foreign key(外键)

语法形式:

功能:

6、check——了解即可


导读:

在使用数据库的时候,为了避免插入数据出错,一般会对插入的数据进行约束(限制)

比如插入学生信息(包含学生名字):

如果不对插入的数据进行约束,那么这种情况,也会插入成功:

在逻辑上这显然是不成立的,因为学生的名字不能是null。

为此,MySQL中提供了约束类型,用来实现对插入数据的管控。


约束类型

一共有这几种:

not null - 指示某列不能存储 NULL 值。

unique - 保证某列的每行必须有唯一的值。

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

primary key - not nullunique 的结合。确保某列(或两个列多个列的结合)有唯一标 识,有助于更容易更快速地找到表中的一个特定的记录。

foreign key - 保证一个表中的数据匹配另一个表中的值的参照完整性。

check - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略 check子句。

接下来,妖妖介绍:

1、not null(不能为空)

语法形式:

 create table 表名(id int ,name varchar(20) not null,score int);

举例,创建一个表,名字这一列不能填NULL

此时还想插入一个名字为null的学生就不可能了:

注意事项:

1、name的默认值不能是NULL了:

2、不能将名字修改成NULL:

2、unique(唯一)

语法形式:

 create table 表名(id int unique,name varchar(20),score int);

举例,创建一个表,id不能重复

注意:

unique允许有多个NULL值,而不报错。

3、default(默认值约束)

语法形式:

create table 表名(id int ,name varchar(20) default '自定义的默认值',score int);

举例,创建一个表,id的默认值是-1,名字的默认值是‘无姓名’:

4、primary key(唯一)与unique

primary key(一般叫主键)unique很像,被约束的列,都不能出现重复的值,但他们也有很多不同点。

相同点:

1.唯一性:primary keyunique都确保了被修饰的列的值是唯一的。

2.索引:MySQL 会自动为 PRIMARY KEY 和 UNIQUE 创建索引,以加快查询速度。(索引如果没学过,不用管,不要紧)

不同点:

1.unique允许插入相同的NULL值,因为MySQL认为NULL无法比较,因此不相等

但primary key不允许插入相同的NULL值。

2.数量 primary key在一个表中,只能约束一列数据:

但unique在一个表中可以约束多列数据:

像这种约束,用的还是比较多的,比如说游戏的ID

五月份LOL的改名活动,不知道大家有没有白嫖:

像这种可以取重复ID的账户系统,底层使用的就是primary key这类约束,既对id这一列进行唯一约束,但是不对name这一列进行唯一约束。


auto_increment:

auto_increment是一个关键字,通常与primary key一起使用去约束整数类型的数据,

MySQL 中用于自动生成唯一标识符的属性

语法:

插入数据:

 结果:

也就是说,id默认从1,开始,然后顺序增加。

注意:

如果图中插入了一个id为100的数据:

在使用auto_increment:

那么id将会从101开始递增:


 

5、foreign key(外键)

语法形式:

create table 表名(id int ,foreign key(id) references 另一个表的表名(表中一个字段)

看不懂没关系,等一下有栗子吃。

外键相对于前四个,功能就有意思了,语法形式也和上面有所不同。

功能:

有这样两个表,一个存储班级:

一共只有三个班级,请记住。

接下来一个表,用来存储学生:

此时,父表(class)和子表(student)就建立了联系。

子表,在插入数据的时候,受到父表的约束,班级号码不能1、2、3以外的数字,否则报错:

同时,父表也可能会被子表约束:

子表先插入一个非法数据:

然后删除父表对应的行数据,将会报错:

6、check——了解即可

语法:

实际上也是对插入数据进行约束。

例如,上图插入数据的price必须是正数才行,不然会报错。

但是,MySQL并不支持check关键字的使用,即使它可以用代码执行,但是实际运行时,会自动忽略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1809235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GAN的入门理解

这一篇主要是关于生成对抗网络的模型笔记,有一些简单的证明和原理,是根据李宏毅老师的课程整理的,下面有链接。本篇文章主要就是梳理基础的概念和训练过程,如果有什么问题的话也可以指出的。 李宏毅老师的课程链接 1.概述 GAN是…

BC11 学生基本信息输入输出

BC11 学生基本信息输入输出 废话不多说上题目&#xff1a; 这道题表面上很简单&#xff0c;但是里面有很重要的点先给大家上正确的代码&#xff1a; #include<stdio.h> int main() {int stu 0;float c 0;float English 0;float math 0;scanf("%d;%f,%f,%f"…

Java入门教程上

常见的cmd命令 类 class 字面量 数据类型 输入 public static void main(String[] args) {Scanner anew Scanner(System.in);int na.nextInt();int ma.nextInt();System.out.println(mn);} } 算数运算符 package wclg;public class test {public static void main(String[] ar…

iOS调整collectionViewCell顺序

效果图 原理 就是设置collectionView调整顺序的代理方法&#xff0c;这里要注意一点 调整过代理方法之后&#xff0c;一定要修改数据源&#xff0c;否则导致错乱。 还有就是在collectionView上面添加一个长按手势&#xff0c;在长按手势的不同阶段&#xff0c;调用collectionV…

【数据结构】AVL树(平衡二叉树)

目录 一、AVL树的概念二、AVL树的节点三、AVL树的插入四、AVL树的旋转1.插入在较高左子树的左侧&#xff0c;使用右单旋2.插入在较高右子树的右侧&#xff0c;使用左单旋3.插入较高左子树的右侧&#xff0c;先左单旋再右单旋4.插入较高右子树的左侧&#xff0c;先右单旋再左单旋…

论文研读 A Comparison of TCP Automatic Tuning Techniques for Distributed Computing

论文《分布式计算中TCP自动调优技术的比较》由Eric Weigle和Wu-chun Feng撰写&#xff0c;探讨了自动调整TCP缓冲区大小以提升分布式应用性能的不同方法。文章首先讨论了手动优化TCP缓冲区大小的局限性&#xff0c;并介绍了研究人员提出的各种自动调优技术来应对这些挑战。 作者…

打造智慧工厂核心:ARMxy工业PC与Linux系统

智能制造正以前所未有的速度重塑全球工业格局&#xff0c;而位于这场革命核心的&#xff0c;正是那些能够精准响应复杂生产需求、高效驱动自动化流程的先进设备。钡铼技术ARMxy工业计算机&#xff0c;以其独特的设计哲学与卓越的技术性能&#xff0c;正成为众多现代化生产线背后…

2024全国大学生数学建模竞赛优秀参考资料分享

0、竞赛资料 优秀的资料必不可少&#xff0c;优秀论文是学习的关键&#xff0c;视频学习也非常重要&#xff0c;如有需要请点击下方名片获取。 一、赛事介绍 全国大学生数学建模竞赛(以下简称竞赛)是中国工业与应用数学学会主办的面向全国大学生的群众性科技活动&#xff0c;旨…

⌈ 传知代码 ⌋ 记忆大师

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

MySQL 函数与约束

MySQL 函数与约束 文章目录 MySQL 函数与约束1 函数1.1 字符串函数1.2 数值函数1.3 日期函数1.4 流程函数 2 约束2.1 概述2.2 约束演示2.3 外键约束2.4 删除/更新行为 1 函数 函数是指一段可以直接被另一程序调用的程序或代码。 1.1 字符串函数 MySQL中内置了很多字符串函数&…

Python学习打卡:day02

day2 笔记来源于&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了 8、字符串的三种定义方式 字符串在Python中有多种定义形式 单引号定义法&#xff1a; name 黑马程序员双引号定义法&#xff1a; name "黑马程序…

攻防演练之-网络集结号

每一次的网络安全攻防演练都是各个安全厂商期待的网络安全盛会&#xff0c;因为目前的安全生态导致了只有在网络安全攻防演练期间&#xff0c;网络安全的价值才会走向台前&#xff0c;收到相关方的重视。虽然每一次都会由于各种原因不能如期举行&#xff0c;但是这一次的推迟总…

浏览器阻止屏幕息屏,js阻止浏览器息屏,Web网页阻止息屏

场景: 比如打开一个浏览器页面(比如大屏),想让它一直显示着,而不是过几分钟不操作就屏幕黑了.(电脑有设置电脑不操作就会多长时间就会息屏睡眠,如果要求每个客户都去操作一下电脑设置一下从不睡眠,这很不友好和现实.而且我也只想客户在大屏的时候才这样,其他页面就正常,按电脑设…

eNSP学习——RIP的路由引入

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建公司B的RIP网络 3、优化公司B的 RIP网络 4、连接公司A与公司B的网络 需要eNSP各种配置命令的点击链接自取&#xff1a;华为&#xff45;NSP各种设备配置命令大全PDF版_ensp…

RAG检索与生成的融合

1、rag定义 检索增强生成 (RAG) 模型代表了检索系统和生成模型两大不同但互补组件完美结合的杰作。通过无缝整合相关信息检索和生成与背景相关的响应&#xff0c;RAG模型在人工智能领域达到了前所未有的复杂程度。 2、rag工作流程 2.1、rag整体框架 query通过llm处理后&…

【Golang】Go语言中defer与return的精妙交织:探索延迟执行与返回顺序的微妙关系

【Golang】Go语言中defer与return的精妙交织&#xff1a;探索延迟执行与返回顺序的微妙关系 大家好 我是寸铁&#x1f44a; 总结了一篇defer 和 return 返回值 的执行顺序探讨的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 在Go语言中&#xff0c;defer 和return是两…

Codeforces Round 951 (Div. 2) 题解分享

A. Guess the Maximum 思路 贪心 毫无疑问的是&#xff0c;Alice会选择所有区间最大值的最小值-1&#xff0c;即。 关键是如何选取。我们注意到区间长度越大&#xff0c;这个区间的最大值是随着它不减的&#xff0c;所以如果Bob要让Alice选的最小的话&#xff0c;选择的区间…

1 c++多线程创建和传参

什么是进程&#xff1f; 系统资源分配的最小单位。 什么是线程&#xff1f; 操作系统调度的最小单位&#xff0c;即程序执行的最小单位。 为什么需要多线程&#xff1f; &#xff08;1&#xff09;加快程序执行速度和响应速度, 使得程序充分利用CPU资源。 &#xff08;2&…

FastAPI:在大模型中使用fastapi对外提供接口

通过本文你可以了解到&#xff1a; 如何安装fastapi&#xff0c;快速接入如何让大模型对外提供API接口 往期文章回顾&#xff1a; 1.大模型学习资料整理&#xff1a;大模型学习资料整理&#xff1a;如何从0到1学习大模型&#xff0c;搭建个人或企业RAG系统&#xff0c;如何评估…

Helm离线部署Rancher2.7.10

环境依赖&#xff1a; K8s集群、helm 工具 Rancher组件架构 Rancher Server 包括用于管理整个 Rancher 部署的所有软件组件。 下图展示了 Rancher 2.x 的上层架构。下图中&#xff0c;Rancher Server 管理两个下游 Kubernetes 集群 准备Rancher镜像推送到私有仓库 cat >…