MySQL数据库表的增删查改 - 进阶
一,数据库约束
1.1 约束对象
- not null - 该列不能为空
- unique - 保证该列的每一行都不一样
- default - 规定没有给列赋值时的默认值(自定义)
- primary key - not null 和 unique 的结合,会给该列添加一个索引,提高查询速度
- foreign key - 保证一个表中的数据匹配另一个表的数据
- check - 保证列中的值符合指定的条件,对于MySQL数据库,堆check字句进行分析,但忽略check子句
1.2 null 约束
创建表时,指定某列不为空。

1.3 unique
保证该列的每一个值都是唯一的,即该列没有重复值。

1.4 default
如果该列没有被赋值,那么就会赋值为 default 后面的值:

1.5 primary key - 主键约束
主键同时具有 not null 与 unique 的特点,还可以搭配 自增长auto_increment 来使用(插入字段不赋值时,使用最大值+1,有点类似于JAVA中的枚举)。

注:auto_increment 只能作用于整数类型!!!!
1.6 foreign key - 外键约束
外键用于关联其他表的主键或唯一键,语法:
foreign key (字段名) references 主表(列名)

表示 class_id 与 id 联系起来,添加的class_id必须存在于id中,否则添加失败,即 子表必须依赖父表 。并且不能单独删除 class 表,想删除class表必须先删除student表,因为要是先删除class表,那么student表中 class_id列就没有参考了。
1.7 check 约束
MySQL使用时不报错,但忽略该约束

二,表的设计
- 一对一 :类似于人与身份证号,一个人只能有一个身份证号
- 一对多 :类似于班级与学生,一个班级可以有很多的学生
- 多对多 :类似于学科与学生与老师

三,新增
insert into 表名 【列名....】 select ....

四,查询
4.1 聚合查询
4.1.1 聚合函数
| 函数 | 说明 |
| count (【distinct】列名) | 返回查询到的数据的 数量 |
| sum (【distinct】列名) | 返回查询到的数据的 总和 |
| avg (【distinct】列名) | 返回查询到的数据的 平均值 |
| max (【distinct】列名) | 返回查询到的数据的 最大值 |
| min (【distinct】列名) | 返回查询到的数据的 最小值 |
- count

注:count(*) 与 count(0) 效果一样!!!
- sum

- avg

- max

- min

注:当遇到null时,聚合函数不会理会,即不会让null进行运算!!!
4.1.2 group by 字句
分组查询:将表中的数据按照列进行分组,必须和聚合函数一起使用,例如:将一个班的学生分成一组。
select column1,sum(column2),...... from table group by column3...

4.1.3 having
group by 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 where 语句,而需要用 having

4.2 联合查询
实际开发中我们所要的数据往往来自不同的表中,所以需要多表联合查询,要了解联合查询,就要先了解笛卡尔积,简单来说就是将多个表排列组合形成一张新的表,然后再根据表之间的联系(比如之前讲的 primary key 与 foreign key 的联系)以及我们的需求筛选出我们要查找到内容。但是需要注意的是,这种操作一般能不用就不用,因为要查找的内容过于庞大,会导致服务器阻塞(当然在自己的库试试没事,毕竟没多少数据)
- 内连接
两种写法:
select column... from 表1 join 表2 on 条件1 and 条件2...;
select column... from 表1 ,表2... where 条件1 and 条件2...;
//可以使用别名
- 外连接
select column... from 表1 left/right join 表2 on 条件1 and 条件2...;

画个图看一看内连接与外连接的区别:

