MySQL数据库基础3-基础查询

news2024/11/18 2:40:42

文章目录

  • 基础查询(单表)
    • 替换
    • 查询
    • 结果排序
    • 筛选分页结果
    • 更新表
    • 删除数据
    • 截断(清空)表
    • 聚合函数
    • 分组查询

基础查询(单表)

创建表、单行插入、多行插入就不重复介绍了。

替换

当我们的程序每天都会产生大量的数据,而这些数据都是前一天或者再之前的数据更新产生,我们也只需要保存其中一条,此时就考虑用新的数据替换老的数据。

语法:
replace into tablename values();

如果主键或者唯一键不冲突,则直接插入数据
如果主键或唯一键冲入,则删除主键或唯一键重复的行再插入

查询

  • 全表全列查询:select * from [表名]
  • 全表指定列查询:select [列名] [列名] … from [表名]
  • 查询字段为表达式,此时要注意区分表达式的内容是否包含字段
  • 为查询结果指定别名

SELECT column [AS] alias_name […] FROM table_name;

  • 结果去重

SELECT DISTINCT [列名] FROM table_name;

  • WHERE,条件查询,指定查询行的内容。在where后加上条件

比较运算符:

运算符说明
=等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <>不等于
BETWEEN a0 AND a1范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, …)如果是 option 中的任意一个,返回 TRUE(1)
LIKE模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符

逻辑运算符:

运算符说明
AND多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT条件为 TRUE(1),结果为 FALSE(0)

结果排序

order by [字段名] :将查询结果按照order by后的字段进行排序

语法:
SELECT … FROM table_name [WHERE …] ORDER BY column [ASC|DESC], […];
ASC 为升序(默认是升序)
DESC为降序

在使用 ORDER BY 进行排序时,不能依赖排序结果的具体顺序,尤其是当排序字段中存在相同的值时。

不同的数据库管理系统可能采用不同的算法和策略来处理排序,因此排序结果可能会有所不同。如果需要确保特定的排序结果,可以通过在 ORDER BY 子句中指定多个排序条件,以便在有相同值的情况下进行更精确的排序。例如,可以使用其他字段作为次要排序条件来进一步确定排序顺序。也就是按照多列进行排序。order by 字段1,字段2,先按照字段1进行排序,再将字段1的结果中相同字段值的部分,按照字段2进行排序

order by中可以使用别名,与where不同,where中不允许使用别名

筛选分页结果

筛选分页结果是一种数据查询和展示技术,用于在大数据集中按需获取特定页的数据。通常情况下,数据库中的数据量可能非常庞大,而且一次性检索和显示所有数据可能会导致性能问题和用户体验下降。通过筛选分页结果,可以按照用户的需求和界面的设计,以分页的方式逐步加载和展示数据,提供更好的用户体验并减少数据库和网络资源的负载。

需要注意:筛选分页结果的起始下标是从0开始的。

  • 从 0 开始,筛选 n 条结果

SELECT … FROM table_name [WHERE …] [ORDER BY …] LIMIT n;

  • 从 s 开始,筛选 n 条结果

SELECT … FROM table_name [WHERE …] [ORDER BY …] LIMIT s, n;

  • 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用

SELECT … FROM table_name [WHERE …] [ORDER BY …] LIMIT n OFFSET s;

更新表

语法:
UPDATE table_name SET column1 = value1, column2 = value2, … WHERE condition;
注意:如果没有condition,则会将所有的行对应的列进行更新

在执行UPDATE语句时,请务必谨慎,确保更新的条件和值符合预期,以免误操作导致数据不正确或不可恢复的问题。在更新表之前,最好先进行备份或测试,以确保安全性和正确性。

删除数据

语法:
DELETE FROM table_name WHERE condition;
如果没有condition,那么删除的是整张表。

如果把整张表的数据都删除了,但是表依旧在,原先的表结构不会改变。 AUTO_INCREMENT会在之前的基础上增加。

需要注意的是,执行DELETE语句会永久删除数据,因此在删除数据之前,请确保确认操作并做好备份。

截断(清空)表

语法:
TRUNCATE [TABLE] table_name
截断表将删除表中的所有行,但保留表的定义、索引、约束等信息

这个操作只能对整张表进行操作,不能像 DELETE 一样针对部分数据操作; 会重置 AUTO_INCREMENT 项

聚合函数

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

分组查询

分组查询是一种在数据库中进行数据分组和聚合的操作。它允许我们按照指定的列或表达式对数据进行分组,并在每个组上执行聚合函数来计算汇总值。

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

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

我们以雇员信息表为例(来自oracle 9i的经典测试表)

  • 如何显示每个部门的平均工资和最高工资
