MySQL增删查改进阶

  • 数据库约束
  • 表的关系
  • 增删查改

目录

一.数据库约束类型

NOT NULL约束类型

UNIQUE 唯一约束

DEFAULT 默认值约束

PRIMARY KEY:主键约束

FOREIGN KEY :W外键约束

二,查询

count()两种用法

sum,avg,max,min用法

​编辑

GROUP BY 子句

HAVING 条件

三,联合查询

内连接

外联结

自连接

子查询

合并查询


一.数据库约束类型
  • NOT NULL --只是表的某一列不能储存NULL值
  • UNIQUE --保证某列的每行必须有为一值
  • DEFAULT -- 规定没有给列赋值时的默认值
  • PRIMARY KEY -- 是NOT NULL 与 UNIQUE 的结合。确保某列有唯一标识,有助于快速特定寻找表中一个特定记录
  • RFOREIGN KEY --保证一个表中的数据匹配到另一个表中的值的参照完整性
  • CHECK --保证列中的值符合特定的条件。

NOT NULL约束类型

创建表时可指定,某列不为空

可以看到报错显示,id这一列不能为空,因为被NOT NULL修饰


UNIQUE 唯一约束

指定某一列的值唯一不可重复

创建stu表,指定name这一列被UNIQUE修饰,表中插入两个‘张三’,所以报错,插入失败。


DEFAULT 默认值约束

最初的默认值为NULL。插入数据时,如果某一列值为空,可以为其设定默认值

通过desc 表名 查看设置成功后的默认值

在未设置默认值前查看初始默认值

设置默认之后查看默认值


PRIMARY KEY:主键约束

指定某一列为主键,主键同时具有NOT NOLL 和UNIQUE的性质

主键通常搭配自增长auto_increment来使用。对于插入的数据对应的字段不给值时,使用最大值加一。

id这一列就是主键

自增长auto_increment什么意思?插入数据时可以不插入主键的值,让数据库自己分配,按照

1,2,3,4.....等顺序的模式,也可以手动指定其他数值,

这幅图中,在顺序插入前四个数据时,在自增主键的作用下再次插入数据是从4开始,还是从101开始嘞?答案是101,自增主键如果不指定数据,则默认从最大的值加一开始插入。

主键通常是某个表里的唯一身份表示,一般不允许存在多个主键,但是数据库里允许把多个列共同作为一个主键(联合主键),一般以数字作为主键,偶尔用字符串为主键。


FOREIGN KEY :W外键约束

外键用于关联其他主键唯一键

创建父表:

创建子表:

子表中的class引用自父表class中的class列class表中的数据制约啦stu表中的class

在子表中一定要确保插入的数据classid 在父表中存在。

插入:在子表中插入数据会触发对父表的查询,若没有对应的数据会报错

父表:class

在子表插入数据

在子表插入班级为6的学生会报错,因为在插入子表数据时会触发对父表的查询,父表不存在会报错。

在删除附父表中的记录被子表引用,就不能删除啦,应该先删除子表中的数据再回头删除附表中的数据

会报错,此时外键正在引用父表中的数据。

正确删除方法:

一定要确保删除子表再删除父表。


二,查询
  1. 聚合查询

常见的聚合查询函数有                 

COUNT([distinct] exper)      返回查询到的数量
SUM    ([distinct] exper)    返回查询到的数量总和
AVG     ([distinct] exper)    返回查询到数据的平均值,非数字为意义
MAX     ([distinct] exper)    返回查询到数据最大值,非数字无意义
MIN      ([distinct] exper)    返回查询到数据最小值,非数组无意义

count()两种用法

先对select 进行查询,根据结果再执行count

count(*)/  count(0) null也算进去

count(列名) null不算进去


sum,avg,max,min用法

GROUP BY 子句

select使用GROUP BY 子句可以指定列名进行分组查询。

使用group by 指定某一个列,就会把列值相同的行回到一个组中,分完组后还可以针对每个组进行聚合查询

select 列名 from 表名 group by 列名;

一个查询可以包括分组前的条件和分组后的过滤条件

在上述的条件下,排除张三


HAVING 条件

在GROUP BY 子句进行分组的后,要对分组结果进行条件过滤,不能使用where语句,要使用having

显示平均工资低于10000的角色和他的平均工资


三,联合查询
内连接

实际开发中数据往往来自不同的表,要多表联合查询,用一张表的每个记录去和另一个表的记录一一匹配就是笛卡尔积

