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

这篇具有很好参考价值的文章主要介绍了MySQL数据库基础3-基础查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基础查询(单表)

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

替换

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

语法:
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;

执行结果:

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

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

执行结果:

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

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

统计各个部门的平均工资

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

执行结果:

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

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

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

执行结果:

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

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

分组查询是 SQL 中常用的功能之一,可以用于处理统计报表、数据分析和生成汇总结果等场景。文章来源地址https://www.toymoban.com/news/detail-451693.html

到了这里,关于MySQL数据库基础3-基础查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • MySQL数据库基础之MySQL查询基础

    MySQL数据库基础之MySQL查询基础

    从今天开始,本系列内容就带各位小伙伴学习数据库技术 。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。 全文大约【 1212】 字,不说废话,只讲可以让你学到技术、

    2024年02月06日
    浏览(12)
  • MySQL数据库基础3-基础查询

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

    创建表、单行插入、多行插入就不重复介绍了。 当我们的程序每天都会产生大量的数据,而这些数据都是前一天或者再之前的数据更新产生,我们也只需要保存其中一条,此时就考虑用新的数据替换老的数据。 语法: replace into tablename values(); 如果主键或者唯一键不冲突,则

    2024年02月05日
    浏览(10)
  • ②【MySQL表操作】 数据库表的创建、查询、修改、删除

    ②【MySQL表操作】 数据库表的创建、查询、修改、删除

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 数据库表中的数据类型 : 数值类型: TINYINT :小整数 SMALLINT :大整数 MEDIUMINT :大整数,范围大于SMALLINT

    2024年02月06日
    浏览(38)
  • 【JaveWeb教程】(18) MySQL数据库开发之 MySQL数据库设计-DDL 如何查询、创建、使用、删除数据库数据表 详细代码示例讲解

    【JaveWeb教程】(18) MySQL数据库开发之 MySQL数据库设计-DDL 如何查询、创建、使用、删除数据库数据表 详细代码示例讲解

    下面我们就正式的进入到SQL语句的学习,在学习之前先给大家介绍一下我们要开发一个项目,整个开发流程是什么样的,以及在流程当中哪些环节会涉及到数据库。 2.1 项目开发流程 需求文档: 在我们开发一个项目或者项目当中的某个模块之前,会先会拿到产品经理给我们提

    2024年01月25日
    浏览(46)
  • 数据库基础之 - MySQL条件查询

    数据库基础之 - MySQL条件查询

    从今天开始,本系列内容就带各位小伙伴学习数据库技术。 数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。 全文大约【 1263】 字,不说废话,只讲可以让你学到技术、

    2024年02月06日
    浏览(6)
  • MySQL数据库基础(三):多表查询,子查询,开窗函数

    MySQL数据库基础(三):多表查询,子查询,开窗函数

    表与表之间的关系 在SQL语句中,数据表与数据表之间,如果存在关系,一般一共有3种情况: ① 一对一关系(高级) 比如有A、B两张表,A表中的每一条数据,在B表中有一条唯一的数据与之对应。 用户表user user_id(用户编号) 账号username 密码password 001 admin admin888 002 itheima

    2024年02月12日
    浏览(8)
  • MySQL数据库基础(十):DQL数据查询语言

    MySQL数据库基础(十):DQL数据查询语言

    文章目录 DQL数据查询语言 一、数据集准备 二、select查询 三、简单查询 四、条件查询 1、比较查询 2、范围查询 3、逻辑查询 4、模糊查询 5、非空查询 五、排序查询 六、聚合查询 七、分组查询与having子句 1、分组查询介绍 2、group by的使用 3、group by + 聚合函数的使用 4、gro

    2024年02月21日
    浏览(7)
  • 数据库系统头歌实验一 SQL的DDL语言和单表查询

    数据库系统头歌实验一 SQL的DDL语言和单表查询

    第1关:创建供应商表S(SNO,SNAME,STATUS,CITY) 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成;S表如下 第2关:将P表中的所有红色零件的重量增加6。 零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;

    2024年02月07日
    浏览(10)
  • 【MySQL】表的增删改查——MySQL基本查询、数据库表的创建、表的读取、表的更新、表的删除

    【MySQL】表的增删改查——MySQL基本查询、数据库表的创建、表的读取、表的更新、表的删除

         CURD是一个数据库技术中的缩写词,它代表Create(创建),Retrieve(读取),Update(更新),Delete(删除)操作。 这四个基本操作是数据库管理的基础,用于处理数据的基本原子操作。      在MySQL中,Create操作是十分重要的,它帮助用于创建数据库对象,如数据

    2024年03月18日
    浏览(37)
  • 三个主流数据库(Oracle、MySQL和SQL Server)的“单表造数

    三个主流数据库(Oracle、MySQL和SQL Server)的“单表造数

    预设游标10000(必要时)  模拟新增10万条数据    1.1 oracle一条sql数据生成100万条数据   创建测试表 创建测试表 模拟新增3万条数据 开发过程中经常需要测试 SQL 在大量数据集时候的执行效率,这就需要我们在表中插入大量的测试数据,下面介绍如何使用存储过程插入大量的

    2024年02月14日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包