MYSQL中的简单查询

 更新时间:2025年02月06日 11:04:48   作者:jay丿  
这篇文章详细介绍了MySQL中常见的查询语法,包括SELECT语句的简单查询、基于表的查询、基于条件的查询、基于分组的查询等,它还解释了COUNT()、SUM()、AVG()、MAX()和MIN()等聚合函数的使用,以及GROUP BY和HAVING子句在分组查询中的应用

MYSQL简单查询

完整语法:

select [distinct] , … [from [where ] [group by , … [having ] ] [order by asc| desc ] [limit [offset , ] rows ] ]

select 简单查询

select  1 ;  -- 往往用来 做 数据库心跳检测
select user() ;  -- 获取 当前登录的用户信息
select version() ;  -- 获取数据库的版本号
select now() ;  -- 获取 当前系统时间 
select last_insert_id() ;  -- 获取 最后插入的主键(必须是自增)

基于 表查询

select  <columnName> , ....  from  <tableName> ; 
select * from <tableName>  ;  -- 查询 表中所有的字段 , 在生产环境中 不推荐使用 * 查询所有字段 

基于条件的查询

select  <columnName> , ... from <tableName>  where <condition> ;
select * from tb_user where name = 'admin'  ;  --  查询的时候 name的值 不区分大小写 
select * from tb_user where binary name = 'admin' ;  -- 查询的 name 值 区分大小写 

基于分组的查询

  • count() : 用来 统计 个数
--  查询 学生表中 有多少个 学生 

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() : 求和
-- 查询学生的总成绩 
select sum(score) from student ;  -- sum 函数 参数 只能传入 字段名,  字段列中对应的 null 不参与 求和
  • avg() : 求平均值
-- 查询学生 的平均成绩 
select avg(score) from student ;  -- sum 函数 参数 只能传入 字段名,  字段列中对应的 null 不参与 求平均值
select  avg ( ifnull(score,  0) ) from student ;  -- 字段列对应的 null, 则 取 0 , 仍旧参与 求 平均值 
  • max() : 求最大值
-- 查询 最高分 
select  max(score) from student ; 
  • min() : 求最小值
-- 查询 最低分 
select min(score) from student ;  -- 空值不参与 求 最小值 

group by 实现 分组查询

-- 查询 不同 性别的 学生人数 
select  sex,  count(1) from student group by sex ;

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

having 分组 筛选

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

 -- 查询 班级中 同名 、同性别 的 学生名 和 性别
 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

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

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

分页查询 limit

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

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Mysql中一千万条数据怎么快速查询

    Mysql中一千万条数据怎么快速查询

    很多人在使用Mysql时没有考虑到优化问题,如果遇到上千万数据量的表,查询上千万数据量的时候会发生什么问题,本文就来介绍一下如何快速查询一千万条数据,感兴趣的可以了解一下
    2021-12-12
  • MySQL窗口函数OVER()用法及说明

    MySQL窗口函数OVER()用法及说明

    这篇文章主要介绍了MySQL窗口函数OVER()用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 一文了解MySQL的四大子查询

    一文了解MySQL的四大子查询

    本文主要介绍了一文了解MySQL的四大子查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Mac下忘记Mysql的root用户密码的解决方法

    Mac下忘记Mysql的root用户密码的解决方法

    mac中安装MySQL时系统会自动为root 账户生成一个密码(改密码一般为一个不好记的字符串),若自己没有记住改密码,这时 mysql 就无法进入了。解决方案是修改root 账户的密码,问题是mysql进不去如何修改,下面就是改问题的解决方法:
    2017-03-03
  • MySQL复合查询(多表查询、子查询)的实现

    MySQL复合查询(多表查询、子查询)的实现

    MySQL复合查询是指在一个SQL语句中使用多个查询条件,以过滤和检索数据,本文主要介绍了MySQL复合查询(多表查询、子查询)的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • 正确使用MySQL INSERT INTO语句

    正确使用MySQL INSERT INTO语句

    MySQL数据库是一种小型关系型数据库管理系统,MySQL数据库的优化是MySQL数据库操作过程中非常重要的工作,MySQL数据库的优化能够实现MySQL数据库操作的简便。
    2015-08-08
  • MySQL文本文件导入及批处理模式应用说明

    MySQL文本文件导入及批处理模式应用说明

    MySQL文本文件导入及批处理模式应用说明,需要的朋友可以参考下。
    2011-09-09
  • MySQL的driverClassName与url使用方式

    MySQL的driverClassName与url使用方式

    这篇文章主要介绍了MySQL的driverClassName与url使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • mysql日常使用中常见报错大全

    mysql日常使用中常见报错大全

    MySQL初学者新安装好数据库及使用过程中经常遇到以下几类错误,本文给大家详细整理并给出完美解决方案,感兴趣的朋友跟随小编一起看看吧
    2023-03-03
  • mysql的查询缓存说明

    mysql的查询缓存说明

    mysql的Query Cache有其特殊的业务场景,也不像其他数据库产品,缓存查询语句的执行计划等信息,而是直接缓存查询语句的记录集和对应的SQL语句
    2013-02-02

最新评论