以上四个表student包含学生个人信息,classes包含各个班级信息,coures包含课程,score包含个人分数

1.查询许仙的成绩

其中的,可以换成join where可以换成on 

2.查询所有同学的成绩及个人信息


外联结

select 字段名 from 表名1 left join 表名2 on 筛选条件

外连接于内连接相似,

查询‘老外学习中文’同学没有开始成绩,但是也要显现出来


自连接

自连接是指同一张表连接自身进行查询

SQL中进行条件查询,是针对列于列之间比较的,不能把比较行,如果把一个表自己与自己链接

就可以比较行。

注意:在进行自连接的过程中,两个表名不能相同,重命名其中一个表


子查询

子查询是嵌入再其他sql语句中的select语句,也叫嵌套查询

select*from 表名 where 列名 = (select 列名 from student where 条件);

查询与‘不行毕业同班同学’


合并查询

实际应用中,为了合并多个执行结果,可以使用集合操作符union,union all 

使用union 和union all 要求查询结果集中,字段一致。

select *from course where id<3 union select *from course where name='英文'

union取得结果集的并集,自动去除重复行

union all 不会去除重复行


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

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

相关文章

Vue3_创建项目

目录 一、创建vue项目 1.下载vue 2.进入刚才创建的项目 3.安装依赖 4.运行项目 ​5.打包项目放入生产环境 二、vue项目组成 1.项目文件结构 2.项目重要文件 Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、C…

【安全产品】基于HFish的MySQL蜜罐溯源实验记录

MySQL蜜罐对攻击者机器任意文件读取 用HFish在3306端口部署MySQL蜜罐 配置读取文件路径 攻击者的mysql客户端版本为5.7(要求低于8.0) 之后用命令行直连 mysql -h 124.222.136.33 -P 3306 -u root -p 可以看到成功连上蜜罐的3306服务&#xff0c;但进行查询后会直接lost con…

for循环绑定id,更新html页面的文字内容

需求&#xff1a;将方法中内容对齐 实现方式 给for循环中每个方法添加一个动态的id在DOM结果渲染完后&#xff0c;更新页面数据&#xff0c;否则会报错&#xff0c;找不到对应节点或对应节点为空 <view v-for"(item, index) in itemList" :key"index"…

OWASP十大API漏洞解析:如何抵御Bot攻击?

新型数字经济中&#xff0c;API是物联网设备、Web和移动应用以及业务合作伙伴流程的入口点。然而&#xff0c;API也是犯罪分子的前门&#xff0c;许多人依靠Bot来发动攻击。对于安全团队来说&#xff0c;保护API并缓解Bot攻击至关重要。那么Bot在API攻击中处于怎样的地位&#…

【ARM+Codesys案例】T3/RK3568/树莓派+Codesys枕式包装机运动控制器

枕式包装机是一种包装能力非常强&#xff0c;且能适合多种规格用于食品和非食品包装的连续式包装机。它不但能用于无商标包装材料的包装&#xff0c;而且能够使用预先印有商标图案的卷筒材料进行高速包装。同时&#xff0c;具有稳定性高、生产效率高&#xff0c;适合连续包装、…

C语言 数组—— 一维数组下标越界问题分析

目录 数组元素的访问 一维数组元素的越界访问 二维数组元素的越界访问 小结 数组元素的访问 访问数组元素时&#xff0c; 下标越界 是大忌&#xff01;  编译器通常不检查下标越界&#xff0c;导致程序运行时错误  下标越界&#xff0c;将访问数组以外的空间  …

pyqt窗体水印

