【MySQL基本查询(下)】

news2025/1/11 17:33:46

文章目录

  • 一、update
    • 案例
  • 二、Delete
    • 案例
    • 注意:delete 全表数据的行为慎用!
    • truncate
  • 三、插入查询结果
    • 案例
  • 四、了解一些函数
    • 1.count函数
    • 2.sum函数
    • 3. avg函数
    • 4.max函数
    • 5. min函数
  • 五、group by子句的使用
    • 案例
    • having和where


一、update

该关键字的功能就是更新指定表中指定的数据。

语法:

UPDATE table_name SET column = expr [, column = expr …]
[WHERE …] [ORDER BY …] [LIMIT …]

接着上一篇文章的表:
在这里插入图片描述

现在想更新孙悟空的数学成绩到100分。

mysql> update exam_result set math=100 where name = ‘孙悟空’;

案例

将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
mysql> update exam_result set math=60,chinese=70 where name = ‘曹孟德’;
在这里插入图片描述

将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
第一步:先找出这三名同学
mysql> select name,math,chinese + math + english as total from exam_result order by total limit 3 ;
第二步:将这三名同学的数学成绩加上30
mysql> update exam_result set math=math+30 order by chinese+math+english limit 3 ;

成绩修改前:
在这里插入图片描述

成绩修改后:
在这里插入图片描述

注意:不支持 math += 30 这种语法

将所有同学的语文成绩更新为原来的 2 倍
mysql> update exam_result set chinese = chinese*2;
在这里插入图片描述

注意:update更新全表的这条语句慎用。其危害不亚于delete表。

二、Delete

语法:

DELETE FROM table_name [WHERE …] [ORDER BY …] [LIMIT …]

注意区别于drop,drop是删除表结构的,不是删除表数据。

案例

删除孙悟空同学的考试成绩
mysql> delete exam_result where name = ‘孙悟空’;

在这里插入图片描述

注意:delete 全表数据的行为慎用!

准备一张测试表:

CREATE TABLE for_delete (
id int primary key auto_increment,
name varchar(20)
);
插入一些数据后:如下图

在这里插入图片描述
执行delete命令后,结果为空了。

但是这种删除表的方式,不会对表的自增式数据清空,比如上面表插入了三条信息,删除完后,再次插入信息,auto_increment约束记录的是从id=4开始的。
在这里插入图片描述

truncate

注意:这个操作慎用

  1. 只能对整表操作,不能像 DELETE 一样针对部分数据操作;
  2. 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事
    物,所以无法回滚
  3. 会重置 AUTO_INCREMENT 项

该关键字也能将表的内容删除。

truncate + 表名
删除表的所有数据。
不同于delete的是,这个truncate关键字,删除表的内容后,也会将自增键auto_increment的值清空,也就意味着下次插入的时候会从1开始自增。

在这里插入图片描述


三、插入查询结果

语法:

  • INSERT INTO table_name [(column [, column …])] SELECT …

也就是把 select 查询出来的结果进行插入。

案例

案例:删除表中的的重复复记录,重复的数据只能有一份。

首先创建原数据表 CREATE TABLE duplicate_table (id int, name varchar(20)); Query OK, 0 rows affected (0.01 sec)
再插入测试数据 INSERT INTO duplicate_table VALUES (100, ‘aaa’), (100, ‘aaa’), (200, ‘bbb’), (200, ‘bbb’), (200, ‘bbb’), (300, ‘ccc’); Query
OK, 6 rows affected (0.00 sec)Records: 6 Duplicates: 0 Warnings: 0

思路:

1)创建一个跟duplicate_table 相同类型的表格。
CREATE TABLE no_duplicate_table LIKE duplicate_table;
2)将duplicate_table的去重数据插入到no_duplicate_table
INSERT INTO no_duplicate_table SELECT DISTINCT * FROM duplicate_table;
3)通过重命名表,实现原子的去重操作
RENAME TABLE duplicate_table TO old_duplicate_table,
no_duplicate_table TO duplicate_table;

最后结果如下:

在这里插入图片描述

其中上篇文章讲到,去重的关键字是distinct

四、了解一些函数

在这里插入图片描述

1.count函数

案例:统计班级共有多少同学。
select count(*) as 总数 from exam_result;

在这里插入图片描述

统计班级收集的 qq 号有多少
mysql> select count(qq) from students;
在这里插入图片描述

统计本次考试的数学成绩分数个数
mysql> select count(math) from exam_result; —统计的是统计的是全部成绩
mysql> select count(distinct math) from exam_result; —统计的是统计的是去重成绩

2.sum函数

一般用来统计总分。

案例:

统计班级数学总成绩
mysql> select sum(math) from exam_result;
在这里插入图片描述

3. avg函数

一般用来统计平均分。

案例:统计平均总分
mysql> select avg(chinese+math+english) as 平均总分 from exam_result;
在这里插入图片描述

