MYSQL简单查询

ops/2025/2/7 4:47:53/

MYSQL简单查询

完整语法: select [distinct] , … [from [where ] [group by , … [having ] ] [order by asc| desc ] [limit [offset , ] rows ] ]

  • select 简单查询
    mysql">select  1 ;  -- 往往用来 做 数据库心跳检测select user() ;  -- 获取 当前登录的用户信息select version() ;  -- 获取数据库的版本号select now() ;  -- 获取 当前系统时间 select last_insert_id() ;  -- 获取 最后插入的主键(必须是自增)
    
  • 基于 表查询
    mysql">select  <columnName> , ....  from  <tableName> ; select * from <tableName>  ;  -- 查询 表中所有的字段 , 在生产环境中 不推荐使用 * 查询所有字段 
    
  • 基于条件的查询
    mysql">select  <columnName> , ... from <tableName>  where <condition> ;select * from tb_user where name = 'admin'  ;  --  查询的时候 name的值 不区分大小写 select * from tb_user where binary name = 'admin' ;  -- 查询的 name 值 区分大小写 
    
  • 基于分组的查询
    • count() : 用来 统计 个数
      mysql">--  查询 学生表中 有多少个 学生 select count(*)  from  student ;  -- 以行为单位 ,统计有多少个学生select count(stuNo) from student ; -- 根据学号 来统计 有多少个学生select count(1) from student ;  -- 根据常量值 进行统计、如果有值,个数 + 1 
      

      从性能上 、 count(1 ) > count( * ), count(column) 只统计该列中 值不为 null 的 行数(null不参与统计) 。

      如果 count(column) 中的 column 中的列 有索引,那么性能 会 比 count(1) 高 、 如果没有索引,性能 比 count(*) 还低

    • sum() : 求和
      mysql">-- 查询学生的总成绩 
      select sum(score) from student ;  -- sum 函数 参数 只能传入 字段名,  字段列中对应的 null 不参与 求和
      
    • avg() : 求平均值
      mysql">-- 查询学生 的平均成绩 
      select avg(score) from student ;  -- sum 函数 参数 只能传入 字段名,  字段列中对应的 null 不参与 求平均值select  avg ( ifnull(score,  0) ) from student ;  -- 字段列对应的 null, 则 取 0 , 仍旧参与 求 平均值 
      
    • max() : 求最大值
      mysql">-- 查询 最高分 
      select  max(score) from student ; 
      
    • min() : 求最小值
      mysql">-- 查询 最低分 
      select min(score) from student ;  -- 空值不参与 求 最小值 
      
  • group by 实现 分组查询
    mysql">-- 查询 不同 性别的 学生人数 
    select  sex,  count(1) from student group by sex ;
    

group by 分组 对查询的 列 有 要求 , 要么 查询的 列 是一个 聚合 列 、要么 出现 在 group by 的 后面,作为分组依据。

  • having 分组 筛选

    对分组后的结果 进行过滤 、筛选, having 是 基于 group by 存在 的。

    mysql"> -- 查询 班级中 同名 、同性别 的 学生名 和 性别select name, gender from student group by name ,gender having count(1) > 1 ;
    

    where 和 having 的区别

    1. where 是 对 表中的 数据 进行筛选 , having 是 对 分组后的 结果 进行 筛选 。
    2. where 和 having 如果 同时 存在 ,那么 where 先筛选 再分组 再过滤
    3. where 条件 中 不能使用 聚合函数 、但 having 可以使用 聚合函数
    4. 能用 where 筛选过滤的数据 、尽量不要用 having 筛选
  • 数据排序 order by

    mysql">-- 查询 所有的学生信息 、按照 成绩降序排列,当成绩相同的时候 ,按照 出生日期 降序排列 
    select * from student order by score desc , birth desc  ;
    

    当 有多个字段 参与排序的时候, 优先根据 第一个排序的字段 进行排序,当 第一个字段 的值 相同的时候,才会根据第二个字段的值进行排序、依此类推。

  • 分页查询 limit

    mysql">
    select * from student  limit 3 ;  -- 查询表中 前 3 条数据 select * from  student  limit  10 ,  3  ;  -- 查询表中 从 第 11条数据开始 3 条数据 select * from  student limit 10 offset 3 ;  
    

    分页查询的时候, 如果 包含 order by , 那么 建议根据 唯一键 进行排序 、如果 根据 的字段值有大量的重复、建议 使用 多个字段排序 , 否则 会出现 分页数据紊乱 。


http://www.ppmy.cn/ops/156341.html

相关文章

c++ list的front和pop_front的概念和使用案例—第2版

在 C 标准库中&#xff0c;std::list 的 front() 和 pop_front() 是与链表头部元素密切相关的两个成员函数。以下是它们的核心概念和具体使用案例&#xff1a; 1. front() 方法 概念&#xff1a; 功能&#xff1a;返回链表中第一个元素的引用&#xff08;直接访问头部元素&am…

一文讲解Spring中应用的设计模式

我们都知道Spring 框架中用了蛮多设计模式的&#xff1a; 工厂模式呢&#xff0c;就是用来创建对象的&#xff0c;把对象的创建和使用分开&#xff0c;这样代码更灵活。代理模式呢&#xff0c;是用一个代理对象来控制对真实对象的访问&#xff0c;可以在访问前后做一些处理。单…

【搜索文章】:搜索(es)+ 搜索记录(mongodb)+ 搜索联想词

需求 用户输入关键字时&#xff0c;可以检索出结果&#xff0c; 并且可以查看历史搜索情况&#xff0c; 还可以进行联想词展示。 ElasticSearch&#xff08;搜索&#xff09; 准备工作 使用docker安装es&#xff0c;配置ik分词器重新建一个search模块&#xff0c;用来写搜…

【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(二)

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;贪心算法篇–CSDN博客 文章目录 前言例题1.买卖股票的最佳时机2.买卖股票的最佳时机23.k次取…

如何优化垃圾回收机制?

垃圾回收机制 掌握 GC 算法之前&#xff0c;我们需要先弄清楚 3 个问题。第一&#xff0c;回收发生在哪里&#xff1f;第二&#xff0c;对象在 什么时候可以被回收&#xff1f;第三&#xff0c;如何回收这些对象&#xff1f; 回收发生在哪里&#xff1f; JVM 的内存区域中&…

PyTorch Geometric(PyG)机器学习实战

PyTorch Geometric&#xff08;PyG&#xff09;机器学习实战 在图神经网络&#xff08;GNN&#xff09;的研究和应用中&#xff0c;PyTorch Geometric&#xff08;PyG&#xff09;作为一个基于PyTorch的库&#xff0c;提供了高效的图数据处理和模型构建功能。 本文将通过一个节…

7.抽象工厂(Abstract Factory)

抽象工厂与工厂方法极其类似&#xff0c;都是绕开new的&#xff0c;但是有些许不同。 动机 在软件系统中&#xff0c;经常面临着“一系列相互依赖的对象”的创建工作&#xff1b;同时&#xff0c;由于需求的变化&#xff0c;往往存在更多系列对象的创建工作。 假设案例 假设…

基于Java、SSM、HTML、Vue在线视频教学网课管理系统设计

摘要 随着互联网技术的飞速发展&#xff0c;在线教育市场呈现出蓬勃的发展态势。本论文聚焦于在线视频教学网课管理系统的设计与实现&#xff0c;该系统基于Java语言&#xff0c;运用SSM&#xff08;Spring SpringMVC MyBatis&#xff09;框架构建后端服务&#xff0c;结合H…