MySQL基础查询

article/2025/8/11 16:35:10

目录

一、表中的增删查改

1.1直接插入

1.2更新

1.3替换

二、Retrieve

2.1Select列

2.1.1where子句

2.1.2结果排序

三、Update

四、Delete

五、截断表

六、插入查询结果

6.1案例:对表中数据去重

七、聚合函数

八、分组统计group by子句


一、表中的增删查改

创建creat

-- 创建一张学生表
CREATE TABLE students (id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,sn INT NOT NULL UNIQUE COMMENT '学号',name VARCHAR(20) NOT NULL,qq VARCHAR(20)
);

1.1直接插入

insert [into] table_name [向哪些列中插入] values (列中插入对应的数据)
  • 如果将values左侧的指定列插入忽略了就是那就是全列插入

1.2更新

插入一条信息,如果主键或者唯一键发生冲突,则更新数据

1.3替换

如果插入的新数据和旧数据发生冲突,先将旧数据删掉,重新插入新数据,如果没有冲突直接插入

二、Retrieve

2.1Select列

全列查询

select * from 表名

  • 不建议全列查询,原因数据库服务端在服务器上的,在公司中数据库中的数据很多,如果全列查询,网络传输数据需要占用大量的网络资源,并且本地电脑会造成刷屏现象

指定列查询

select也可以进行表达式运算

重新指定名称显示出来

对所要查询的结果进行去重

2.1.1where子句

where语句就相当于C语言中的if语句,列出满足条件的信息

比较运算符

逻辑运算符

  • AND:多个条件必须都为 TRUE(1),结果才是 TRUE(1)
  • OR:任意一个条件为 TRUE(1), 结果为 TRUE(1)
  • NOT:条件为 TRUE(1),结果为 FALSE(0)

按照英语成绩小于60分来筛选出名字、英语

按照语文成绩在80到90分之间的条件来筛选出名字和语文成绩

按照姓孙的条件来筛选出姓孙的人

按照语文成绩好于英语成绩的条件筛出名字、语文成绩、英语成绩

按照200分以下的条件来筛选名字、总成绩

有人就想到对列进行重名,在where条件筛选时用重命名,这样行吗

可以看到是不行的,为什么呢?这就需要先了解sql语句执行的顺序

先执行的是form exam_result语句,因为需要知道从哪个表中选,在执行where total < 200语句,要进行筛选就需要知道筛选条件,所以在执行total < 200,还没有进行重命名,所以就不知道total是谁

筛选出语文成绩大于80并且不姓孙的人

2.1.2结果排序

先筛选出人名和数学成绩,再按数学成绩升序显示出来

先筛出符合条件的人名、数学、英语、语文,然后先按照数学的降序、当数学相等时按照英语的降序来显示出来

筛出符合条件的人名和总分,以总分由高到低来显示出来

为什么这里可以用重命名?来分析一下子句的执行顺序

先执行from exam_result子句,在根据where语句筛出名字、总成绩,最后根据order语句按照顺序来显示出来,

所以先进行了重命名,然后才在order中使用重名命

查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示

  • 先根据模糊条件进行筛选,然后再按照数学成绩的降序来显示

2.1.3筛选分页结果

从第n条开始筛选出s条信息

分页筛选

建议在对未知表进行查询时,进行分页筛选,因为避免因为表中数据过大,查询全表数据导致数据库卡死(数据是在磁盘上的,显示数据需要先将数据加载到内存上)

三、Update

update 表名 set 列名=值 where 谁的

将孙悟空的数学成绩更改为80

将曹孟德语文成绩修改为70、数学成绩修改为60

  • 如果没有筛选条件所有人的数学和语文成绩都会被修改,全部修改要谨慎

将倒数后3名同学数学成绩加上30分

MySQL不支持+=,所以只能math=math+30,按照总成绩的升序排序,选出前3个,倒数后3名同学就选出来了。

四、Delete

delete from 表名 [where] [order by] [limit]

删除孙悟空的所有成绩

  • 删除整个表中的内容,但并不会删除表结构

五、截断表

注意:这个操作慎用

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

六、插入查询结果

6.1案例:对表中数据去重

  • 这里只是去重显示

数据去重操作步骤:

1.创建一个和原表结构相同的表

2.将原表中不重复的数据筛选出来插入到新表中

3.对原表进行重名,将新表名字改成旧表的名字

七、聚合函数

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

7.1count([distinct] expr)

统计有多少条信息,这里就是统计有多少个同学

对去重后的数学成绩进行聚合统计

sum([distinct] expr)

算出数学成绩的平均值

计算出英语成绩小于60分的总成绩

avg([distinct] expr)

统计出英语总成绩+语文总成绩+数学总成绩的平均值

max([distinct] expr)

计算出英语成绩的最高分

min([distinct] expr)

