MySQL--约束

news/2024/5/5 0:02:03/文章来源:https://blog.csdn.net/gaoqiandr/article/details/127082065

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

1:非空约束

2:唯一性约束

3:主键约束

4:外键约束


在MySQL中是有着约束的,约束是什么呢,约束又有什么作用呢。约束顾名思义它是对表有着约束的,而它的作用是为了让数据更加有用,具有有效性。

1:非空约束

如何加非空约束,就是在创建表时定义数据类型的
时候在他的最后面加个not  null就行drop table if exists stu;     
create table stu(name char(10),score int not null          
);insert into stu values('sdff',100);     //正常添加数据

 

再加个空值看看会怎么样insert into stu(name) values('kl');

很遗憾,加了非空约束,它是不允许你讲它的值设定为空值的。

2:唯一性约束

唯一性约束的定义跟前面的非空约束是一样的
都是在创建数据类型的时候,定义的唯一性
约束。非空约束是not bull,而唯一性约束
是unique。drop table if exists stu;create table stu(name char(10),score int unique
);insert into stu values('sd',99);
insert into stu values('sd',87);

 

但是我现在在设置了唯一性约束的score字段中
在插入一条99与前面的99会出现重复,会不会报错呢insert into stu values('kl',99);

 

 唯一性约束,唯一性约束,现在不唯一了,肯定会报错了。

唯一性约束,能不能联合起来具有唯一性呢?

联合起来的唯一性约束大家知道是什么意思呢
假如我联合两个字段,两个字段其中一个字段出现
重复是没有问题的,但如果全部都重复,这才会报错
这就叫联合唯一性约束。理论知识永远比不过实践,我们看一看具体的例子吧drop table if exists stu;create table stu(id int,name char(10),email char(10),unique(name,email)
);insert into stu values(123,'sh','7878');
insert into stu values(111,'sh','9090');
insert into stu values(89,'jk','7878');

 这样子创建是允许的,那么这就是联合唯一性约束,除非联合的全部重复,不然是不会报错的。

如下会报错。

insert into stu values(199,'sh','7878');

 那么唯一性约束可以联合起来的话,not null和唯一性约束可以联合吗,当然可以,不过在MySQL中他们的联合就是相当于后面我们讲到的主键约束(注意是MySQL中,其他数据库就不一定是了),那这里我就不多说了。

3:主键约束

主键是什么呢,主键是一行的标记,就是相当于我们的身份证号,独一无二,可以代表我们的身份,那么我这样一说,你是不是就觉得每张表都应该有主键呢,却是如此,每张表都应该有身份证号的(主键),不然表无效。

主键:  primary key该如何使用呢,跟前面两个约束四一样的,都是在定义数据类型
的时候,在最后面定义就行。drop table if exists stu;create table stu(
name char(10),
id int primary key,
score int
);insert into stu values('kl',123,98);
insert into stu values('op',189,90);

 接下来你就会发现主键的一些作用了

插入这些代码会报错(报错的理由就不用说了吧,大家肯定都知道滴)insert into stu values('hj',123,12);insert into stu values('rt',189,78);insert into stu(name,score) values('ioio',15);

 4:外键约束

外键约束,怎么说呢,举个例子好点,直接定义却是云里雾里的。假如有一个学生表(有学生学号,班级号),班级表(班级号,班级名)
现在给学生表一个外键约束,给学生表中的班级号添加了外键约束(与班级表中的班级号相关联)
之后学生表中的班级号只能在班级表中的班级号中填写,不能出现班级表中的班级号的其他数据
如班级表中的班级号没有89,那么学生表中的班级号就无法填写89。、drop table if exists stu;
drop table if exists class; 
create table class(name char(10),num int primary key          //一定要注意,你要设置的外键约束所关联的那个父,一定要是主键约 束,不然会报错的
);create table stu(id int,cno int,foreign key(cno) references class(num)
);insert into class values('一班',18);
insert into class values('二班',20);insert into stu values(123,18);
insert into stu values(122,18);
insert into stu values(189,20);

如果想添加一些数据,外键约束会帮你看看是否符合条件的。

