MySQL:每个查询的定义与用法

发布时间:2026/10/22 17:14:00

MySQL:每个查询的定义与用法 一. SELECT语句基础定义SELECT语句用于从数据库表中检索数据。它是SQL中最基本和最常用的命令。语法解析SELECT column1, column2, ... -- 选择要检索的列FROM table_name -- 指定数据来源的表[WHERE condition] -- 可选的筛选条件[ORDER BY column_name [ASC|DESC]] -- 可选的排序[LIMIT number]; -- 可选的返回行数限制详细解释- SELECT指定要返回的列可以使用*表示所有列- FROM指定数据来源的一个或多个表- WHERE过滤条件只有满足条件的行才会被返回- ORDER BY对结果集进行排序- LIMIT限制返回的行数二. WHERE条件筛选定义WHERE子句用于过滤记录只返回满足指定条件的行。比较运算符-- 定义精确匹配查询SELECT * FROM employees WHERE salary 5000; -- 等于-- 定义范围比较查询SELECT * FROM employees WHERE salary 5000; -- 大于SELECT * FROM employees WHERE salary 5000; -- 小于SELECT * FROM employees WHERE salary 5000; -- 大于等于SELECT * FROM employees WHERE salary 5000; -- 小于等于SELECT * FROM employees WHERE salary 5000; -- 不等于-- 定义范围区间查询SELECT * FROM employees WHERE salary BETWEEN 3000 AND 6000; -- 在3000-6000之间逻辑运算符定义-- 定义AND要求所有条件都满足SELECT * FROM employeesWHERE salary 5000 AND department_id 1; -- 工资5000且部门1-- 定义OR要求至少一个条件满足SELECT * FROM employeesWHERE salary 5000 OR department_id 1; -- 工资5000或部门1-- 定义NOT否定条件SELECT * FROM employeesWHERE NOT department_id 1; -- 部门不等于1-- 定义复杂逻辑组合SELECT * FROM employeesWHERE (salary 5000 OR commission_pct IS NOT NULL) -- 括号优先执行AND hire_date 2020-01-01;模糊查询定义-- 定义LIKE用于模式匹配%匹配任意字符序列SELECT * FROM employees WHERE first_name LIKE J%; -- 以J开头SELECT * FROM employees WHERE first_name LIKE %n; -- 以n结尾SELECT * FROM employees WHERE first_name LIKE %oh%; -- 包含oh-- 定义_匹配单个字符SELECT * FROM employees WHERE first_name LIKE J_; -- J开头两个字符SELECT * FROM employees WHERE first_name LIKE J__; -- J开头三个字符NULL值处理定义-- 定义IS NULL检查空值SELECT * FROM employees WHERE commission_pct IS NULL;-- 定义IS NOT NULL检查非空值SELECT * FROM employees WHERE commission_pct IS NOT NULL;-- 定义COALESCE函数处理空值返回第一个非空值SELECTfirst_name,COALESCE(commission_pct, 0) AS commission -- 如果commission_pct为NULL则返回0FROM employees;三. JOIN连接查询定义JOIN用于根据两个或多个表之间的相关列合并行。用于从多个表中检索数据。INNER JOIN定义-- 定义内连接返回两个表中匹配的行SELECTe.first_name,e.last_name,d.department_nameFROM employees e -- e是employees表的别名INNER JOIN departments d ON e.department_id d.department_id; -- 连接条件解释只返回employees和departments表中department_id匹配的记录。LEFT JOIN定义-- 定义左连接返回左表所有记录和右表匹配的记录SELECTe.first_name,d.department_nameFROM employees eLEFT JOIN departments d ON e.department_id d.department_id;解释返回所有员工记录即使某些员工没有分配部门department_name为NULL。RIGHT JOIN定义- 定义右连接返回右表所有记录和左表匹配的记录SELECTe.first_name,d.department_nameFROM employees eRIGHT JOIN departments d ON e.department_id d.department_id;解释返回所有部门记录即使某些部门没有员工first_name为NULL。自连接定义-- 定义表与自身连接用于查询层次结构数据SELECTe1.first_name AS 员工姓名,e2.first_name AS 经理姓名FROM employees e1LEFT JOIN employees e2 ON e1.manager_id e2.employee_id;解释通过manager_id字段将员工表与自身连接查找每个员工的经理。四. 聚合函数与分组聚合函数定义聚合函数对一组值执行计算并返回单个值。-- 定义COUNT计算行数SELECT COUNT(*) AS total_employees FROM employees; -- 总员工数SELECT COUNT(DISTINCT department_id) AS unique_departments FROM employees; -- 不重复部门数-- 定义SUM计算总和SELECT SUM(salary) AS total_salary FROM employees; -- 工资总额-- 定义AVG计算平均值SELECT AVG(salary) AS average_salary FROM employees; -- 平均工资-- 定义MAX/MIN找最大最小值SELECT MAX(salary) AS max_salary FROM employees; -- 最高工资SELECT MIN(salary) AS min_salary FROM employees; -- 最低工资GROUP BY定义-- 定义按部门分组统计SELECTdepartment_id,COUNT(*) AS employee_count, -- 每个部门的员工数AVG(salary) AS avg_salary -- 每个部门的平均工资FROM employeesGROUP BY department_id; -- 按department_id分组解释将员工按部门分组然后对每个组计算统计值。HAVING定义-- 定义HAVING对分组后的结果进行筛选SELECTdepartment_id,AVG(salary) AS avg_salaryFROM employeesGROUP BY department_idHAVING AVG(salary) 5000; -- 只显示平均工资5000的部门解释WHERE在分组前过滤行HAVING在分组后过滤组。五. 子查询定义子查询是嵌套在其他SQL查询中的查询。标量子查询定义-- 定义返回单个值的子查询SELECT * FROM employeesWHERE salary (SELECT AVG(salary) FROM employees); -- 子查询返回平均工资解释子查询(SELECT AVG(salary) FROM employees)返回一个值平均工资主查询使用这个值进行比较。列子查询定义-- 定义返回一列值的子查询通常与IN一起使用SELECT * FROM employeesWHERE department_id IN (SELECT department_id FROM departmentsWHERE location_id 1700 -- 子查询返回特定位置的部门ID列表);解释子查询返回一个部门ID列表主查询检查员工的部门ID是否在这个列表中。EXISTS子查询定义-- 定义检查子查询是否返回任何行SELECT * FROM departments dWHERE EXISTS (SELECT 1 FROM employees eWHERE e.department_id d.department_id -- 关联子查询);解释对于每个部门检查是否存在属于该部门的员工。EXISTS返回布尔值。关键概念总结1. **SELECT**数据检索的核心命令2. **WHERE**行级过滤条件3. **JOIN**多表数据关联4. **GROUP BY**数据分组聚合5. **HAVING**分组结果过滤6. **子查询**查询嵌套解决复杂问题7. **索引**提高查询性能的数据结构
延伸阅读