pyqt窗体水印 介绍效果代码 介绍 给窗体加上水印 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.QtGui import QPainter, QColor, QFont,QPen from PyQt5.QtCore import Qtclass WatermarkedWindow(QMainWindow):def __init__(se…

鸿蒙4.2小版本推出,鸿蒙5.0已经不远了

上个月&#xff0c;市场上迎来了华为鸿蒙系统4字开头的小升级&#xff0c;版本来到了4.2版本。 我们先来看看4.2版本都给用户带来哪些特色&#xff1a; 界面切换更流畅&#xff1a;无论是响应速度还是操作手感&#xff0c;用户都将感受到更加迅速和顺滑的体验 搜星速度的显著…

工具:Visual Studio Code

一、VSCode生成exe 二、在vs中断点调试 如果没效果需要安装如下与unity相连接的插件 三、注释 1、代码注释 注释和取消都是都是同一个命令&#xff1a;选中代码&#xff0c;然后按住CtrlShift/ 2、方法或类注释 /// 四、导航 五、将变量注释展示到解释面板 1、直接显示 [Too…

pip安装软件包提示“没有那个文件或目录”问题的处理

文章目录 一、Python.h&#xff1a;没有那个文件或目录二、lber.h&#xff1a;没有那个文件或目录 一、Python.h&#xff1a;没有那个文件或目录 pip install -I python-ldap3.0.0b1 #异常提示In file included from Modules/LDAPObject.c:3:0:Modules/common.h:9:20: 致命错…

【NVM】持久内存的架构

1 内存数据持久化 1.1 数据持久化 持久内存系统包含如下关键组件&#xff1a;微处理器、连接微处理器内存总线上的持久内存模组&#xff08;Persistent MemoryModule&#xff0c;PMM&#xff09;及持久内存上的非易失性存储介质。 使用持久内存来实现数据的持久化&#xff0c…

SpringCloud系列(22)--Ribbon默认负载轮询算法原理及源码解析

前言&#xff1a;在上一篇文章中我们介绍了如何去切换Ribbon的负载均衡模式&#xff0c;而本章节内容则是介绍Ribbon默认负载轮询算法的原理。 1、负载轮询算法公式 rest接口第N次请求数 % 服务器集群总数 实际调用服务器下标&#xff08;每次服务器重启后rest接口计数从1开始…

爬虫在金融领域的应用:股票数据收集

介绍 在金融领域&#xff0c;准确及时的数据收集对于市场分析和投资决策至关重要。股票价格作为金融市场的重要指标之一&#xff0c;通过网络爬虫技术可以高效地从多个网站获取实时股票价格信息。本文将介绍网络爬虫在金融领域中的应用&#xff0c;重点讨论如何利用Scrapy框架…

给uniapp的扩展组件uni-file-picker设置默认显示的图片

官方给出的代码如下所示&#xff0c;但是按照官网给出的代码图片并没有显示出来。 <template><uni-file-picker readonly :value"fileLists" :imageStyles"imageStyles" file-mediatype"image"></uni-file-picker> </temp…

四川农业大学Java实训项目圆满收官,汇智知了堂引领学子实践创新

近日&#xff0c;四川农业大学与汇智知了堂共同举办的Java实训项目正式迎来了项目汇报阶段。本次实训是汇智知了堂在高等教育领域深化校企合作、推动产教融合的一次重要实践&#xff0c;旨在为广大学子提供一个将理论知识与实际操作相结合的平台。 在实训过程中&#xff0c;汇…

selenium源码学习

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

vr数字成果展在线展示突破用户传统认知

想要轻松搭建一个充满互动与创意的3D数字展厅吗?vr互动数字展厅搭建编辑器将是您的不二之选!华锐视点3D云展平台提供的vr互动数字展厅搭建编辑器将空间重建与互动制作完美结合&#xff0c;让您轻松实现3D空间的搭建与互动营销制作。 在vr互动数字展厅搭建编辑器的帮助下&#…

牛客题霸-SQL大厂面试真题(一)

本文基于前段时间学习总结的 MySQL 相关的查询语法&#xff0c;在牛客网找了相应的 MySQL 题目进行练习&#xff0c;以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多&#xff0c;因此本文不再展示&#xff0c;只提供 MySQL 代码与示例输出。 以下内容是…

抖店类目错放怎么办?怎么改类目?快速解决抖店类目错放问题

大家好&#xff0c;我是电商花花。 我们运营抖音小店的时候&#xff0c;都知道不要放错类目&#xff0c;也知道放错类目的后果&#xff0c;类目错放可能导致商品无法在正确的类目中展示&#xff0c;从而影响到商品的一个曝光率。 严重的话还被平台扣分&#xff0c;扣保证金&a…

隐藏服务器源IP怎么操作,看这一篇学会!

在当今的网络环境中&#xff0c;服务器作为信息和服务的中枢&#xff0c;常驻于公网之上&#xff0c;面临着各式各样的安全威胁&#xff0c;其中&#xff0c;分布式拒绝服务&#xff08;DDoS&#xff09;攻击尤为猖獗&#xff0c;它通过协调大量计算机同时向目标服务器发送请求…