MySQL基本查询(二)

文章目录

  • Update
  • Delete
  • 插入查询结果(select + insert)
  • 聚合函数
  • 分组聚合统计

在这里插入图片描述

Update

1. 语法:
set后面加列属性或者表达式
UPDATE table_name SET column = expr [, column = expr …][WHERE …] [ORDER BY …] [LIMIT …]

  • 案例
  1. 将孙悟空同学的数学成绩变更为 80 分
update exam_result set math=80 where name = '孙悟空';
  1. 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
update exam_result set math=60,chinese=70 where name='曹孟德';
  1. 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
// 先查询总分最后三名同学的总分
select name,math+english+chinese as total from exam_result order by total asc limit 3; 
// 让后三名同学的数学加上30分
// 先执行order by 再执行update 最后执行limit
update exam_result set math = math + 30 order by math+english+chinese asc limit 3; 
// 再查询最后三名同学的总分
select name,math+english+chinese as total from exam_result order by total asc limit 3; 

可能倒数3名同学会发生变化

  1. 如果update没有设置条件会进行全列的更改,没有where子句则更新全表,更新全表的语句慎用
    将所有同学的语文成绩更新为原来的 2 倍
update exam_result set chinese = chinese*2;

在这里插入图片描述

Delete

  1. 语法:
    DELETE FROM table_name [WHERE …] [ORDER BY …] [LIMIT …]
  • 案例
  1. 删除孙悟空同学的考试成绩
delete from exam_result where name='孙悟空';
// 删除全表的数据
delete from exam_result;
  1. 删除倒数第一的人的成绩
delete from exam_result order by math+english+chinese asc limit 1;
  1. 清空表的数据
    这种做法是不会让auto_increment的值置0的或者置空的
delete from 表名

在这里插入图片描述
4. 截断表
语法:
TRUNCATE [TABLE] table_name

truncate table 表名
  • 会重置 AUTO_INCREMENT 项,删除表之后会重置auto_increment项,把它的值变为1
  • truncate不会做更新日志的操作,delete from会做更新日志的操作
  • 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事
    物,所以无法回滚
  • 只能对整表操作,不能像 DELETE 一样针对部分数据操作
  • 三种日志:
    <> bin log: 历史上操作过的sql语句优化之后保留下来——方便主从同步、备份、恢复
    <> redo log:确保宕机、断电的时候数据不丢失(因为数据可能在内存中存着)——保证崩溃安全
    <> undo log:做事务回滚、事务的隔离性
    在这里插入图片描述

插入查询结果(select + insert)

1. 语法
INSERT INTO table_name [(column [, column …])] SELECT …

  • 案例
    删除表中的的重复记录,重复的数据只能有一份
// 创建空表
create table no_duplicate_table like duplicate_table;
// 将去重之后的表插入到新表中
select distinct * from duplicate_table;
insert into no_duplicate_table select distinct * from duplicate_table;
// 查看no_duplicate_table得到去重之后的数据
select * from no_duplicate_table;
// 通过重命名表,实现原子的的去重操作
// 将原表重命名备份一下,然后把新表的名字改为原表的名字
rename table duplicate_table to old_duplicate_table;
rename table no_duplicate_table to duplicate_table;
// 查看最终的结果
select * from duplicate_table;

2. 只是打印去重,并没有修改原表中的数据
在这里插入图片描述

3. create table no_duplicate_table like duplicate_table;创建像duplicate_table一样的表结构

在这里插入图片描述
4. 为什么最后是通过rename的方式进行的?
单纯就是想等一切都就绪了,然后统一放入、更新、生效等。因为我们的move操作和重命名操作实际上就是在文件系统里就是改这个文件所在的目录里面文件名和inode的映射关系,他相较于冗长地向表中插入和冗长的上传行为比起来非常轻。很有可能我这个目录有很多文件包括正在操作的这个文件正在被外部的网站或者各种语言正在访问,所以我们不能着急动这个表而是应该先把这个表先传到临时目录然后再统一move过去,这是一种比较推荐的做法

聚合函数

在这里插入图片描述

  • 案例
    统计班级共有多少同学
    1. 用*做统计
    在这里插入图片描述
    2. 统计数学成绩有多少个
    select count(math) as res from exam_result;

3. 聚合函数会先算出后面表达式的结果,得到一个数字
统计去重后的数学成绩
select count(distinct math) from exam_result;

4. 统计我们班数学的总分和平均成绩,英语的平均成绩
select sum(math) from exam_result
select sum(math)/count( * ) from exam_result
select sum(english)/count( * ) from exam_result

5. 统计数学成绩的平均分
select avg(math) from exam_result

6. 统计英语成绩的最高分
select max(english) from exam_result

7.返回 > 70 分以上的数学最低分
select min(math) from exam_result where math > 70;

总结:
1.只属于某一个人的信息是无法聚合的,比如名字和平均分在一起聚合就不行