计算出超过70分的最小成绩

八、分组统计group by子句

scott_data.sql:

将scott_data.sql导入到数据库中

查看该数据库中有哪些表

案例一:显示每个部门的平均工资和最高工资

案例二:显示每个部门的每一个岗位的平均工资和最低工资

先按照部门分组,再按照岗位分组

由于相同部门下的相同岗位为一组的人名是不同的,所以是无法显示的

案例三:显示平均工资低于2000的部门和它的平均工资

步骤:

1.先将结果聚合出来(先统计出每一个部门的平均工资)

2.对聚合的结果进行判断(条件筛选出低于2000的部门)

  • having是对分组聚合统计的结果进行条件筛选

案例四:显示没有SMITH员工的条件下平均工资低于2000的部门和它的平均工资

  • where和having的区别在于条件筛选的阶段不同。
  • 不要单纯的认为只有磁盘上的表结构才叫表,中间筛选出来的包括最终结果在逻辑上都是表。

http://www.hkcw.cn/article/yFqbcWoXfb.shtml

相关文章

怎么样提高研发质量?

提高研发质量是提升项目成功率、降低风险和增强客户满意度的关键。常见的有效的方法和策略&#xff0c;可以帮助提高研发质量&#xff1a; 一、建立明确的质量目标和标准 制定质量目标 &#xff1a;在项目启动阶段&#xff0c;明确质量目标&#xff0c;确保团队成员对质量期望…

MCU如何从向量表到中断服务

目录 1、中断向量表 2、编写中断服务例程 中断处理的核心是中断向量表&#xff08;IVT&#xff09;&#xff0c;它是一个存储中断服务例程&#xff08;ISR&#xff09;地址的内存结构。当中断发生时&#xff0c;MCU通过IVT找到对应的ISR地址并跳转执行。本文将深入探讨MCU&am…

Docker Compose(容器编排)

目录 什么是 Docker Compose Docker Compose 的功能 Docker Compose 使用场景 Docker Compose 文件&#xff08;docker-compose.yml&#xff09; Docker Compose 命令清单 常见命令说明 操作案例 总结 什么是 Docker Compose docker-compose 是 Docker 官方的开源项…

安卓jetpack compose学习笔记-UI基础学习

哲学知识应该用哲学的方式学习&#xff0c;技术知识也应该用技术的方式学习。没必要用哲学的态度来学习技术。 学完安卓技术能做事就ok了&#xff0c;安卓技术肯定是有哲学的&#xff0c;但是在初学阶段没必要讨论什么安卓哲学。 学习一们复杂技术的路径有很多&#xff0c;这里…

[蓝桥杯]螺旋折线

螺旋折线 题目描述 如下图所示的螺旋折线经过平面上所有整点恰好一次。 对于整点 (X,Y)(X,Y)&#xff0c;我们定义它到原点的距离 dis(X,Y)dis(X,Y) 是从原点到 (X,Y)(X,Y) 的螺旋折线段的长度。 例如 dis(0,1)3,dis(−2,−1)9dis(0,1)3,dis(−2,−1)9。 给出整点坐标 (X,Y…

【动态规划】子序列问题(一)

&#x1f4dd;前言说明&#xff1a; 本专栏主要记录本人的动态规划算法学习以及LeetCode刷题记录&#xff0c;按专题划分每题主要记录&#xff1a;&#xff08;1&#xff09;本人解法 本人屎山代码&#xff1b;&#xff08;2&#xff09;优质解法 优质代码&#xff1b;&…

一文读懂Ingress-Nginx以及实践攻略

一文读懂Ingress-Nginx以及实践攻略 目录 1 概念 1.1 什么是Ingress? 1.1.1 主要功能:1.2 Ingress的组件1.3 什么是ingress-nginx1.4 ingress-nginx优点和限制1.5 版本兼容性矩阵2 实践: Ingress nginx部署 2.1 使用helm部署ingress-nginx 2.1.1 安装和配置Helm2.1.2 配置和…

一、【专栏启动篇】:为什么是 Django + Vue3?测试平台的技术选型与架构蓝图

【专栏启动篇】&#xff1a;为什么是 Django Vue3&#xff1f;测试平台的技术选型与架构蓝图 前言一、为什么是 Django Vue3&#xff1f;二、测试平台的架构设计蓝图三、测试平台模块功能概述 结语 前言 一个高效、稳定、易用的测试平台&#xff0c;不仅能够帮助团队提升测试…

基于OAuth2+SpringSecurity+Jwt实现身份认证和权限管理后端服务

1、简介 本文讲述了如何实现简易的后端鉴权服务。所谓“鉴权”&#xff0c;就是“身份鉴定”“权限判断”。涉及的技术有&#xff1a;OAuth2、SpringSecurity、Jwt、过滤器、拦截器。OAuth2用于授权&#xff0c;使用Jwt签发Access Token和Refresh Token&#xff0c;并管理token…

