MySQL基本查询语法详解:从SELECT到高级过滤

Mia
Mia
发布时间:2026-10-14| 2人浏览过
原创

本文详解MySQL数据库中基本查询操作的完整语法与应用场景。基于实际的student表数据结构,系统地拆解了从基础的字段选取到复杂的条件过滤、排序分组等核心功能。内容涵盖SELECT语句的多维度使用,包括WHERE子句中的范围比较、集合匹配、模糊搜索及空值处理,并结合DISTINCT、ORDER BY、GROUP BY及LIMIT关键字,提供清晰的代码示例,助力用户熟练掌握日常数据检索需求。

基础查询与字段选择

在MySQL中进行数据检索时,首先需明确希望获取哪些列的数据。根据实际需求,可以选择特定的多个字段或返回表中所有字段。

第1步:执行特定字段查询

目的:仅提取关心的列,减少网络传输与内存开销。 入口:命令行MySQL客户端或IDE终端。 动作:使用SELECT column1, column2...语法指定目标列。 参数:需要提取的字段名,用逗号分隔。 完成状态:返回结果集仅包含指定列的行数据。

mysql> select id,name,birth from student;

第2步:执行所有字段查询

目的:快速获取表的完整快照,常用于测试或调试。 入口:命令行MySQL客户端。 动作:使用通配符*代表所有列。 注意:在生产环境中需谨慎使用,避免获取不必要的大量冗余数据。 完成状态:返回结果集包含表中的所有列。

mysql> select * from student;

条件过滤查询 (WHERE)

绝大多数查询都需要通过WHERE子句来筛选符合条件的记录。student表作为参考对象,可用于演示各类过滤逻辑。

第3步:精确匹配与范围比较

目的:查找特定ID、数值区间或固定属性值的记录。 入口:命令行MySQL客户端。 动作:利用=, >, <, >=, <=等操作符进行条件筛选。 重要参数:数值型字段直接比较,字符串字段建议使用引号包裹。

-- 精确匹配ID
mysql> select * from student where id=901;
-- ID大于等于904的记录
mysql> select * from student where id>=904;
-- 按部门名称精确查找
mysql> select name from student where department='计算机系';

第4步:集合与非集合范围查询 (IN / NOT IN)

目的:当需要匹配多个离散值时,比使用多个OR更简洁。 入口:命令行MySQL客户端。 动作:IN()指定在一个列表中的值,NOT IN()排除在列表中的值。 完成状态:结果集包含符合集合定义的所有记录。

-- 筛选出生年份为1988或1990的学生
mysql> select * from student where birth in(1988,1990);
-- 筛选ID不在特定列表中的学生
mysql> select * from student where id not in(903,906);

第5步:区间范围查询 (BETWEEN AND)

目的:查找位于两个边界值之间的记录(闭区间,包含边界)。 入口:命令行MySQL客户端。 动作:使用BETWEEN min AND max语法。 注意:NOT BETWEEN ... AND ...用于排除该区间内的数据。

-- 查询年龄在1986年到1988年之间(含)的学生
mysql> select * from student where birth between 1986 and 1988;
-- 查询ID不在904到906区间的学生
mysql> select * from student where id not between 904 and 906;

第6步:模糊字符串匹配 (LIKE)

目的:当确切字符未知或部分已知时,使用通配符进行模式匹配。 入口:命令行MySQL客户端。 动作:%代表零个或多个任意字符,_代表单个任意字符。 完成状态:返回所有符合模式规则的行。

-- 查询名字第二个字是'三'的学生
mysql> select * from student where name like '_三';
-- 完全匹配
mysql> select * from student where name like '张三';
-- 查询姓张的所有学生(后面跟任意字符)
mysql> select * from student where name like '张%';
-- 排除姓张的学生
mysql> select * from student where name not like '张%';

第7步:空值判断 (IS NULL)

目的:查找字段值为NULL(缺失/未定义)的记录。 注意:不能直接使用= NULL,必须使用IS NULL或IS NOT NULL。 动作:筛选出地址信息缺失的记录。

mysql> select * from student where address is null;

组合条件与逻辑运算

复杂业务通常涉及多个条件的组合,通过AND和OR连接表达式。

第8步:AND多条件交集查询

目的:所有条件必须同时满足才返回结果。 动作:使用AND连接多个过滤条件。 示例:查找姓张且出生于1985年后,且ID尾号为3的学生。

mysql> select * from student where name like '张%' and birth>1985;
-- 复合条件示例
mysql> select * from student where name like '张%' and birth>1985 and id like '%3';

第9步:OR多条件并集查询

目的:只要满足其中任一条件即返回结果。 动作:使用OR连接多个过滤条件。 示例:查找ID为905,或出生于1988年,或性别为女的学生。

mysql> select * from student where id=905 or birth=1988;
-- 多条件OR示例
mysql> select * from student where id=905 or birth=1988 or sex='女';

数据整理与高级筛选

在获取原始数据后,往往需要进行去重、排序、聚合统计及数量限制。

第10步:结果去重 (DISTINCT)

目的:去除结果集中重复的行,仅保留唯一值。 入口:命令行MySQL客户端。 动作:在SELECT后紧跟DISTINCT。 示例:查看学生表中存在的性别和院系类别。

mysql> select distinct sex from student;
mysql> select distinct department from student;

第11步:结果排序 (ORDER BY)

目的:按照指定列的值对结果集进行升序或降序排列。 入口:命令行MySQL客户端。 动作:默认升序(ASC),可显式指定DESC降序。 示例:按出生年份排序。

-- 默认升序
mysql> select * from student order by birth;
-- 显式升序
mysql> select * from student order by birth asc;
-- 降序排列
mysql> select * from student order by birth desc;

第12步:分组统计 (GROUP BY)

目的:将数据按指定列分组,并对每组进行聚合函数计算(如计数、求和)。 入口:命令行MySQL客户端。 动作:GROUP BY配合聚合函数使用。此处展示GROUP_CONCAT合并组内姓名及COUNT计数。 示例:统计各性别的男生/女生人数及对应的姓名列表。

-- 按性别分组,拼接同组内的所有名字
mysql> select sex,group_concat(name) from student group by sex;
-- 按性别分组,统计各组的人数
mysql> select sex,count(name) from student group by sex;

第13步:正则表达式查询 (REGEXP)

目的:利用强大的正则表达式引擎进行复杂的模式匹配,替代部分LIKE功能或实现LIKE无法做到的逻辑。 入口:命令行MySQL客户端。 动作:在WHERE子句中使用REGEXP关键字。 示例:匹配出生年份为1988或1990的记录。

mysql> select * from student where birth regexp '1988|1990';

第14步:限制查询数量 (LIMIT)

目的:控制返回结果集的行数,常用于分页显示或快速预览前N条数据。 入口:命令行MySQL客户端。 动作:LIMIT N取前N行;LIMIT offset, count从偏移量offset开始取count行(offset从0开始)。 示例:取前2条记录,或从第2条(偏移1)开始取3条记录。

-- 取前两条记录
mysql> select * from student limit 2;
-- 跳过第一条,取接下来的三条
mysql> select * from student limit 1,3;

以上就是MySQL基本查询语法与应用详解的详细内容,更多关于MySQL基础教程的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。