更多相关文章

2026/10/22 17:14:00

君正T32/T33开发笔记之AOV系统SDK编译和运行

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/22 18:29:22

VBA调用Shell实战:打通Office与操作系统的自动化桥梁

1. 为什么VBA需要碰Shell:办公自动化里那些"纯VBA搞不定"的事说实话,很多人学VBA是为了处理Excel表格、批量整理数据,最初压根没想过要碰Shell。但做自动化做到一定深度,你迟早会遇到这么一类需求:光靠VBA的…

2026/10/22 18:29:22

MachineY Engine:两分钟在Windows上搭建AI Agent运行环境

看到这个标题我第一反应是,Windows上跑AI Agent,很多人的印象还停留在“配环境两小时,跑通五分钟”的阶段。Python版本冲突、依赖地狱、模型下载卡住,每个坑都能劝退一批人。MachineY Engine这个开源项目就是冲着这个痛点来的&…

2026/10/22 18:29:22

微信小程序+云开发:校园二手交易平台源码设计与实战

简介:这一份基于微信小程序的校园二手物品交易平台设计源码,面向需要完成毕业设计、课程项目或小程序开发练手的计算机专业学生与开发者。系统采用Java与JavaScript技术栈,结合微信小程序前端、HTML/CSS以及SQL数据库,完整覆盖用户…

2026/10/22 18:29:22

AI驱动商业智能落地指南:从数据治理到决策闭环

先说一个我观察到的现象:很多团队把AI和BI放在一起谈,最后做出来的东西既不是AI,也不算BI,只是一个用大模型套了一层壳的旧报表系统。我参与过几个数据基础还不错的企业项目,也旁观过一些从零开始搭的团队,…

2026/10/22 18:29:22

专科生降AIGC实测:10个工具让AI辅助写作更像自己写的

前几天一个专科在读的学弟发了一篇结课报告给我,说是自己写的。我只扫了一眼开头三段就笑了——“首先需要明确的是……其次……综上所述……”这种整齐划一到极点的排比,再加上满屏“赋能”“闭环”“抓手”,根本不需要任何检测系统&#xf…

2026/10/22 18:24:18

BP神经网络用于用电量预测的工程落地实践

简介:本资源是一份面向机器学习初学者与电力系统数据分析实践者的BP神经网络用电量预测完整实现方案,聚焦非线性时序预测这一典型工程问题,适用于课程设计、毕业设计及能源领域轻量级建模需求。压缩包仅2个文件(11KB)&…

2026/10/22 11:29:28

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/22 0:01:49

电商智能运营体系从0到1:架构设计、落地步骤与避坑指南

前两年我们团队接了一个电商平台的运营中台项目,目标很直白:把过去靠运营拍脑袋做的选品、定价、发券、推活动这些事,逐步用数据算法和自动化流程代替。项目名字内部就叫“电商智能运营体系”。最近有不少朋友问我当时是怎么设计的、踩过哪些…

2026/10/22 0:01:49

若依框架AI代码生成不稳定?用Agent Skill三层结构+五步法搞定

最近一段时间,我一直想把后台管理系统里那些机械重复的增删改查代码交给AI去写。框架用的是若依,按理说这类业务代码模式非常固定,应该是AI最擅长的事情。可真试下来却不是那么回事——你让AI生成一个用户管理模块,它给出的Contro…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