MySQL基础:数据查询与常用运算符实战
掌握 MySQL 基础数据查询与运算符是数据库操作的入门关键。本文通过实际代码示例,系统介绍如何使用 SELECT 进行列筛选、别名定义与去重查询;详细解析 WHERE 子句中各类比较运算符、范围限制、模糊匹配(LIKE)及 NULL 值处理的正确语法;并演示 least 和 greatest 函数的数值比较特性,帮助读者快速构建规范的 SQL 查询逻辑。
基本查询操作
在关系型数据库中,数据查询不仅仅是获取已存储的信息,更重要的是根据业务需求对数据进行筛选、重组并以特定形式展示。以下是 MySQL 中最基础的查询语法结构:
第1步:全表与指定列查询
目的:掌握获取表内数据的基本方式。
入口:SQL 客户端或脚本编辑器。
动作:使用 SELECT 关键字。
- 查询所有商品(字段):若需获取表中所有列的数据,可使用通配符
*。select * from 表名; - 查询指定某列/多列:仅获取需要的信息,减少网络传输开销。格式为逗号分隔列名。
select 列名1, 列名2 from 表名;
第2步:设置表别名与列别名
目的:优化结果集的显示名称或在复杂查询中简写表名。
参数:自定义字符串作为别名。
操作:
- 表别名:
select * from 表名 as 别名;(注:当涉及单张表时通常省略 as,但在多表连接时必须使用)。 - 列别名:
select 列名1 as 新别名, 列名2 as 新别名 from 表名;。这有助于在返回结果中对数据进行更直观的命名。
第3步:数据去重与表达式运算
目的:消除冗余数据或即时计算字段值。
操作:
- 去除重复值:使用
DISTINCT关键字。select distinct 列名 from 表名;。注意:DISTINCT 作用于其后的整行记录(若有多列则视为组合),对于存在主键的表通常无法去重。 - 表达式运算查询:可以直接在查询中对数值列进行加减乘除计算,不会修改原表数据,仅在内存中生成结果。
select 列名, (列名 + 10) as 计算后字段 from 表名;。
数据过滤与常用运算符
确定表结构后,往往只需要满足特定条件的数据。此时需要使用 WHERE 子句配合各种运算符进行精准过滤。以下以常见的“商品信息表”为例演示:
第4步:算术运算符(价格调整示例)
目的**>:查看计算后的新数据状态。
动作:结合 SELECT 与运算符。
实例:假设需要将商品价格上调 10%。
select pname, price*1.1 as new_price from 商品表;
第5步:精确条件与范围过滤
目的:筛选符合特定标签或数值区间的记录。
操作:
- 等于查询:查询商品名为“海尔洗衣机”的记录。
select * from 商品表 where pname = '海尔洗衣机'; - BETWEEN 运算符:查询价格在 100 到 200 之间的商品(包含边界值)。
select * from 商品表 where price between 100 and 200;。这等价于price >= 100 and price <= 200。
第6步:集合匹配与通配符模糊查询
目的:处理多值匹配与非精确的文本搜索。
参数:`IN` 列表或 `LIKE` 模式串。
操作:
- IN 运算符:当需要匹配多个离散值时使用,括号内的值只要满足一个即可(相当于 OR 的关系)。例如查询价格是 200 或 800 的商品:
select * from 商品表 where price in (200, 800); - LIKE 运算符(通配符):
-%代表零个或多个任意字符。
-_代表单个任意字符。
示例 1:查询名称中包含“裤”字的所有商品:select * from 商品表 where pname like '%裤%';
示例 2:查询名称以“海”字开头的商品:select * from 商品表 where pname like '海%';
示例 3:查询第二个字为“寇”的所有商品:select * from 商品表 where pname like '_寇%';
第7步:NULL 值的特殊处理
目的:正确处理未赋值或缺失数据的列。
注意:在标准 SQL 中,NULL 不等于任何值,包括它自己。因此不能使用 = NULL 或 <> NULL。
操作:
- 判断非空:查询
id字段不为空的记录。select * from 表名 where 列名 is not NULL; - 判断为空:对应的语法为
where 列名 is NULL。
第8步:数值比较函数 least/greatest
目的:快速获取一组数值中的最小值或最大值。
参数:至少两个数值或字段参数。
核心规则:如果传入的参数中包含 NULL,MySQL 的这两个函数通常会直接返回 NULL(除非使用 IFNULL 等预处理),因为它们遵循三值逻辑。
实例演示:
(1) Least (求最小值):
-- 正常情况 select least(5, 10, 20); -- 赋予别名便于理解 select least(5, 10, 20) as small_number; -- 包含 NULL 的情况,结果为 NULL select least(5, NULL, 20);
(2) Greatest (求最大值):
-- 正常情况 select greatest(10, 30, 20) as big_number; -- 包含 NULL 的情况,结果为 NULL select greatest(10, NULL, 20) as big_number;
总结
以上是关于 MySQL 基本查询和运算符的详细内容,更多关于 MySQL 基本查询和运算符的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