分组聚合统计

  1. 分组的目的是为了进行分组之后进行每组的聚合统计
  2. 把数据拿出来(用select拿)再进行分组
  3. 语法:select column1, column2, … from table group by column;
  4. 指定列名,实际分组,使用该列的不同行数据进行分组的
    在这里插入图片描述
  • 案例

准备工作,创建一个雇员信息表(来自oracle 9i的经典测试表)
1、EMP员工表
2、DEPT部门表
3、SALGRADE工资等级表

// 准备工作
//利用source将该备份文件恢复到数据库中
source /home/r/scott_data.sql;
use scott;
show tables;

在这里插入图片描述
emp
在这里插入图片描述dept
在这里插入图片描述
salgrade
在这里插入图片描述

1. 分组进行统计每个组的最高工资和平均工资

在这里插入图片描述
在这里插入图片描述

  1. 显示每个部门的每种岗位的平均工资和最低工资

在这里插入图片描述
3. 跟在select 后面的必须是分组的列属性或者是聚合函数,因为这些属性有相同的,而下图中名字是每个人都不同的属性,无法分组

在这里插入图片描述

  1. 显示平均工资低于2000的部门和它的平均工资
    先统计每个部门的平均工资,结果先聚合出来
    select deptno,avg(sal) as 平均工资 from emp group by deptno;
    再判断平均工资低于2000的部门再对聚合的结果进行判断
    select deptno,avg(sal) as 平均工资 from emp group bydeptno having 平均工资<2000

在这里插入图片描述
在这里插入图片描述
5. having是对聚合后的统计数据进行条件筛选

在这里插入图片描述

6. having 和 where 的区别
1,2,3,4,5表示顺序
MySQL中在逻辑上一切皆表

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Android Framework学习二:Activity创建及View绘制流程

文章目录 Window绘制流程Window Manager Service&#xff08;WMS&#xff09;SurfaceSurfaceFlinger 安卓View层次结构ActivityPhoneWindowActivity与PhoneWindow两者之间的关系ViewRootImplDecorViewDecorView 的作用DecorView 的结构总结 Activity创建流程View invalidate调用…

基于ssm的智慧养老平台(全套)

一、系统架构 前端&#xff1a;jsp | js | jquery | css 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.8 | mysql | maven | tomcat 二、代码及数据库 三、功能介绍 01. 登录 02. 管理员-主页 03. 管理员-个人中心 04. 管理员-…

计算机视觉技术的发展历程

计算机视觉技术的发展历程可以分为以下几个阶段&#xff1a; 早期探索阶段&#xff08;1960s-1980s&#xff09; 1960年代&#xff1a;计算机视觉的概念开始形成&#xff0c;研究者尝试让计算机识别和理解图像&#xff0c;主要集中在基础的图像处理&#xff0c;如边缘检测和特…

2025五一杯B题五一杯数学建模思路代码文章教学: 矿山数据处理问题

完整内容请看文章最下面的推广群 问题1. 根据附件1中的数据和&#xff0c;建立数学模型&#xff0c;对数据A进行某种变换&#xff0c;使得变换后的结果与数据尽可能接近。计算变换后的结果与数据的误差&#xff0c;并分析误差的来源&#xff08;如数据噪声、模型偏差等&#xf…

.NET 平台详解

什么是 .NET&#xff1f; .NET 是一个由微软开发的跨平台、开源的开发者平台&#xff0c;用于构建多种类型的应用程序。它提供了一致的编程模型和丰富的类库&#xff0c;支持多种编程语言&#xff08;如 C#、F#、Visual Basic&#xff09;。 .NET 的核心组成 运行时环境 CLR …

ICRA 2025 基于触觉反馈的闭环分层控制框架——开放环境下通用门开启的智能规划与操作

在机器人领域&#xff0c;让机器人在开放环境中与日常物品交互一直是个难题&#xff0c;其中开门任务极具挑战性。门的设计、机械结构和推拉方式多种多样&#xff0c;现有方法存在诸多局限。基于运动学的方法依赖已知门模型&#xff0c;面对未知门时难以发挥作用&#xff1b;几…

阿里云服务迁移实战: 07-其他服务迁移

概述 当完成了服务器、数据库、IP、OSS等迁移后&#xff0c;剩下的就是其他服务了。 短信网关 短信模板只能一个个创建&#xff0c;不能批量操作。但是可以使用以下方式优化操作。 在原账号导出模板列表 概述 当完成了服务器、数据库、IP、OSS等迁移后&#xff0c;剩下的…

(六——下)RestAPI 毛子(Http resilience/Refit/游标分页/异步大文件上传)

文章目录 项目地址一、Refit1.1 安装需要的包1.2 创建接口IGitHubApi1.3 创建RefitGitHubService1. 实现接口2. 注册服务 1.4 修改使用方法 二、Http resilience2.1 安装所需要的包2.2 创建resilience pipeline简单版2.3 创建全局的resilience处理1. 创建清理全局ResilienceHan…

