SQL-DQL语句

SQL-DQL语句

2026年5月18日·#javawebai/后端基础前端/MySQL/数据库·1053 字 5 分钟
浏览量加载中...
AI 摘要- DeepSeek

DQL数据查询语言:基本查询、条件查询、聚合函数、分组、排序、分页的完整用法

SQL-DQL语句#

定义#

DQL(Data Query Language):数据查询语言,用来查询数据库表中的记录。查询关键字为 SELECT。在业务系统中,查询是最常用、最重要的操作。

语法/用法#

完整语法结构#

SELECT 字段列表
FROM 表名列表
WHERE 条件列表
GROUP BY 分组字段列表
HAVING 分组后条件列表
ORDER BY 排序字段列表
LIMIT 分页参数

基本查询#

-- 查询指定字段
SELECT 字段1, 字段2 FROM 表名;
-- 查询所有字段
SELECT * FROM 表名;
-- 设置别名
SELECT 字段1 [AS] 别名1, 字段2 [AS] 别名2 FROM 表名;
-- 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;

示例:

SELECT name, entry_date FROM emp;
SELECT name AS 姓名, entry_date AS 入职日期 FROM emp;
SELECT DISTINCT job FROM emp;

* 号查询所有字段,开发中尽量少用(不直观、影响效率)。

条件查询(WHERE)#

SELECT 字段列表 FROM 表名 WHERE 条件列表;

比较运算符#

运算符说明
> >= < <= =大小比较
<> 或 !=不等于
BETWEEN ... AND ...在范围内(含边界)
IN(...)多值匹配
LIKE模糊匹配(% 任意字符,_ 单个字符)
IS NULL / IS NOT NULL空值判断

逻辑运算符#