这些代码是会报错的。insert into stu(199,21);
insert into stu(178,18);

 

在这里我在拓展一个自增(默认从1开始自增)的好东西,
具体不说了,大家只要会用就行啦drop table if exists stu;create table stu(id int primary key auto_increment,   //注意一定要设置有主键哦name char(10)
);insert into stu(name) values('kl');
insert into stu(name) values('op');
insert into stu(name) values('ioio');
insert into stu(name) values('fg');
insert into stu(name) values('bnbn');

OK, 本文到此结束,如有错误,还请大佬指正!!!

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

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

相关文章

springboot在线电子书阅读系统在线视频点播系统毕业设计毕设作品开题报告开题答辩PPT

springboot在线电子书阅读系统在线视频点播系统毕业设计毕设作品开题报告开题答辩PPT 【用户功能】 用户注册:填写手机账号和密码,注册新用户 登录功能:注册普通账号登录;登录后可以修改用户的基本信息,也可以退出。 …

C语言之长见识了(函数和一些不常见类型)

C1. strstr2. gets3. strlen4. \r\n5. const char * 与 char const *6. size_t、ssize_t、unsigned char、uint8_t6.1 size_t、ssize_t6.2 unsigned char6.3 uint8_t / uint16_t / uint32_t / uint64_t7. memcpy1. strstr 在字符串 haystack 中查找第一次出现字符串 needle 的…

【汽车ECU开发】------INCA使用教程

对于VCU或者是发动机标定工程师,INCA简直是跟亲人一样熟悉,基本上每天都要跟它打交道。分享一波INCA的基本使用操作。其基本的流程如下图所示: 主要操作步骤,打开软件: 点击菜单栏左上角数据库—>新建&#xff0…

TCS34725颜色感应识别模块

TCS34725颜色感应识别模块前言一、模块介绍二、产品参数三、实物图四、模块引脚介绍五、使用说明工作模式的选择上位机界面说明六、实例应用实物接线所用代码前言 TCS34725传感器模块,使用IIC或者UART通信,可直接输出RGB值。 能当做单纯的简单TCS34725模…

Java入门基础知识

Java入门基础知识概念 关键字:具有特殊用途的单词。 保留字:未使用的关键字(goto const)。 直接量:不可用作标识符(ture false null)。 一、JAVA运行机制 Java程序的运行必须经过编写、编译、运行三个步骤。 编写是指在Java开发环境中进行程序代码的输入,最终形成后缀名…

教你如何使用GPA导出模型,另送一个 GPA CSV2MESH Tool in unity

以前写过一篇:Unity - RenderDoc 抓帧导出 FBX(带UV) 吐槽 我估计GPA是怕收律师函,因为如果 GPA 将所有资源一键提取,一键导出,那么可能很多开发商会告他 可以看到也好几个帖子问 GPA 官方,都…

【PDN仿真笔记3-电容布局Q3D模型搭建】

PDN仿真笔记3-电容布局Q3D模型搭建 1. 叠层参数及设计要求 2. 变量设置 根据设计要求,将各个参数设置为变量,通过Add添加变量名称及数值(下图value应该为1.2mil) 部分设置完成的变量 3.搭建平面 引用2节中设置的变量&#xf…

检测网络框架越来越多

搬运工又来了 之前也发过相关 在汇总说一下啊~~ yolo也不在孤单了~~ 出了一大堆了~~ 之前都一一发过 今天在来个大汇总 目标检测是现在最热门的研究课题,也一直是工业界重点研究的对象,最近几年内,也出现了各种各样的检测框架&#xff0c…

PHP第三方易宝支付对接

简言: 最近手头有个数字藏品的项目,需要对接第三方易宝支付,在此整理自己的对接经验,希望对大家有所帮助。 步骤 1,下载sdk PHP第三方支付易宝支付最新sdk包,其中包含回调。-PHP文档类资源-CSDN下载 2&…

树形DP

285. 没有上司的舞会 - AcWing题库 题意是给你每个人的开心值&#xff0c;和每个人的顶头上司&#xff0c;如果每个人与自己的顶头上司不会同时去的前提下&#xff0c;问你最大的开心值是多少 树形dp 注释写在代码下面啦~ #include<iostream> #include<cstring>…