- 自链接
顾名思义就是指同一张表连接自身进行查询
- 子查询
简单来说就是 select 和 select 可以套用
例如:
select * from student where class_id = (select class from student where id in(1,2,3));
- 合并查询
在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 union,union all。使用union 和 union all 时,前后查询的结果集中,字段需要一致.
例如:
select * from stduent where age < 20 union / union all select * from student where id < 10;
union 可以自动去重,union all 不去重。
相关文章:
MySQL数据库表的增删查改 - 进阶
一,数据库约束 1.1 约束对象 not null - 该列不能为空unique - 保证该列的每一行都不一样default - 规定没有给列赋值时的默认值(自定义)primary key - not null 和 unique 的结合,会给该列添加一个索引࿰…...
8086汇编语言工作环境 百度网盘下载
链接:https://pan.baidu.com/s/1-1K7gX859xejaUK70OTgtw?pwdbfa5 提取码:bfa5 为了方便下载,找了很多资料,也是从其他人那边分享过来的,也方便其他人 文件内容:...
ES6 解构
解构的语法 … {} 解构的语法中,...(展开运算符)和 {}(对象字面量)扮演着不同的角色。 ...(展开运算符): 在解构中,... 被用作展开运算符,用于将数组或对象中…...
React三个状态时触发的相应钩子
01.初始化状态。 这个阶段由render()函数触发; 1.constructor(); 2.componentWillMount(); 在17版本以后改为UNSAFE_componentWillMount() reason:react为组件异步渲染做准备; 3.render(); 4.componentDidMount(); 这…...
阿里云服务器部署Drupal网站教程基于CentOS系统
阿里云百科分享如何在CentOS 7操作系统的ECS实例上搭建Drupal电子商务网站。Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。它用于…...
【广州华锐视点】VR燃气轮机故障判断模拟演练系统
VR燃气轮机故障判断模拟演练系统由广州华锐视点开发,是一款基于虚拟现实技术的教育工具,旨在为学生提供一个安全、高效、互动的学习环境,帮助他们更好地掌握燃气轮机的故障诊断技能。 这款VR实训软件能够模拟真实的燃气轮机故障诊断场景&…...
第01天 什么是CSRF ?
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 每天一个知识点 ✨特色专栏࿱…...
uniapp 自定义手机顶部状态栏不生效问题
想要的效果想淘宝一样,底色覆盖到手机顶部,找了两天都没找到原因,过程很艰苦,直接上结果吧 项目是后来接手的,最终原因出在这, "immersed" : false>设置为 true 就可以了,沉浸式样…...
C++语法中bitset位图介绍及模拟实现
一、位图的引入 先来看下边一道面试题: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 经过我们之前的学习,我们可能会有以下的思路: 对这些数进行排序ÿ…...
Debezium系列之:深入理解消息过滤,实现过滤数据库删除事件,只采集数据库新增和更新事件
Debezium系列之:深入理解消息过滤,实现过滤数据库删除事件,只采集数据库新增和更新事件 一、需求背景二、相关技术三、部署相关jar包四、参数详解五、总结一、需求背景 使用Debezium采集数据库数据,现在部分表只想采集新增数据和更新数据二、相关技术 实现这个需求的技术可…...
Substack 如何在去中心化内容创作领域掀起波澜
面对数字内容广告化的困境,Substack回归做内容的初心,通过产品和平台双轮驱动,重塑一个去中心化的多元文化内容聚集地,实现了增长突破。其核心策略在于先使用简洁的创作工具赋能内容生产,进而通过平台的互动机制促进用…...
【MFC】07.MFC六大机制:消息映射-笔记
本专栏上两篇文章分别介绍了【MFC】05.MFC第一大机制:程序启动机制和【MFC】06.MFC第二大机制:窗口创建机制,这篇文章来为大家介绍MFC的第三大机制:消息映射 typfd要实现消息映射,必须满足的三个条件: 类必…...
python操作数据库
python操作数据库 首先安装数据插件 pip install pymysqlfrom pymysql import Connection # 引入数据库第三方包# 创建链接 conn Connection(host"localhost", # 主机名ipport3306,user"root",# 用户名password"123456" # 密码 )print(con…...
【C语言】小游戏-三字棋
大家好,我是深鱼~ 目录 一、游戏介绍 二、文件分装 三、代码实现步骤 1.制作简易游戏菜单 2.初始化棋盘 3.打印棋盘 4.玩家下棋 5.电脑随机下棋 6.判断输赢 7.判断棋盘是否满了 四、完整代码 game.h(相关函数的声明,整个代码要引用的头文件以及宏…...
多线程与并发编程面试题总结
多线程与并发编程 多线程 线程和进程的区别? 从操作系统层面上来讲:进程(process)在计算机里有单独的地址空间,而线程只有单独的堆栈和局部内存空间,线程之间是共享地址空间的,正是由于这个特性,对于同…...
在多页面应用和单页面应用中(例如vue)怎么提高seo搜索引擎优化
那么 我们要先知道 搜索引擎是怎么工作的? 搜索引擎是通过一系列步骤来工作的,以下是其基本原理: 1、网络爬虫:搜索引擎使用网络爬虫(也称为蜘蛛、机器人)来从互联网上抓取网页。网络爬虫按照预定义的规则…...
Dubbo 2.7.0 CompletableFuture 异步
了解Java中Future演进历史的同学应该知道,Dubbo 2.6.x及之前版本中使用的Future是在java 5中引入的,所以存在以上一些功能设计上的问题,而在java 8中引入的CompletableFuture进一步丰富了Future接口,很好的解决了这些问题。 Dubb…...
pytest-xdist分布式测试原理浅析
目录 pytest-xdist执行流程: pytest-xdist 模块结构: pytest-xdist分布式测试原理: pytest-xdist源码浅读: pytest-xdist执行流程: 解析命令行参数:pytest-xdist 会解析命令行参数,获取用户…...
研发工程师玩转Kubernetes——PVC通过storageClassName进行延迟绑定
不同的PV可以使用相同的StorageClass,它们是一对多的关系。 PV可以设置节点亲和性。比如下图,local-storage-class-waitforfirstconsumer-pv-ubuntuc只能在节点ubuntuc上;local-storage-class-waitforfirstconsumer-pv-ubuntud只能在节点ubu…...
6.利用matlab完成 符号矩阵的秩和 符号方阵的逆矩阵和行列式 (matlab程序)
1.简述 利用M文件建立矩阵 对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。下面通过一个简单例子来说明如何利用M文件创建矩阵。 例2-2 利用M文件建立MYMAT矩阵。(1) 启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵:(2) 把…...
用Simulink手把手搭建7自由度悬架模型:从方程到仿真的保姆级避坑指南
用Simulink手把手搭建7自由度悬架模型:从方程到仿真的保姆级避坑指南 在车辆动力学研究中,7自由度悬架模型是分析整车振动特性的黄金标准。不同于简单的四分之一车模型,它能同时捕捉车身垂向跳动、俯仰、侧倾以及四个车轮的独立运动ÿ…...
form-create-designer进阶玩法:结合CodeMirror实现表单JSON的版本管理与团队协作
form-create-designer团队协作实战:构建企业级表单配置中心 在大型前端项目中,表单往往是业务逻辑最密集、变更最频繁的部分。传统开发模式下,每次表单调整都需要前端工程师手动修改代码,既低效又容易出错。form-create-designer通…...
从ViT的class token到Lora适配器:手把手教你用nn.Parameter为PyTorch模型注入可学习‘外挂’
从ViT的class token到Lora适配器:手把手教你用nn.Parameter为PyTorch模型注入可学习‘外挂’ 在深度学习模型的演进历程中,我们常常会遇到这样的需求:既希望保留预训练模型的核心结构,又需要为其添加特定任务的可学习组件。这种&q…...
BilibiliDown:一站式B站视频下载解决方案,轻松保存你喜欢的每一个视频
BilibiliDown:一站式B站视频下载解决方案,轻松保存你喜欢的每一个视频 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https:…...
别再手动敲AT指令了!用STM32CubeMX HAL库驱动ESP8266连接OneNET的保姆级教程
STM32CubeMX与HAL库驱动ESP8266连接OneNET的工程化实践 在物联网设备开发中,WiFi模块的集成往往是项目成败的关键节点。传统基于AT指令的手动调试方式不仅效率低下,还容易引入人为错误。本文将展示如何利用STM32CubeMX生成的HAL库代码,构建一…...
设计系统已死?AI时代的两种终极范式对决:Awesome DESIGN.md vs UI UX Pro Max
2026年4月,GitHub Trending榜单上一个名为"Awesome DESIGN.md"的项目以惊人的速度攀升,10天斩获4万星,20天突破10万星,创下了前端领域有史以来最快的增长记录。与此同时,一个名为"UI UX Pro Max"的…...
MyBatis报错‘Error attempting to get column‘?别慌,这3种原因和解决方案帮你搞定
MyBatis报错Error attempting to get column的深度排查与实战修复指南 当你在深夜赶项目时,控制台突然抛出Error attempting to get column start_time from result set这样的错误,是不是瞬间血压飙升?别担心,这个MyBatis的经典错…...
不止于回归:用Stata玩转时间序列预测与面板数据模型(实战案例解析)
不止于回归:用Stata玩转时间序列预测与面板数据模型(实战案例解析) 在数据分析的进阶领域,时间序列与面板数据模型如同两把瑞士军刀,能切开复杂现实问题的坚硬外壳。当宏观经济指标在时间维度上波动起伏,当…...
Office安装新姿势:不会写XML?用官方配置网站5分钟搞定ODT安装文件
Office 2021极简安装指南:告别XML恐惧,官方工具5分钟搞定 每次看到命令行窗口弹出,手指就不自觉地悬在键盘上方犹豫不决?面对满屏尖括号和属性的XML配置文件,感觉像在读天书?作为常年与Office打交道的技术…...
像素语言·维度裂变器效果展示:看平庸文本如何“裂变”成精彩内容
像素语言维度裂变器效果展示:看平庸文本如何"裂变"成精彩内容 1. 工具概览:16-bit像素风格的文本增强工坊 像素语言维度裂变器(Pixel Dimension Fissioner)是一款独特的文本增强工具,它将传统AI文本处理的工业感转化为充满游戏趣…...
