当前位置: 首页 > ds >正文

MySQL-单表查询

一、简单查询​

​目标​​:使用 SELECT进行基础数据查询。

​语法​​:

-- 查询所有列
SELECT * FROM 表名;-- 查询指定列
SELECT 字段1, 字段2 FROM 表名;-- 起别名(避免使用关键字)
SELECT 字段 AS 别名 FROM 表名;
SELECT 字段 AS `别名` FROM 表名;  -- 别名与关键字冲突时用反引号-- 去重查询
SELECT DISTINCT 字段 FROM 表名;

​示例​​(基于 products表):

-- 1. 获取所有商品的全部信息
SELECT * FROM products;-- 2. 获取商品名称和价格
SELECT name, price FROM products;

​二、条件查询​

​目标​​:通过 WHERE筛选满足条件的数据。

​运算符​​:

类型

运算符

说明

比较运算符

=><>=<=!=<>

值比较(<>同 !=

逻辑运算符

ANDORNOT

多条件组合

范围查询

BETWEEN ... AND ...

连续范围(含边界)

IN (值1, 值2)

离散值匹配

模糊查询

LIKE

%(任意多字符),_(单字符)

空值判断

IS NULLIS NOT NULL

不可用 =或 !=判断空值

​示例​​:

-- 1. 查询自营商品(is_self=1)且价格>2000
SELECT * FROM products WHERE is_self = 1 AND price > 2000;-- 2. 价格在999-4199之间(含边界)
SELECT * FROM products WHERE price BETWEEN 999 AND 4199;-- 3. 商品名以"华为"开头
SELECT * FROM products WHERE name LIKE '华为%';-- 4. 查询未评分的商品(rating为空)
SELECT * FROM products WHERE rating IS NULL;

​三、排序查询​

​目标​​:使用 ORDER BY对结果排序。

​语法​​:

SELECT ... ORDER BY 字段1 [ASC|DESC], 字段2 [ASC|DESC];
-- 默认升序(ASC可省略),多列排序时前列值相同按后列排序

​示例​​:

-- 1. 价格从高到低排序
SELECT * FROM products ORDER BY price DESC;-- 2. 先按是否自营排序,再按价格升序
SELECT * FROM products ORDER BY is_self, price ASC;-- 3. 价格>2000的商品按价格降序
SELECT * FROM products WHERE price > 2000 ORDER BY price DESC;

​四、聚合函数​

​目标​​:对列数据进行统计计算(忽略 NULL值)。

​常用函数​​:

函数

作用

示例

COUNT(col)

统计行数

COUNT(*)统计所有行

MAX(col)

最大值

MAX(price)

MIN(col)

最小值

MIN(price)

SUM(col)

求和

SUM(price)

AVG(col)

平均值

AVG(rating)

​示例​​:

-- 1. 统计商品均价
SELECT AVG(price) FROM products;-- 2. 统计自营商品数量
SELECT COUNT(*) FROM products WHERE is_self = 1;

​五、分组查询​

​目标​​:通过 GROUP BY分组后聚合统计。

​语法​​:

SELECT 分组字段, 聚合函数(字段) 
FROM 表名 
GROUP BY 分组字段;

SELECT 分组字段, 聚合函数(字段) FROM 表名 GROUP BY 分组字段;

​注意​​:

  • SELECT后只能出现 ​​分组字段​​ 或 ​​聚合函数统计的字段​​。

  • 支持多列分组:GROUP BY 字段1, 字段2

​HAVING过滤​​:

对分组后的结果筛选(WHERE在分组前过滤,HAVING在分组后过滤)。

SELECT category_id, AVG(price) 
FROM products 
GROUP BY category_id 
HAVING AVG(price) < 1000;  -- 筛选平均价<1000的分类

​示例​​:

-- 统计每个分类的自营/非自营商品平均价格
SELECT category_id, is_self, AVG(price) 
FROM products 
GROUP BY category_id, is_self;

​六、LIMIT查询​

​目标​​:限制查询结果的行数(常用于分页)。

​语法​​:

SELECT ... LIMIT M, N;  -- 从第M+1行开始,取N条数据(M从0开始)
SELECT ... LIMIT N;      -- 等效于 LIMIT 0, N

​分页公式​​:

第 K页,每页 N条:LIMIT (K-1)*N, N

​示例​​:

-- 1. 获取价格第二高的商品
SELECT * FROM products ORDER BY price DESC LIMIT 1, 1;-- 2. 自营商品评分最高的商品
SELECT * FROM products WHERE is_self = 1 ORDER BY rating DESC LIMIT 1;-- 3. 按价格升序分页(第2页,每页3条)
SELECT * FROM products ORDER BY price ASC LIMIT 3, 3;

​七、SQL语句执行顺序​

​核心顺序​​:

1. FROM          -- 确定数据来源
2. WHERE         -- 行级过滤
3. GROUP BY      -- 分组
4. 聚合函数       -- 对每组计算
5. HAVING        -- 组级过滤
6. SELECT        -- 选择输出列
7. DISTINCT      -- 去重
8. ORDER BY      -- 排序
9. LIMIT         -- 限制行数

​易错点​​:

  • 分组后 SELECT非分组字段会报错(如 SELECT is_self未在 GROUP BY或聚合函数中)。

  • WHERE不可用聚合函数(如 WHERE AVG(price) > 1000错误)。


​总结图示​


http://www.xdnf.cn/news/17817.html

相关文章:

  • GitHub的简单使用方法----(5)
  • C++联合体的定义
  • 春日花园动画
  • 9. React组件生命周期
  • linux远程部署dify和mac本地部署dify
  • 机器学习—— TF-IDF文本特征提取评估权重 + Jieba 库进行分词(以《红楼梦》为例)
  • 能刷java题的网站
  • ROS教育中自动驾驶机器人的技术融合与技术创新
  • 如何将 AGV 叉车成功集成到仓库自动化系统中?
  • Apache 服务器基础配置与虚拟主机部署
  • AI智能体如何从错误中学习:反思机制详解
  • Flutter ExpansionPanel组件(可收缩的列表)
  • 云原生作业(tomcat)
  • 异或和查询
  • echarts配置项详细解释
  • C99中的变长数组(VLA)
  • THCV215一种高速视频数据收发器,采用低电压差分信号(LVDS)技术支持高速串行数据传输,支持1080p/60Hz高分辨率传输
  • 计算机网络---默认网关(Default Gateway)
  • C++ Rust与Go
  • Vue接口平台小功能——发送报告到飞书
  • 计算机网络摘星题库800题笔记 第4章 网络层
  • nurbs曲线的matlab
  • 10. React组件间的通信
  • 数据分析基本内容(第二十节课内容总结)
  • Milvus入门:开源向量数据库,解锁大模型时代的高效检索
  • kafka初步介绍
  • 不废话,UE5极速云渲染操作方法
  • STM32_bug总结(TIM定时中断进不去和只进1次)
  • MyBatis持久层实现
  • 全面解析MySQL(5)——“索引、事务、JDBC”三大核心