leetcode 977. Squares of a Sorted Array

题目描述 双指针法一 用right表示原数组中负数和非负数的分界线。 nums[0,right-1]的是负数&#xff0c;nums[right,nums.size()-1]是非负数。 然后用合并两个有序数组的方法。合并即可。 class Solution { public:vector<int> sortedSquares(vector<int>&…

在 API 模拟阶段:Apipost vs. Faker.js vs. Postman —— 为什么 Apipost 是最优选择

在构建 API 的过程中&#xff0c;模拟数据的能力至关重要。就像你在做饭时等待食材送达一样——没有原料&#xff0c;菜也没法完成。 但是&#xff0c;当你的后端还在开发中&#xff0c;而前端又急需真实的 API 响应进行开发时&#xff0c;该怎么办&#xff1f;这时候&#xf…

一种快速计算OTA PSRR的方法(Ⅰ)

序言:最近碰到了一道有趣的习题&#xff0c;让我重新思考了下如何计算运放的PSRR&#xff0c;再结合相关论文&#xff0c;现将所思所想分享出来&#xff0c;欢迎大家讨论。 1.从Razavi的一道习题引入 题目要求计算电路的PSRR&#xff0c;已知PSRR定义为信号增益除以电源增益&am…

第十二届蓝桥杯 2021 C/C++组 空间

目录 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 思路&#xff1a; 思路详解&#xff1a; 代码&#xff1a; 代码详解&#xff1a; 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 空间 - 蓝桥云课 思路&#xff1a; 思路详解&#…

TensorFlow深度学习实战——基于循环神经网络的情感分析模型

TensorFlow深度学习实战——基于循环神经网络的情感分析模型 0. 前言1. 数据处理2. 模型构建与训练3. 模型评估相关链接 0. 前言 情感分析 (Sentiment Analysis) 是自然语言处理中的一项技术&#xff0c;旨在识别和提取文本中的情感信息&#xff0c;通常是分析一段文本中是否存…

eslint相关报错收集

[vue/no-multiple-template-root]The template root requires exactly one element.eslint-plugin-vuejsx报错&#xff1a;jsx报错Parsing error: Unexpected token &#xff1c;eslint&#xff1b;ts报错&#xff1a;Parsing error: Unexpected token {eslintmodule报错 ‘mod…

【论文推荐】深度学习赋能地质灾害分析:数据、模型、应用与机遇(用于地质灾害分析的深度学习:数据源)

【论文推荐】深度学习赋能地质灾害分析&#xff1a;数据、模型、应用与机遇&#xff08;用于地质灾害分析的深度学习&#xff1a;数据源&#xff09; 【论文推荐】深度学习赋能地质灾害分析&#xff1a;数据、模型、应用与机遇&#xff08;用于地质灾害分析的深度学习&#xf…

判断用户选择的Excel单元格区域是否跨页?

VBA应用程序开发过程中&#xff0c;经常需要处理用户选中的单元格区域&#xff0c;有的应用场景中&#xff0c;需要限制用户选中区域位于同一页中&#xff08;以打印预览显示的分页划分&#xff09;&#xff0c;但是VBA对象模型中并没有提供相应的接口&#xff0c;用于快速查询…

题解:洛谷 CF2091E Interesting Ratio

思路推导 我们先对 32 32 32 和 96 96 96 进行二进制拆分。 相同部分&#xff08;用 α \alpha α 表示&#xff09;&#xff1a; 5 5 5 个 2 2 2。 不同部分&#xff08;用 β \beta β 表示&#xff09;&#xff1a; 1 1 1 和 3 3 3。 gcd ⁡ ( 32 , 96 ) \gcd(32,9…

linux安装配置PostgreSQL

环境&#xff1a;centos7、SpringBoot、PostgreSQL15 PostgreSQL: Linux downloads (Red Hat family) PostgreSQL安装 1.安装 PostgreSQL Yum 仓库 RPM 包 sudo rpm -ivh https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noar…

docker安装jenkins v2.504.1集群

1 概述 Jenkins是一款开源的、基于Java开发的持续集成&#xff08;CI&#xff09;与持续交付&#xff08;CD&#xff09;工具&#xff0c;旨在通过自动化构建、测试和部署流程&#xff0c;提升软件开发效率与质量。 ‌ 1.1 核心功能与特点 持续集成与交付‌ Jenkins支持自动化…

5月2日日记

今天看了爸爸推荐的书&#xff0c;叫&#xff1a;“高效能人士的七个习惯” 现在刚看完50页&#xff0c;感觉确实有点东西&#xff0c; 七个习惯分别是&#xff1a; 个人层面1积极主动 2要事第一 3以终为始 社交层面 4知彼解己5 统效综合 6双赢思维 7不断更新 目前还没有…