select deptno,avg(sal),max(sal) from emp group by deptno;

执行结果:

在这里插入图片描述

  • 显示每个部门的每种岗位的平均工资和最低工资
select avg(sal),min(sal),job,deptno from emp group by deptno,job;

执行结果:

在这里插入图片描述

  • 显示平均工资低于2000的部门和它的平均工资,首先统计各个部门的平均工资,再配合having进行过滤

统计各个部门的平均工资

select deptno,avg(sal) from emp group by deptno;

执行结果:

在这里插入图片描述

对结果进行过滤,得到平均工资低于2000的部门

select deptno,avg(sal) from emp group by deptno having avg(sal)<2000;

执行结果:

在这里插入图片描述

分组查询可以帮助我们对数据进行更细粒度的统计和分析。我们可以根据需要对多个列进行分组,并在每个组上执行多个聚合函数。此外,还可以通过使用HAVING子句对分组结果进行过滤。

分组查询是 SQL 中常用的功能之一,可以用于处理统计报表、数据分析和生成汇总结果等场景。

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

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

相关文章

0基础学习VR全景 平台篇第26章:热点功能-3D物体/空间模型

大家好&#xff0c;欢迎观看蛙色VR官方系列——后台使用课程&#xff01; 本期为大家带来蛙色VR平台&#xff0c;热点功能—3D物体/空间模型操作。 热点&#xff0c;指在全景作品中添加各种类型图标的按钮&#xff0c;引导用户通过按钮产生更多的交互&#xff0c;增加用户的多…

opencv_c++学习(十四)

一、图像直方图的统计与绘制 如果直方图各个数字之间分布比较均衡&#xff0c;则其对比度就相对较低&#xff0c;反之亦然。同时也可以通过直方图可以大致了解图像的亮暗等。 calcHist(const Mat * images, int nimages, const int * channels, lnputArray mask, OutputArray…

【Python Xpath】零基础也能轻松掌握的学习路线与参考资料

Python是一种面向对象的编程语言。Xpath是一种在XML文档中定位信息的方法。XPath是一种语言&#xff0c;可以用于xml和html文档中选择和查找节点。在Python中&#xff0c;我们可以使用xpath来解析html页面&#xff0c;从而提取所需的数据。 Python xpath学习路线&#xff1a; …

C++中的继承、以及赋值兼容转换。

一、继承的概念及定义 继承可以使代码复用&#xff0c;允许在保持原有类特性的基础上进行扩展。 举个例子&#xff1a;就好比我现在要封装老师、学生等这些人的属性和方法&#xff0c;但是这些人都有重复的属性和方法&#xff0c;比如name、age、sex等等&#xff0c;那么我可…

let、const、var的区别,解构赋值,箭头函数

let、const、var的区别 使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象。使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升。使用const声明的是常量,在后面出现的代码块中,不能在修改改常量的值。 var let const 函数级作用域 块级…

Go语言核心编程-运算符和进制转换

第 4 章 运算符 4.1 运算符的基本介绍 运算符是一种特殊的符号&#xff0c;用以表示数据的运算、赋值和比较等 运算符是一种特殊的符号&#xff0c;用以表示数据的运算、赋值和比较等 算术运算符赋值运算符比较运算符/关系运算符逻辑运算符位运算符其它运算符 4.2 算术运算符…

体验联网版 ChatGPT:优点和缺点同样明显,还藏着无限可能

ChatGPT 有点像古希腊的阿喀琉斯&#xff1a;它很强大&#xff0c;却有个致命的弱点——无法联网&#xff0c;这注定了它只能是一个停留在 2021 年的超人。 但很快&#xff0c;我们将等到一个「鱼和熊掌兼得」的时刻。 通过插件集的 Web browsing 功能&#xff0c;ChatGPT 就…

C++每日一练:贝博士的机械零件(补全题目)奇偶排序(巧妙快排)寻因找祖

文章目录 前言一、贝博士的机械零件1、题目2、解法 二、奇偶排序&#xff08;巧用快排&#xff09;三、寻因找祖 前言 今天的题目中寻因找祖最难了&#xff0c;明显的数学题&#xff0c;笔者这数学文盲水平肯定不会&#xff0c;用暴力搞了一波&#xff0c;只有50%。就去考察学…

(二十六)ATP应用测试平台——将一个微服务打包成含skywalking链路追踪的docker镜像

前言 延续前面的章节内容&#xff0c;本节内容我们以ht-atp的springboot应用为例&#xff0c;封装一个包含skywalking链路追踪的微服务docker应用。完成服务调用的链路追踪监控。skywalking采用字节码注入的方式实现代码的无侵入&#xff0c;探针采集数据粒度粗&#xff0c;但…