基于SpringBoot和PostGIS的云南与缅甸的千里边境线实战

目录 前言 一、PostGIS空间求解 1、相邻的求解 二、后台程序实现 1、数据查询的实现 2、API接口实现 三、WebGIS可视化实现 1、空间面展示 2、增加面标注 3、图例展示 4、与缅甸距离较近的区县信息 四、总结 前言 云南&#xff0c;这个位于中国西南边陲的省份&…

【带小白做项目】如何在SpringBoot项目中接入AI大模型?

随着chatGPT的兴起&#xff0c;越来越多的应用接入了AI大模型&#xff0c;那么我们要怎么在自己的项目中接入AI大模型呢&#xff1f;本节我们一起做一个简单的demo来尝试一下。 一 为什么要在项目中接入大模型 1. 增强业务功能和用户体验 AI 大模型&#xff08;如 GPT、BERT…

【计算机主板架构】ATX架构

一、引言 在计算机的世界里&#xff0c;主板就如同一个城市的基础设施&#xff0c;承载着各种重要的组件并协调它们的工作。而ATX&#xff08;Advanced Technology Extended&#xff09;架构的主板&#xff0c;自问世以来&#xff0c;一直在计算机硬件领域占据着举足轻重的地位…

精选了几道MySQL的大厂面试题,被提问的几率很高!

&#x1f3a5; 作者简介&#xff1a; CSDN\阿里云\腾讯云\华为云开发社区优质创作者&#xff0c;专注分享大数据、Python、数据库、人工智能等领域的优质内容 &#x1f338;个人主页&#xff1a; 长风清留杨的博客 &#x1f343;形式准则&#xff1a; 无论成就大小&#xff0c;…

搞定mysql的 行转列(7种方法) 和 列转行

一、行转列 1、使用case…when…then 2、使用SUM(IF()) 生成列 3、使用SUM(IF()) 生成列 WITH ROLLUP 生成汇总行 4、使用SUM(IF()) 生成列&#xff0c;直接生成汇总结果&#xff0c;不再利用子查询 5、使用SUM(IF()) 生成列 UNION 生成汇总行,并利用 IFNULL将汇总行标题…

高并发场景下的热点key问题探析与应对策略

目录 一、问题描述 二、发现机制 三、解决策略分析 &#xff08;一&#xff09;解决策略一&#xff1a;多级缓存策略 客户端本地缓存 代理节点本地缓存 &#xff08;二&#xff09;解决策略二&#xff1a;多副本策略 &#xff08;三&#xff09;解决策略三&#xff1a;热点…

SQL Server——SSMS中数据库、表的创建

目录 一、引言 二、数据库、表的创建与删除 &#xff08;一&#xff09;方法一&#xff1a;在SSMS控制平台上进行创建 &#xff08;二&#xff09;方法二&#xff1a;使用 SQL 代码实现对数据库和表的创建 三、SQL 和 T-SQL 一、引言 在学习数据库的过程中&#xff0c;初…

spring AOP详解

文章目录 AOP1 环境准备1.1 工程及接口创建1.2 工程存在的问题1.2.1 问题1.2.2 解决思路 2 AOP面向切面编程2.1 AOP概述2.2 AOP原理分析 3 基于注解的AOP3.1 入门示例3.2 使用流程3.3 切入点表达式3.4 练习3.5 通知类型 AOP ​ AOP&#xff08;Aspect Orient Programming&…

重看Spring聚焦ApplicationContext分析

目录 一、理解下ApplicationContext的设计 &#xff08;一&#xff09;功能性的理解 &#xff08;二&#xff09;ApplicationContext 结构类图 二、ApplicationContext根接口 &#xff08;一&#xff09;源码展示 &#xff08;二&#xff09;分析说明 三、子接口Configu…

【MySQL安装】—报错“Can‘t connect to local MySQL server through socket ‘varlibmysqlmysql.sock‘”

项目场景&#xff1a; 执行 “mysql -uroot -p” 命令&#xff0c;进入MySQL数据库。 问题描述&#xff1a; 报错&#xff1a; Cant connect to local MySQL server through socket /var/lib/mysql/mysql.sock 原因分析&#xff1a; /var/lib/mysql路径下缺少mysql.sock文件。 …

本地部署Vanna实战,快速解决NLP2SQL

一、背景 ​ 随着DeepSeek的火爆&#xff0c;基于AI的应用也如雨后春笋般迸发出来&#xff0c;如何根据用户的一句话来找到用户所需要的信息&#xff0c;采用传统的方式无法通过模糊匹配等实现复杂的业务场景&#xff0c;故探索一种新的思路来实现信息获取。Text2SQL将自然语言…