运算符说明
AND 或 &&逻辑与
OR 或 `
NOT 或 !逻辑非

示例:

-- 姓名等于
SELECT * FROM emp WHERE name = '杨逍';
-- 薪资范围
SELECT * FROM emp WHERE salary <= 5000;
-- NULL 判断
SELECT * FROM emp WHERE job IS NULL;
SELECT * FROM emp WHERE job IS NOT NULL;
-- 不等
SELECT * FROM emp WHERE password <> '123456';
-- 日期范围
SELECT * FROM emp WHERE entry_date BETWEEN '2000-01-01' AND '2010-01-01';
-- IN 多值
SELECT * FROM emp WHERE job IN (2, 3, 4);
-- 模糊匹配
SELECT * FROM emp WHERE name LIKE '__'; -- 两个字
SELECT * FROM emp WHERE name LIKE '张%'; -- 姓张
SELECT * FROM emp WHERE name LIKE '%二%'; -- 包含"二"

聚合函数#

函数功能
COUNT(字段)统计行数(忽略 NULL)
SUM(字段)求和
MAX(字段)最大值
MIN(字段)最小值
AVG(字段)平均值

聚合函数会忽略 NULL 值。COUNT(*) 是统计总行数的推荐写法(MySQL 底层优化)。

示例:

SELECT COUNT(*) FROM emp; -- 员工总数
SELECT AVG(salary) FROM emp; -- 平均薪资
SELECT MIN(salary) FROM emp; -- 最低薪资
SELECT MAX(salary) FROM emp; -- 最高薪资
SELECT SUM(salary) FROM emp; -- 薪资总额

分组查询(GROUP BY)#

SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段 [HAVING 分组后条件];

示例:

-- 按性别统计人数
SELECT gender, COUNT(*) FROM emp GROUP BY gender;
-- 分组前筛选 + 分组后过滤
SELECT job, COUNT(*)
FROM emp
WHERE entry_date <= '2015-01-01'
GROUP BY job
HAVING COUNT(*) >= 2;

WHERE 与 HAVING 的区别#

对比维度WHEREHAVING
执行时机分组前过滤分组后过滤
能否使用聚合函数不能可以

执行顺序:WHERE → 聚合函数 → HAVING

排序查询(ORDER BY)#

SELECT 字段列表 FROM 表名 ORDER BY 字段1 [ASC|DESC], 字段2 [ASC|DESC] ...;
  • ASC:升序(默认,可省略)
  • DESC:降序

示例:

-- 按入职时间升序
SELECT * FROM emp ORDER BY entry_date;
-- 按入职时间降序
SELECT * FROM emp ORDER BY entry_date DESC;
-- 多字段排序:入职时间升序,相同时按更新时间降序
SELECT * FROM emp ORDER BY entry_date ASC, update_time DESC;

分页查询(LIMIT)#

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;
  • 起始索引从 0 开始。
  • 计算公式:起始索引 = (页码 - 1) × 每页记录数

示例:

-- 第1页,每页5条
SELECT * FROM emp LIMIT 0, 5;
-- 等价简写
SELECT * FROM emp LIMIT 5;
-- 第2页,每页5条
SELECT * FROM emp LIMIT 5, 5;
-- 第3页,每页5条
SELECT * FROM emp LIMIT 10, 5;

常见场景#

DQL 是业务系统中最核心的操作,网站/APP 的数据展示、搜索、报表导出等功能均依赖 DQL 实现。

注意事项#

  • NULL 判断只能用 IS NULL / IS NOT NULL,不能用 = NULL。
  • 分组后 SELECT 的字段通常仅限聚合函数和分组字段,查询其他字段无意义。
  • LIMIT 是 MySQL 方言,不同数据库的分页语法不同。
  • 分页查询第一页时,LIMIT 5 等价于 LIMIT 0, 5。

测试数据#

-- 创建 emp 表并插入测试数据,详见源文档 3.3.2 节。
-- 包含 30 条梁山好汉员工数据,覆盖性别、职位、薪资等多种筛选场景。

评论区

[ 标签 ]
# AI37# AI 编程2# AI工具1# AI绘图1# AI辅助开发2# Ajax7# Apifox1# AstrBot3# Astro2# CC Switch1# CDN2# Claude Code1# claudecode2# ClaudeCode1# Cloudflare2# CloudFlare2# CloudFlare-ImgBed3# coc4# CSS10# DeepSeek6# deepseek2# DELETE1# Docker5# EdgeOne3# Gist1# git1# GitHub1# hexo-circle-of-friends1# HTML9# HTTP10# ImageManager1# Java23# java13# JavaScript11# JavaWeb113# JDBC7# JSON2# JUnit1# LangChain25# Linux4# Logback1# Maven17# Muse Spark1# Mybatis1# MyBatis18# MySQL45# MySql1# NapCat1# Node.js1# obsidian2# Obsidian5# OpenCode4# ORM1# PathVariable1# PicGo1# PyCharm1# Python70# RequestBody1# RequestMapping1# RESTful风格1# skills1# Slf4j1# SpringBoot37# SpringMVC5# SQL2# Streamlit5# Svelte2# TailwindCSS1# Telegram3# Tlias2# Vercel1# vscode2# Vue20# Waline3# Web3# WebDAV1# Web基础6# Web开发6# WinSCP1# YAML1# 三层架构1# 中二宣言1# 书籍1# 使用文档10# 写作1# 函数2# 刷步数1# 前端52# 动态1# 动漫1# 包1# 单词2# 博客8# 博客工作流1# 博客开发2# 参数接收1# 友链1# 反思2# 后端48# 图床6# 地图1# 备份2# 大模型1# 奇思妙想1# 存储1# 学习方法6# 学校1# 宝塔面板3# 宝宝10# 实战4# 对象1# 导航栏1# 工具2# 布局2# 开发1# 开发工具1# 开发规范1# 开心1# 异常处理1# 影视2# 微信1# 性能优化2# 总结1# 想法15# 感受1# 感悟11# 指南1# 提示词工程2# 插件5# 故障排除1# 效率工具2# 教程10# 数据分析9# 数据库27# 数据结构1# 文件操作2# 斩神1# 日常95# 日志框架1# 朋友圈1# 朱元璋1# 模块1# 模板1# 正则表达式2# 测试3# 游戏2# 爬虫7# 生活迁移1# 电影2# 电脑1# 碎碎念1# 视觉识别1# 类1# 类型注解1# 网络基础2# 网络教室1# 羊毛2# 脚本2# 脚本工具1# 自动化2# 蓝奏云1# 表单1# 订阅推荐2# 记录2# 评论系统1# 词根1# 词缀1# 说说1# 足迹1# 跑步2# 路径参数1# 转载2# 运动1# 部署11# 部落冲突1# 配置1# 随机图1# 面向对象5# 音乐3# 音标1# 项目实战11# 饮食1# 驼峰命名1# 高德地图1
[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:000:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]