详解c++STL—容器set/multiset

目录 1、set基本概念 1.1、功能 1.2、本质&#xff1a; 1.3、set和multiset区别 2、set构造和赋值 2.1、功能描述 2.1、构造 2.3、赋值 2.4、示例 3、set大小和交换 3.1、功能描述 3.2、函数原型 3.2、示例 4、set插入和删除 4.1、功能描述 4.2、函数原型 4.3…

YOLO V3 SPP ultralytics 第一节:VOC 的标注文件(xml)转YOLO标注格式(txt)以及如何自定义YOLO数据样本

目录 1. 前言 2. 关于PASCAL VOC数据集xml --> YOLO txt格式 2.1 路径设定 2.2 读取xml 文件的函数 2.3 xml ---> yolo txt 2.4 yolo 的label文件 2.6 结果 2.7 代码 3. 自定义 YOLO 数据集 3.1 预备工作 3.2 打开labelimg 3.3 绘制 代码参考是b站的大佬&…

CNNs: ZFNet之CNN的可视化网络介绍

CNNs: ZFNet之CNN的可视化网络介绍 导言Deconvnet1. Unpooling2. ReLU3. Transpose conv AlexNet网络修改AlexNet Deconv网络介绍特征可视化 导言 上一个内容&#xff0c;我们主要学习了AlexNet网络的实现、超参数对网络结果的影响以及网络中涉及到一些其他的知识点&#xff0…

RedisInsight—Redis可视化工具

到处都是各种redis的可视化工具&#xff0c;但是那个是redis官网推荐的呢。 答案是&#xff1a;RedisInsight。 好用吗&#xff1f;自己看看吧。反正下载是挺烦躁的。 RedisInsight介绍 RedisInsight支持多种操作系统&#xff1a;Linux、Windows和macOS。 RedisInsight支持…

全网最牛最全面的jmeter教程之jmeter对图片验证码的处理

jmeter对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入&#xff0c;而且每次登录时图片验证码都是随机的&#xff1b;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段&#xff0c;然后再登录接口中使用&#xff1b; 通过jmeter对图片验证码…

【数据结构】C语言实现堆及其应用

二叉树的顺序结构--堆 一、堆的概念与实现堆的概念堆结构定义堆的初始化与销毁堆的插入与向上调整堆的打印、判空、元素个数size、堆顶元素堆的删除与向下调整大根堆与小根堆的写法区别堆的两种建立方式建堆的时间复杂度推导 二、堆的应用堆的应用--topK堆的应用--堆排序优先级…

learn_C_deep_11 (深刻理解整形提升、左移和右移规则、花括号、++和--操作、表达式匹配:贪心算法)

目录 深刻理解整形提升 左移和右移规则 如何理解"丢弃" 一个问题 0x01<<23 的值是多少 花括号 、--操作 表达式匹配&#xff1a;贪心算法 深刻理解整形提升 #include <stdio.h> int main() {char c 0;printf("sizeof(c): %d\n", sizeo…

C++系列之类与对象(上)

&#x1f497; &#x1f497; 博客:小怡同学 &#x1f497; &#x1f497; 个人简介:编程小萌新 &#x1f497; &#x1f497; 如果博客对大家有用的话&#xff0c;请点赞关注再收藏 &#x1f31e; 类 类的概念 C是基于面向对象的&#xff0c;是对象与对象之间的交互完成的&am…

docker构建PHP环境

docker构建PHP环境 文章目录 docker构建PHP环境下载镜像构建本地目录创建容器配置补充命令解释设置docker启动时启动容器 下载镜像 # php 镜像 docker pull php:7.4-fpm # nginx镜像 docker pul nginx:lates # 检查下载的镜像 docker images构建本地目录 本次构建是在win系统…

怎么查营业执照经营范围

怎么查营业执照经营范围 1.到企业公司所在地查询。一般工商局都要求公司将营业执照正本悬挂于企业办公室醒目位置,在公司工商营业执照正副本中均有描述。 2.登陆国家工商管理网站查询。可以登陆开具发票单位所在的工商行政管理局网站,输入企业名称就可以查询法人、企业类型、经…

第七章 中断

中断是什么&#xff0c;为什么要有中断 并发是指单位时间内的累积工作量。 并行是指真正同时进行的工作量。 一个CPU在一个时间只能执行一个进程&#xff0c;任何瞬间任务只在一个核心上运行。 而CPU外的设备是独立于CPU的&#xff0c;它与CPU同步运行&#xff0c;CPU抽出一点…