4.max函数

可以用来统计最高分。

案例:统计全班英语最高分
mysql> select max(english) from exam_result;
在这里插入图片描述

5. min函数

一般统计最低(小)的分数。

案例:返回 > 70 分以上的数学最低分
mysql> select min(math) from exam_result where math > 70;在这里插入图片描述

五、group by子句的使用

在select中使用group by 子句可以对指定列进行分组查询

group by 的核心作用:为了分组之后,方便进行聚合统计。

语法:

  • select column1, column2, … from table group by column;

获取一张员工表,员工表的信息如下:
在这里插入图片描述

上面的员工信息表,可以看成一个大组。

给员工表按照deptno(department No. 部门)进行分组,结果如下:

mysql> select deptno,max(sal) as 最高工资 , avg(sal) as 平均工资 from emp group by deptno;

在这里插入图片描述

按照部门进行分组后,三个部门的的最高工资,平均工资就一目了然,这样就是按照要求进行分组了。

分组,就是把一组按照条件,拆分成多个组,进行各自组内的统计。
分组,也就是把一张表按照一定条件,拆分成多组,然后在每个组内进行聚合统计。

案例

显示每个部门的每种岗位的平均工资和最低工资
mysql> select deptno,job,min(sal), avg(sal) from emp group by deptno,job;
在这里插入图片描述

先分组统计每个部门的最低和平均工资,再对结果进行聚合。

having和where

having:对最后聚合出来的结果进行判断。

案例:列出表的信息,SMITH这名员工不参与统计。
mysql> select deptno,job,avg(sal) as myavg from emp where ename!=‘SMITH’ group by deptno,job having myavg < 2000;
在这里插入图片描述

对该SQL语句进行解读:

在这里插入图片描述
不能单纯地认为,只有从磁盘上导入到MySQL中的真实存在的才叫做表。
每个过程中产生的,和最终筛选出来的,都是表!!!

总结:

“MySQL下一切皆表。”

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

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

相关文章

基于SpringBoot的全国风景区WebGIS按省展示实践

目录 前言 一、全国风景区信息介绍 1、全国范围内数据分布 2、全国风景区分布 3、PostGIS空间关联查询 二、后台查询的设计与实现 1、Model和Mapper层 2、业务层和控制层设计 三、WebGIS可视化 1、省份范围可视化 2、省级风景区可视化展示 3、成果展示 总结 前…

C++ 抽象与封装

一 抽象 抽象实例&#xff1a;时钟 数据抽象&#xff1a; 具有表面当前时间的时、分、秒 行为抽象&#xff1a; 具有设置时间和显示时间两个最基本的功能。 抽象实例&#xff1a;人 数据抽象&#xff1a;姓名、年龄、性别等。 行为抽象&#xff1a; 生物属性&#xff1a;吃…

Cocos creator实现《战机长空》关卡本地存储功能

Cocos creator实现《战机长空》关卡本地存储功能 Cocos creator在开放小游戏过程中&#xff0c;经常会出现设置关卡&#xff0c;这里记录一下关卡数据本地存储功能。 一、关卡设置数据 假如我们有关卡数据如下&#xff0c; let settings [ { level: 1, // 第1关 score: 0,…

Java类加载器介绍

在Java中&#xff0c;类加载器是一种动态加载类的机制&#xff0c;它负责在运行时查找、加载和链接类文件。当Java应用程序需要创建某个类的对象时&#xff0c;类加载器会在运行时查找该类对应的.class文件&#xff0c;并将其加载到Java虚拟机中。Java类加载器通常分为三层&…

【MQTT】mosquitto 的 “下载、交叉编译、使用” 详细教程,手把手搭建一个MQTT Broker

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-05-11 0…

系统架构设计师 - 计算机组成与体系结构(1)

计算机组成与体系结构 计算机组成与体系结构计算机结构 ★CPU 组成结构运算器组成控制器组成 计算机体系结构冯诺依曼结构哈弗结构 嵌入式芯片&#xff08;了解&#xff09; 存储系统 ★★★★概述Cache主存编址磁盘管理磁盘基本结构与存取过程磁盘优化分布存储磁盘管理 大家好…

C++:多态-重写和重载

重写&#xff08;Override&#xff09;和重载&#xff08;Overload&#xff09;是面向对象编程中常用的两个概念&#xff0c;它们虽然都涉及到方法的定义&#xff0c;但是在实现和使用上有着不同的特点。 重写&#xff08;Override&#xff09;&#xff1a; 重写是指在子类中重…

部署xwiki服务需要配置 hibernate.cfg.xml如何配置?

1. 定位 hibernate.cfg.xml 文件 首先&#xff0c;确保您可以在 Tomcat 的 XWiki 部署目录中找到 hibernate.cfg.xml 文件&#xff1a; cd /opt/tomcat/latest/webapps/xwiki/WEB-INF ls -l hibernate.cfg.xml如果文件存在&#xff0c;您可以继续编辑它。如果不存在&#xff…

