6. MySQL基本查询

news2025/6/7 4:26:58

1. 表的增删改查

Create(创建), Retrieve(读取), Update(更新), Delete(删除)

2. Create & Insert

语法: insert [info] table_name () values ()

2.1. 案例: 创建一个学生表

指定列单行插入, 如果values前省略, 则默认是全属性插入多行指定列插入, 中间分隔符为','

3. 插入替换

3.1. on duplicate: 语句1 on duplicate 语句2

insert into students values () on duplicate key update sn=132,name='xuyou',qq='111'
执行逻辑: 如果语句1插入失败, 则执行语句2, 语句2执行失败, 则报错
现象:
  • 1 row affected: 表中没有冲突数据, 数据被插入
  • 2 row affected: 表中存在冲突数据, 数据被更新
  • 0 row affected: 表中有冲突数据, 且冲突数据的值和update的值相等(update执行失败)

3.2. replace: replace 语句1

执行逻辑: 主键 or 唯一键 没有冲突, 则直接插入; 主键 or 唯一键 存在冲突, 则删除后再插入
现象:
  • 1 row affected: 表中没有冲突数据, 数据被插入
  • 2 row affected: 表中存在冲突数据, 删除后重新插入

4. 基本select指令(查询)

4.1. 全列查询

举例: select * from table_name
可能会影响到索引的使用, 效率比较低
  • 指定一/多列查询 select id, math from table_name
  • select 后可以跟表达式 select math+chinese+english from table_name(计算总成绩)
  • select 可以对表达式重命名 select math+chinese+english as(可省略) total from table_name(计算总成绩)
  • select 支持去重 select distinct math from table_name

5. where子句 判断条件(过滤条件)

语法符号:
  • >, >=, <, <=
  • = 注: null不安全
  • <=>注: null安全
  • != 注: null不安全
  • <>
  • between a0 and a1 范围匹配
  • in (option...)
  • is null
  • is not null
  • like(% _) 模糊匹配
  • and or not

5.1. 知识点: select * from table_name where 语句的执行顺序(⭐⭐⭐)

  • 明确从哪个数据表中拿数据 from table_name
  • 其次看要筛选哪些条件 where 语句
  • 最后进行显示 select *

5.2. 案例

  • 案例1: 找出成绩单中英语不及格(<60)的人的姓名 以及 对应的英语成绩
  • 案例2: 语文成绩在[80, 90]区间的同学的姓名 + 对应的语文成绩
  • 案例3: 数学成绩在58 || 59 || 98 || 99分的同学姓名 + 成绩
  • 案例4: 找一下成绩单中姓孙的同学
  • 案例5: 语文成绩好于英语成绩的同学
  • 案例6: 总分在200分以下的同学
  • 案例7: 语文成绩>80分 并且 不姓孙的同学
  • 案例8: 孙某同学,否则要求总成绩>200 并且 语文成绩<数学成绩 并且 英语成绩>80
  • 案例9: null的查询
  • name is null
  • "" 与 null区分
  • 查询不为空

6. order by子句(排序指令)

语法: select ... from table_name where ... order by column (asc/desc);
  • asc 升序(默认)
  • desc 降序

6.1. 执行顺序: select ... from table_name where ... order by ...

  • FROM:先确定表的来源,并且进行表连接操作(要是有多个表的话)。
  • WHERE:对 FROM 子句产生的记录进行过滤,筛选出符合条件的记录。
  • GROUP BY:按照指定的列对记录进行分组。
  • HAVING:对分组后的结果进行过滤。
  • SELECT:从符合条件的记录中选择需要返回的列。
  • ORDER BY:对查询结果按照指定的列进行排序。
  • LIMIT/OFFSET:限制返回记录的数量或者跳过前面的若干条记录。

6.2. 案例

  • 案例1: 同学及数学成绩, 按照升序显示
  • 案例2: 同学以及qq号进行排序
  • 案例3: 依次查询同学们的各科成绩, 如果有相等的, 按照数学降序, 语文降序, 英语升序的排序进行类推排序显示
  • 案例4: 查询同学的总分, 从高到低查询显示
  • 案例5: 查询姓孙或姓曹的同学, 结果按照数学成绩从高到低进行显示(降序)

