news 2026/5/8 4:04:28

7.单表查询

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
7.单表查询

MySQL 第4章 单表查询

一、本章学习目标

  1. 熟悉SELECT语句作用,理解各子句含义
  2. 会做简单查询:查全部、查指定字段、去重查询
  3. 会做条件查询:比较运算、逻辑运算、模糊查询
  4. 会做高级查询:聚合函数、分组、排序、分页、常用函数
  5. 能给表和字段设置别名
  6. 能完成图书表实战查询

二、本章先认识:本章核心关键词

  • SELECT:查询、选取数据
  • FROM:从哪张表查询
  • WHERE:查询条件(过滤数据)
  • DISTINCT:去重(去掉重复数据)
  • ORDER BY:排序
  • GROUP BY:分组
  • HAVING:分组后过滤
  • LIMIT:限制条数、分页
  • AS:起别名
  • LIKE:模糊查询
  • IN:在某个列表里
  • NULL:空值

三、SELECT 语句完整语法(最核心)

SELECT[DISTINCT]字段列表FROM表名[WHERE条件][GROUPBY分组字段][HAVING分组条件][ORDERBY排序字段ASC/DESC][LIMIT起始位置,查询条数];

各子句讲解

  • SELECT:要查哪些列
  • DISTINCT:查询结果去掉重复
  • FROM:指定从哪张表查
  • WHERE:筛选数据(行)
  • GROUP BY:按字段分组(统计用)
  • HAVING:对分组结果再筛选
  • ORDER BY:对结果排序
  • LIMIT:只取前几条

四、简单查询

4.1 查询所有字段

讲解:查询表中全部列的数据

-- 方式1:写所有字段SELECTempno,ename,job,mgr,sal,comm,deptnoFROMemp;-- 方式2:用 * 表示所有字段(最简单)SELECT*FROMemp;

4.2 查询指定字段

讲解:只需要某些列,就只写这些字段

-- 只查员工编号、姓名SELECTempno,enameFROMemp;

4.3 去重查询 DISTINCT

讲解:查询结果有重复时,用 DISTINCT 只保留唯一值

-- 查询有哪些部门编号(重复的只显示一次)SELECTDISTINCTdeptnoFROMemp;-- 多字段去重:所有字段组合相同才算重复SELECTDISTINCTename,jobFROMemp;

五、条件查询 WHERE

5.1 比较运算符

讲解:用来判断数据大小、范围、是否相等

运算符含义
=等于
<> / !=不等于
>大于
>=大于等于
<小于
<=小于等于
BETWEEN … AND …在区间内
IN在列表中
IS NULL是空值
IS NOT NULL不是空值

示例

-- 1. 查询姓名是张三的员工SELECT*FROMempWHEREename='张三';-- 2. 查询工资 >= 3000SELECT*FROMempWHEREsal>=3000;-- 3. 查询部门是10或20SELECT*FROMempWHEREdeptnoIN(10,20);-- 4. 查询没有上级(mgr为空)SELECT*FROMempWHEREmgrISNULL;

5.2 模糊查询 LIKE

讲解:不知道完整内容,只知道一部分时使用

  • %:匹配任意多个字符(包括0个)
  • _:匹配一个字符

示例

-- 姓名以“一”结尾SELECT*FROMempWHEREenameLIKE'%一';-- 姓名包含“十”SELECT*FROMempWHEREenameLIKE'%十%';-- 姓名3个字,最后一个是“一”SELECT*FROMempWHEREenameLIKE'__一';

5.3 逻辑运算符

讲解:把多个条件组合起来

  • AND:并且(所有条件满足)
  • OR:或者(一个满足就行)
  • NOT:取反

示例

-- 职位是经理,并且部门是20SELECT*FROMempWHEREjob='经理'ANDdeptno=20;-- 职位是经理 或 部门是10SELECT*FROMempWHEREjob='经理'ORdeptno=10;

六、高级查询

6.1 聚合函数(统计数据)

讲解:对一列数据做计算,返回一个结果

函数作用
COUNT()统计行数
SUM()求和
AVG()平均值
MAX()最大值
MIN()最小值

示例

-- 员工总数SELECTCOUNT(*)FROMemp;-- 总工资SELECTSUM(sal)FROMemp;-- 平均工资SELECTAVG(sal)FROMemp;-- 最高/最低工资SELECTMAX(sal),MIN(sal)FROMemp;

6.2 分组查询 GROUP BY

讲解:按某一列分组,常用于统计每个组的情况

-- 按部门分组,统计每个部门的平均工资、总工资SELECTdeptno,AVG(sal),SUM(sal)FROMempGROUPBYdeptno;

