正在加载内容…
MySQL SELECT 基础查询与 WHERE
492 字
2 分钟
MySQL SELECT 基础查询与 WHERE
本文讲解SELECT基础查询与WHERE过滤,涵盖字段选择、别名、DISTINCT去重、比较与逻辑运算、范围、集合、模糊和空值判断,并说明WHERE不能直接使用SELECT别名。
第5章 SELECT 基础查询与 WHERE
5.1 SELECT 的基本语法
SELECT 是查询数据的命令,属于 DQL,也是使用频率最高的 SQL。基本结构:
SELECT 字段列表 FROM 表名 WHERE 条件;查询所有字段用 *:
SELECT * FROM student;只查部分字段(投影):
SELECT name, age FROM student;5.2 使用别名 AS
可以用 AS 给字段或表起别名,让结果更易读:
SELECT name AS 姓名, age AS 年龄 FROM student;AS 可以省略,直接写 SELECT name 姓名 FROM student;。
5.3 去除重复 DISTINCT
DISTINCT 用于去掉查询结果里的重复值:
SELECT DISTINCT class_id FROM student;它会返回 class_id 的所有不同取值。注意 DISTINCT 作用于其后的所有字段组合。
5.4 WHERE 条件过滤
WHERE 支持丰富的运算符来筛选数据。
比较运算符:
SELECT * FROM student WHERE age >= 18;SELECT * FROM student WHERE age <> 20; -- 不等于,也可用 !=逻辑运算符 AND、OR、NOT:
SELECT * FROM student WHERE age >= 18 AND class_id = 1;范围查询 BETWEEN ... AND ...(闭区间):
SELECT * FROM student WHERE age BETWEEN 18 AND 22;集合查询 IN:
SELECT * FROM student WHERE class_id IN (1, 2, 3);模糊查询 LIKE,% 匹配任意多个字符,_ 匹配单个字符:
SELECT * FROM student WHERE name LIKE '张%'; -- 姓张SELECT * FROM student WHERE name LIKE '张_'; -- 姓张且名字为两个字空值判断 IS NULL / IS NOT NULL:
SELECT * FROM student WHERE email IS NULL;5.5 查询流程
flowchart LR
A[SELECT 字段] --> B[FROM 指定表]
B --> C[WHERE 过滤行]
C --> D[计算投影列]
D --> E[返回结果集]
5.6 常见问题 Q&A
Q1:* 和指定字段哪个更好?
A:明确列出所需字段更高效、可读性更好,还能避免表结构变化带来的影响;* 只适合快速查看。
Q2:LIKE 的 % 和 _ 有什么区别?
A:% 匹配任意多个字符(含 0 个),_ 只匹配单个字符。
Q3:WHERE 里能用别名吗? A:一般不能,因为 WHERE 先于 SELECT 的别名计算执行;要对别名过滤可用 HAVING 或子查询。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
MySQL SELECT 基础查询与 WHERE
https://mjzy.tech/posts/mysql/05-select基础查询与where/ 相关文章 智能推荐
1
MySQL 分组查询与子查询
MySQL 讲解MySQL分组查询与子查询:用GROUP BY配合聚合、HAVING及WITH ROLLUP做分组汇总;子查询按结果分为四类,可用于WHERE、FROM、SELECT及EXISTS相关判断。
2
MySQL 数据库与表基础
MySQL 本文介绍MySQL建库建表基础,涵盖数据库分类、常用数据类型及主键、非空、唯一等约束,并用问答说明选型与开发要点。
3
MySQL 排序分页与聚合查询
MySQL 本文讲解MySQL排序、分页、聚合、分组及分组后过滤,说明各子句执行顺序,并辨析WHERE与HAVING、两种COUNT用法的差异。
4
MySQL 联表查询 JOIN
MySQL 本文讲解MySQL联表查询,说明内连接、左右连接及自连接与子查询的用法,并辨析ON与WHERE的区别。
5
MySQL 多表关系与外键
MySQL MySQL数据库通过拆表减少冗余,利用一对多、多对多、一对一三种表关系,并通过外键约束及级联、置空等联动行为保证引用完整性。
随机文章 随机推荐
评论区
正在加载 GitHub 评论…