Go语言系统学习笔记(一):基础篇

1. 写在前面 公司的新业务开发需要用到go语言&#xff0c;虽然之前没接触过这门语言&#xff0c;但在大模型的帮助下&#xff0c;边看项目边写代码也能进行go的项目开发&#xff0c;不过&#xff0c;写了一段时间代码之后&#xff0c;总感觉对go语言本身&#xff0c;我的知识体…

【SRC实战】合成类小游戏外挂漏洞

挖个洞先 https://mp.weixin.qq.com/s/ZnaRn222xJU0MQxWoRaiJg “以下漏洞均为实验靶场&#xff0c;如有雷同&#xff0c;纯属巧合” 合成类小游戏三个特点&#xff1a; 1、一关比一关难&#xff0c;可以参考“羊了个羊” 2、无限关卡无限奖励&#xff0c;可以参考“消灭星星…

BBS客户端服务器的编写

根据网络编程中的内容&#xff0c;我们本篇文章将讲解一个bbs通信的项目&#xff0c;首先让我们了解一下什么是bbs. 一、bbs介绍 BBS&#xff0c;即Bulletin Board System的缩写&#xff0c;中文译为“电子公告板系统”或“网络论坛”。它是一个在网络上进行信息交流和讨论的…

【科研】常用的实验结果评价指标(1) —— R2(R-square)是什么?

常用的实验结果评价指标&#xff08;1&#xff09; —— R2(R-square)&#xff0c;可能为负数吗&#xff1f;&#xff01; 提示&#xff1a;先说概念&#xff0c;后续再陆续上代码 文章目录 常用的实验结果评价指标&#xff08;1&#xff09; —— R2(R-square)&#xff0c;可能…

基于WPF的DynamicDataDisplay曲线显示

一、DynamicDataDisplay下载和引用 1.新建项目,下载DynamicDataDisplay引用: 如下图: 二、前端开发: <Border Grid.Row="0" Grid.Column="2" BorderBrush="Purple" BorderThickness="1" Margin="2"><Grid>…

【智能算法应用】基于麻雀搜索算法-支持向量回归预测(SSA-SVR)

目录 1.算法原理2.数学模型3.结果展示4.调试记录5.参考文献6.代码获取 1.算法原理 【智能算法】麻雀搜索算法&#xff08;SSA&#xff09;原理及实现 2.数学模型 支持向量机(SVM)是针对二分类问题&#xff0c;支持向量回归(SVR)基于SVM应用与回归问题。SVR回归与SVM分类的区…

【JVM】了解JVM规范中的虚拟机结构

目录 JVM规范的主要内容 1&#xff09;字节码指令集(相当于中央处理器CPU) JVM指令分类 2&#xff09;Class文件的格式 3&#xff09;数据类型和值 4&#xff09;运行时数据区 5&#xff09;栈帧 6&#xff09;特殊方法 7&#xff09;类库 JVM规范的主要内容 1&#…

Paddle 实现DCGAN

传统GAN 传统的GAN可以看我的这篇文章&#xff1a;Paddle 基于ANN&#xff08;全连接神经网络&#xff09;的GAN&#xff08;生成对抗网络&#xff09;实现-CSDN博客 DCGAN DCGAN是适用于图像生成的GAN&#xff0c;它的特点是&#xff1a; 只采用卷积层和转置卷积层&#x…

如何编译不同目录下的两个文件

1.直接编译 2.打包成动静态库进行链接

【Shell脚本】Shell编程之循环语句

目录 一.循环语句 1.for语句的结构 1.1.格式 1.2.实操案例 案例1. 案例2. 案例3. 案例4. 2.while语句的结构 2.1.格式 2.2.实操案例 案例1. 案例2. 案例3. 案例4. 3.until循环命令 3.1.格式 3.2.实操案例 案例1. 二.补充 1.常用转义符 一.循环语句 1.for…

鸿蒙内核源码分析(任务切换篇) | 看汇编如何切换任务

在鸿蒙的内核线程就是任务&#xff0c;系列篇中说的任务和线程当一个东西去理解. 一般二种场景下需要切换任务上下文: 在线程环境下&#xff0c;从当前线程切换到目标线程&#xff0c;这种方式也称为软切换&#xff0c;能由软件控制的自主式切换.哪些情况下会出现软切换呢? 运…

Leetcode—138. 随机链表的复制【中等】(cend函数)

2024每日刷题&#xff08;129&#xff09; Leetcode—138. 随机链表的复制 实现代码 /* // Definition for a Node. class Node { public:int val;Node* next;Node* random;Node(int _val) {val _val;next NULL;random NULL;} }; */class Solution { public:Node* copyRan…