6.3 HAVING 分组后过滤

讲解:对分组结果再筛选

-- 只保留平均工资 < 3000 的部门SELECTdeptno,AVG(sal)FROMempGROUPBYdeptnoHAVINGAVG(sal)<3000;

6.4 排序 ORDER BY

讲解:让查询结果按某一列排序

  • ASC:升序(小→大,默认)
  • DESC:降序(大→小)
-- 按工资从高到低SELECT*FROMempORDERBYsalDESC;

6.5 限量查询 LIMIT

讲解:只取前几条,用于分页

-- 取前5条SELECT*FROMempLIMIT5;-- 从第2条开始,取4条(下标从0开始)SELECT*FROMempLIMIT1,4;

6.6 常用内置函数

讲解:MySQL 自带工具函数

  • CONCAT():字符串拼接
  • IFNULL():空值替换
  • IF():条件判断
  • NOW():当前时间
-- 拼接姓名和职位SELECTCONCAT(ename,'-',job)FROMemp;-- 奖金为空则显示0SELECTename,IFNULL(comm,0)FROMemp;

七、设置别名 AS

讲解:给字段/表起一个简单好记的名字

-- 字段别名SELECTenameAS姓名,sal 工资FROMemp;-- 表别名SELECTe.enameFROMemp eWHEREe.deptno=30;

八、上机实战:图书表 book 查询(全案例)

-- 1. 查询可借阅图书SELECTname,upload_timeFROMbookWHEREstate=0;-- 2. 按书名排序,取前5本SELECTname,price,stateFROMbookORDERBYnameLIMIT5;-- 3. 价格大于50SELECTname,priceFROMbookWHEREprice>50;-- 4. 价格 30~50SELECTname,priceFROMbookWHEREpriceBETWEEN30AND50;-- 5. 书名包含 JavaSELECTnameFROMbookWHEREnameLIKE'%Java%';-- 6. 书名以“入门”结尾SELECTnameFROMbookWHEREnameLIKE'%入门';-- 7. 查询西游记、红楼梦SELECTname,priceFROMbookWHEREnameIN('西游记','红楼梦');

九、本章最重要总结(新手必背)

  1. SELECT + FROM是查询的基础
  2. WHERE用来筛选数据
  3. DISTINCT去重
  4. LIKE做模糊查询
  5. 聚合函数 + GROUP BY做分组统计
  6. ORDER BY排序,LIMIT分页
  7. 别名让 SQL 更简洁
  8. WHERE 过滤行,HAVING 过滤分组

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 4:03:41

《龙虾OpenClaw系列:从嵌入式裸机到芯片级系统深度实战60课》021、C与汇编混合编程:内联汇编与函数调用约定

021、C与汇编混合编程&#xff1a;内联汇编与函数调用约定 从一次诡异的栈溢出说起 去年调试一块基于Cortex-M7的工业控制器&#xff0c;跑着跑着就进HardFault。看堆栈回溯&#xff0c;PC指针指向一个看起来完全正常的C函数——一个简单的GPIO翻转函数。单步跟踪发现&#xff…

作者头像 李华
网站建设 2026/5/8 4:03:00

初创公司如何借助 Taotoken 低成本试用多种大模型

初创公司如何借助 Taotoken 低成本试用多种大模型 对于预算有限的初创公司和独立开发者而言&#xff0c;在构建AI驱动的产品时&#xff0c;直接对接多个主流大模型厂商不仅技术门槛高&#xff0c;也意味着需要管理多个账户、处理复杂的计费体系&#xff0c;初期成本投入和运维…

作者头像 李华
网站建设 2026/5/8 4:01:57

希尔排序详解

目录 一、从直接插入排序到希尔排序的优化思想 &#x1f4cc; 什么是局部有序&#xff1f; 二、核心优化思想&#xff1a;预排序 三、gap分组思想 &#x1f4cc; 基本思想&#xff1a; &#x1f4cc; 示例过程 gap 4 gap 2 gap 1 四、希尔排序代码实现&#xff08;优…

作者头像 李华
网站建设 2026/5/8 4:00:27

Puya PY32F030开发板:低成本Arm Cortex-M0+嵌入式开发方案

1. 项目概述&#xff1a;Puya PY32F030开发板核心特性解析在嵌入式开发领域&#xff0c;寻找性价比高的MCU开发板一直是工程师们的刚需。最近一款售价仅2美元的Puya PY32F030核心板引起了我的注意——它搭载了基于Arm Cortex-M0内核的PY32F030K28T6微控制器&#xff0c;主频48M…

作者头像 李华