7. limit 子句(显示分页)

语法: limit offset_rows(default: 0) rows; || limit rows offset offset_rows;limit的本质是控制最后的显示, 前面经过筛选条件判断的数据要显示什么
建议: 对未知表进行查询时, 最好加一条limit 10, 避免因为表中数据过大造成数据库卡死.
应用: 网站过长文章分页显示.

8. update

语法: update table_name set column = exp where ...(一般是加条件筛选的!) order by ... limit ...

8.1. 案例

  • 案例1: 把孙悟空同学的数学成绩变更为80分
  • 案例2: 将曹孟德同学的数学成绩变更为60分, 语文成绩变更为70分
  • 案例3: 将总成绩倒数前三的三位同学, 数学成绩 += 30分
  • 确定目标表:明确要更新的表是 student。
  • 生成待更新记录集合:对 student 表的所有记录按 math + chinese + english 的总分升序排序,取前 3 条记录形成临时待更新集合。
  • 执行更新操作:对临时集合中的每条记录,将其 math 列的值增加 30。
  • 要点:
    • 排序与限制的作用:ORDER BY 和 LIMIT 这两个子句是在确定最终要更新哪些记录时发挥作用的,而不是在更新操作执行之后才起作用。
    • 更新的原子性:一旦确定了要更新的 3 条记录,更新操作就会按照这 3 条记录原本的顺序依次执行。即便在更新过程中某些记录的总分发生了变化,也不会影响后续其他记录的更新。
    • 与 SELECT 执行顺序的差异:UPDATE 语句不存在 SELECT 语句里那种先投影列(SELECT 子句)再排序的过程。在 UPDATE 中,排序是直接基于原始表的数据进行的。
  • 案例4: 将所有同学的语文成绩更新为原来的两倍
  • 没有筛选条件的时候, 直接是做整表的更新

9. delete

语法: delete from table_name where ... order by ... limit ...

9.1. 案例

  • 案例1: 删除孙悟空的考试成绩
  • 案例2: 删除班级里总成绩倒数第一的人
  • 案例3: 删除整张表(内容)
      • delete from test_table(删除整表)
  • truncate
  • 只能对整表使用, 不能像delete一样针对部分数据操作
  • 实际上mysql不对数据操作, 所以比delete更快, 但是在删除数据的时候不经过真正的事务, 因此不能回滚.
  • 会重置 auto_increment

10. 去重表数据

distinct作用: 删除表中的重复记录, 重复的数据只会存在一份.

11. 聚合统计

函数:
  • COUNT([DISTINCT] expr) 返回查询到的数据的 数量
  • SUM([DISTINCT] expr) 返回查询到的数据的 总和,不是数字没有意义
  • AVG([DISTINCT] expr) 返回查询到的数据的 平均值,不是数字没有意义
  • MAX([DISTINCT] expr) 返回查询到的数据的 最大值,不是数字没有意义
  • MIN([DISTINCT] expr) 返回查询到的数据的 最小值,不是数字没有意义

11.1. 案例:

  • 案例1: 统计班级共有多少同学 (注: 使用表达式统计随便写一个数字也可以)
  • 案例2: 统计班级收集的 qq 号有多少
  • 案例3: 统计本次考试的数学成绩分数个数
  • 案例4: 统计数学成绩总分
  • 案例5: 统计平均总分
  • 案例6: 返回英语最高分
  • 不同的数据类型无法聚合
  • 案例7: 返回 > 70 分以上的数学最低分

12. 分组聚合统计

分组的目的: 方便聚合统计

12.1. 案例:

  • 案例1: 如何显示每个部门的平均工资和最高工资
  • 案例2: 显示每个部门的每种岗位的平均工资和最低工资
  • 案例3: 显示平均工资低于2000的部门和它的平均工资
  • 统计各个部门的平均工资
  • having和group by配合使用,对group by结果进行过滤

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

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