ThinkPHP6.0开启多应用模式的方法

ThinkPHP发展至今已经到了6..0.X版本,整个结构较thinkphp5有了很大的变化,ThinkPHP6.0基于精简核心和统一用法两大原则在5.1的基础上对底层架构做了进一步的优化改进,并更加规范化。由于引入了一些新特性,ThinkPHP6.0运行环境要求PHP7.1+,不支持5.1的无缝升级(官方给出了升…

3_1 操作系统

3.01 操作系统概述 接口的区分&#xff1a; 人机之间的接口&#xff1a;命令&#xff0c;窗口应用软件与硬件之间的接口&#xff1a;api的接口 进程管理 3.02 进程管理——进程状态转换图 进程的状态&#xff1a;操作系统当中对进程进行管理的时候&#xff0c;为进程指定了几种…

一个项目的整个流程

1.基本配置 基础配置包括 1.Vuex------------作用:存储公共的数据 2.Vue-router---------作用:配置页面的映射关系 3.node_modules--------作用:包的管理工具 npm i 包的名字 4.vue.config.js-----------配置一些信息 例如配置跨域的问题 5.assets 放一些静态的资源…

JAVA毕设项目酒店员工管理系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)

JAVA毕设项目酒店员工管理系统&#xff08;VueMybatisMavenMysqlsprnigSpringMVC&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&am…

DoIP协议:通用DoIP首部否定确认码02和03的区别

通用DoIP首部否定确认消息 当外部测试设备(诊断仪)发送DoIP消息给DoIP实体时,DoIP实体的传输层把DoIP消息(传输层payload,即DoIP header + DoIP payload)上发给DoIP协议层。DoIP协议层取到数据后,不管它是什么类型的DoIP消息,首先都需要被DoIP通用首部处理程序按照规定…

【统计学习|书籍阅读】第六章 logistics回国和最大熵模型 p77-p88

文章目录思路logistic回归模型最大熵模型最大熵模型定义最大熵模型的学习极大似然估计模型学习的最优化算法思路 logistic 回归是统计学习的经典分类方法。最大熵是概率模型学习的一个准则&#xff0c;将其推广到分类问题得到最大熵模型。 logistic回归模型 logistic分布&am…

# 二叉树和线索二叉树相关问题v1

文章目录二叉树和线索二叉树相关问题v1遍历算法遍历顺序分类遍历要点核心递归方式非递归方式线索二叉树二叉树vs线索二叉树(逻辑结构OR存储结构)线索二叉树的空指针剩余问题线索二叉树的遍历二叉树和线索二叉树相关问题v1 遍历算法 pre (NLR)A{B(DHI)(EJK)}{C(FLM)(GNO)}:∠\a…

【云原生 • Kubernetes】配置管理 - Secret ConfigMap

本文导读一、机密配置抽象 Secret1. 认识 Secret2. Secret 的使用(1) 创建 Secret 加密数据(2) 将 Secret 以变量形式挂载到 pod 容器二、配置抽象 ConfigMap1. 认识 ConfigMap2. ConfigMap 的使用(1) 创建配置文件(2) 创建 ConfigMap(3) 将 ConfigMap 以变量形式挂载到 pod 容…

如何保存el-pagination组件的分页状态。

一文细解如何保存组件的分页状态。 文章目录一文细解如何保存组件的分页状态。背景一、实现原理二、代码展示1.分页组件模板背景 使用element-plus的分页组件搭建页面的时候&#xff0c;经常会出现这样一种情况&#xff1a;分页为列表页&#xff0c;当从列表页点击某一项进入详…

HTTP协议4)----对于数据链路层的详细讲解

꧁ 大家好&#xff0c;我是 兔7 &#xff0c;一位努力学习C的博主~ ꧂ ☙ 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;和大家一起学习&#xff0c;一起进步❧ &#x1f680; 如有不懂&#xff0c;可以随时向我提问&#xff0c;我会全力讲解~&#x1f4ac; &…