相关文章

CMS32M65xx/67xx系列CoreMark跑分测试

CMS32M65xx/67xx系列CoreMark跑分测试 1、参考资料准备 1.1、STM32官方跑分链接 1.2、官网链接 官方移植文档&#xff0c;如下所示&#xff0c;点击红框处-移植文档: A new whitepaper and video explain how to port CoreMark-Pro to bare-metal 1.3、测试软件git下载链接 …

中国区域30m/15天植被覆盖度数据集(2010-2022)

时间分辨率&#xff1a;日空间分辨率&#xff1b;&#xff1a;10m - 100m共享方&#xff1a;式开放获取数据大小&#xff1a;2.98 TB数据时间范围&#xff1a;2010-01-01 — 2022-12-31元数据更新时间&#xff1a;2024-12-23 数据集摘要 高时空分辨率的植被覆盖度产品存在着广…

力扣HOT100之二分查找:74. 搜索二维矩阵

这道题直接a了&#xff0c;我们可以参考上一道题&#xff1a;35.搜索插入位置的思路&#xff0c;详情见我的上一篇博客。将每一行的第一个元素当作一个数组中的元素&#xff0c;然后对这个数组进行二分查找&#xff0c;如果直接找到了target&#xff0c;则直接返回true&#xf…

编程技能:格式化打印04,sprintf

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏&#xff0c;故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 &#xff08;一&#xff09;WIn32 专栏导航 上一篇&#xff1a;编程技能&#xff1a;格式化打印03&#xff0c;printf 回到目录…

R语言基础| 下载、安装

在此前的单细胞教程中&#xff0c;许多小伙伴都曾因为R语言基础不足而十分苦恼。R语言是一种开源的编程语言和软件环境&#xff0c;专门用于统计分析、图形表示和数据挖掘。它最初由Ross Ihaka和Robert Gentleman在1993年创建&#xff0c;旨在为统计学家和数据分析师提供一个广…

微软的新系统Windows12未来有哪些新特性

在今年即将到来的重大设计升级中,苹果计划对其全线操作系统统一按年份命名,作为另一巨头微软的win12还远吗?win11和win10是微软现在正在用的主流版本,win11系统发布于2021年6月24日,win10系统发布于2015年7月29日。预计win12尝鲜版可能在2025年下半年或明年。 尽管win12还…

在虚拟宇宙中低语——进程间通信,Linux命名管道的前世今生

文章目录 &#x1f30c; 序章&#x1f320; 一、命名管道的宿命与哲学1.1、创建及简单使用1.2、命名管道的工作原理1.3、命名管道与匿名管道的区别 2、命名管道的特点及特殊场景2.1、特点2.2、四种特殊场景 3、命名管道实操3.1、实现文件拷贝3.2、实现进程控制 小结 &#x1f3…

STM32的ADC简介

一、ADC简介 STM32的ADC是一种12位逐次逼近型模拟数字转换器。它具备18个通道&#xff0c;能够测量16个外部信号源以及2个内部信号源。各通道的A/D转换可以执行单次、连续、扫描或间断模式。转换结果可采用左对齐或右对齐的方式&#xff08;12位&#xff09;存储于16位数据寄存…

Bash shell四则运算

文章目录 四则运算1. ‌expr 命令‌2. ‌$(( )) 表达式&#xff08;推荐&#xff09;‌3. ‌$[ ] 表达式&#xff08;已弃用&#xff09;‌4. ‌let 命令‌小数运算i 和 i 区别 四则运算 算术运算&#xff1a; - * / %&#xff08;取模&#xff0c;求余数&#xff09; Bash sh…

(javaSE)Java数组进阶:数组初始化 数组访问 数组中的jvm 空指针异常

数组的基础 什么是数组呢? 数组指的是一种容器,可以用来存储同种数据类型的多个值 数组的初始化 初始化&#xff1a;就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程。 数组初始化的两种方式&#xff1a;静态初始化&#xff0c;动态初始化 数组的静态初始化 初始化…

力扣刷题Day 70:在排序数组中查找元素的第一个和最后一个位置(34)

1.题目描述 2.思路 方法1&#xff08;自己写的&#xff09;&#xff1a;一次二分查找找到等于target的一个元素索引axis&#xff0c;然后向左右延伸找边界。 方法2&#xff08;灵茶山艾府佬的闭区间二分查找写法&#xff09;&#xff1a;定义一个lower_bound()函数找到第一个…

图片压缩工具 | 图片属性详解及读取解析元数据

ℹ️ 图片信息及属性 基本属性 格式类型&#xff1a;JPEG、PNG、GIF、WEBP、BMP、TIFF等文件大小&#xff1a;以KB、MB等为单位的存储空间占用创建/修改日期&#xff1a;文件的元数据时间戳 视觉属性 尺寸/分辨率 宽度&#xff08;像素&#xff09;高度&#xff08;像素&…

C# Onnx 动漫人物人脸检测

目录 效果 模型信息 项目 代码 下载 参考 效果 模型信息 Model Properties ------------------------- stride&#xff1a;32 names&#xff1a;{0: face} --------------------------------------------------------------- Inputs ------------------------- name&am…

C++内存列传之RAII宇宙:智能指针

文章目录 1.为什么需要智能指针&#xff1f;2.智能指针原理2.1 RAll2.2 像指针一样使用 3.C11的智能指针3.1 auto_ptr3.2 unique_ptr3.3 shared_ptr3.4 weak_ptr 4.删除器希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 智能指针是 C 中用于自动…

PVE 虚拟机安装 Ubuntu Server V24 系统 —— 一步一步安装配置基于 Ubuntu Server 的 NodeJS 服务器详细实录1

前言 最近在基于 NodeJS V22 写一个全栈的项目&#xff0c;写好了&#xff0c;当然需要配置服务器部署啦。这个过程对于熟手来说&#xff0c;还是不复杂的&#xff0c;但是对于很多新手来说&#xff0c;可能稍微有点困难。所以&#xff0c;我把整个过程全部记录一下。 熟悉我…

TDengine 开发指南——高效写入

高效写入 本章内容将介绍如何发挥 TDengine 最大写入性能&#xff0c;通过原理解析到参数如何配置再到实际示例演示&#xff0c;完整描述如何达到高效写入。 为帮助用户轻松构建百万级吞吐量的数据写入管道&#xff0c;TDengine 连接器提供高效写入的特性。 启动高效写入特性…

Linux kill 暂停命令

暂停进程 kill -19 在一台服务器上部署了360Pika服务&#xff0c;先用RedisClient连接一下&#xff0c;可以连接 现在暂停进程 暂停后发现再次连接无法连接 恢复进程 kill -18 恢复后可连接

2.0 阅读方法论与知识总结

引言 本文将详细分析考研英语阅读做题步骤&#xff0c;并对方法论进行总结&#xff0c;最后通过真题练习巩固方法。 一、做题步骤 所有技巧都建立在精读真题的基础上&#xff01;建议按以下节奏复习&#xff1a; 1️⃣ 做题 先看题干了解文章大致主旨&#xff08;看看有没有…

5. Qt中.pro文件(1)

本节主要讲.pro文件的作用和一些相关基础知识与操作。 本文部分ppt、视频截图原链接&#xff1a;[萌马工作室的个人空间-萌马工作室个人主页-哔哩哔哩视频] 1 PRO文件 1.1 pro文件作用 添加需要用到的QT模块&#xff0c;如通过QT module_name来添加需要用到的Qt模块。指定生…

简数采集技巧之快速获取特殊链接网址URL方法

简数采集器列表页提取器的默认配置规则&#xff1a;获取a标签的href属性值作为采集的链接网址&#xff0c;对于大部分网站都是适用的&#xff1b; 但有些网站不使用a标签作为链接跳转&#xff0c;而用javascript的onclick事件替代&#xff0c;那列表页提取器的默认规则将无法获…