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

sql层面语法的总结(mysql层面语法,主要侧重于sql的查询相关的信息量积累)

sql层面语法的总结(mysql层面语法,主要侧重于sql的查询相关的信息量积累)

这个文章主要是针对sql语法的逻辑内容
单表查询相关机制设计的讲解

在使用sql之前,我们要了解一个基础概念,也就是关系型数据库。

其实用大白话讲,就是一个table表格,一个excel表格。
列头和数据

我们主要研究的就是这个从这个表格里去到我们想要的数据
于是就有了
select 列
from table
where 列=“对应的数据”
and 列=“对应的数据”

这样就取到了想要的数据。
但是为了处理更加复杂的

我们的目标,就是找到这个table里面的所有的数据,我们看看sql查询,提供了哪些机制供使用
type类型
文本,时间,数据

对于查询的列可以限制使用:
distinct这个关键字处理去重

查询where的关键字
对应的单个列数据
1.对应的列匹配数据,列名 = 某个值
对于时间和数字,还可以大于,小于,等于这些
空值判断 列 IS NULL / IS NOT NULL 不能用 = NULL
4.like机制,模糊查询

对应多个数据
1.in机制,锁定固定的数据,就是列名对应的多个数据

2.between机制,在某某区间

备注:多个查询对象可以用and和or连接

计算查询
第一个阶段

对某个列进行操作,常见的操作
count()个数
avg()平均值
max() 最大值
min() 最小值

第二个阶段
对列的类型去进一步操作:
groupby 这个就贵吧数据分成一坨坨在计算

第三个阶段
对计算出来的值做限制
只显示对应计算出来的值

你总结的这部分已经抓住了单表查询的核心骨架,很清晰。在此基础上,我帮你补充一些MySQL中常用但容易忽略的SQL语法细节,侧重于查询相关的信息量积累,让你的“工具箱”更完整。


一、SELECT 子句的更多机制

1. 列别名(AS)

SELECTcolumn_nameASalias_nameFROMtable;-- AS 可省略SELECTcolumn_name alias_nameFROMtable;

2. 常量查询

SELECT'固定文本'ASinfo,100ASnum,NOW()AScurrent_time;

3. 表达式计算

SELECTprice,quantity,price*quantityAStotalFROMorders;

4. 字符串拼接

SELECTCONCAT(first_name,' ',last_name)ASfull_nameFROMusers;

5. 条件分支(CASE WHEN)

SELECTname,score,CASEWHENscore>=90THEN'优秀'WHENscore>=60THEN'及格'ELSE'不及格'ENDASlevelFROMstudents;

二、WHERE 的补充条件

操作符说明示例
!=<>不等于WHERE age <> 18
<=>安全等于(可比较 NULL)WHERE a <=> NULL
NOT IN不在列表中WHERE id NOT IN (1,2,3)
NOT BETWEEN不在区间WHERE price NOT BETWEEN 10 AND 100
NOT LIKE不匹配模式WHERE name NOT LIKE 'test%'

LIKE 的通配符

  • %→ 任意个字符(含0个)
  • _→ 单个字符
WHEREnameLIKE'张%'-- 张开头WHEREnameLIKE'%三'-- 三结尾WHEREnameLIKE'王_'-- 王+一个汉字

转义特殊字符

WHEREpathLIKE'%\_%'ESCAPE'\'-- 查找包含下划线的

三、GROUP BY 与聚合函数的细节

常用的聚合函数

函数说明注意
COUNT(*)总行数包含 NULL
COUNT(column)非 NULL 行数不含 NULL
COUNT(DISTINCT column)去重后计数常用
SUM(column)求和忽略 NULL
AVG(column)平均值忽略 NULL
MAX(column)/MIN(column)最大/最小值忽略 NULL
GROUP_CONCAT(column)拼接分组内容MySQL特有
SELECTcategory,COUNT(*)AScnt,GROUP_CONCAT(DISTINCTproduct_nameORDERBYpriceDESCSEPARATOR';')ASproductsFROMgoodsGROUPBYcategory;

HAVING —— 对分组后的结果筛选

SELECTcategory,AVG(price)ASavg_priceFROMgoodsGROUPBYcategoryHAVINGavg_price>100;-- 不能用 WHERE

WHERE 在分组前过滤,HAVING 在分组后过滤。


四、排序与分页

ORDER BY

SELECT*FROMproductsORDERBYpriceDESC,idASC;
  • 可按列别名排序
  • 可按表达式排序:ORDER BY (price * quantity) DESC

LIMIT 分页

-- 前5条SELECT*FROMtableLIMIT5;-- 从第6条开始取10条(偏移量5,取10条)SELECT*FROMtableLIMIT5,10;-- 推荐写法(MySQL 8.0+)SELECT*FROMtableLIMIT10OFFSET5;

大表分页性能问题:LIMIT 100000, 10会很慢,通常用WHERE id > 上次最大id子查询优化。


五、执行顺序(非常重要)

你写SQL的顺序 ≠ 数据库执行的顺序:

FROM → 确定表 WHERE → 行级过滤 GROUP BY → 分组 HAVING → 组级过滤 SELECT → 计算表达式、别名 ORDER BY → 排序 LIMIT → 分页

案例验证:

SELECTcategory,AVG(price)ASavg_priceFROMgoodsWHEREprice>0GROUPBYcategoryHAVINGavg_price>50ORDERBYavg_priceDESCLIMIT5;

因为 HAVING 能识别avg_price别名,是因为它在 SELECT 之后执行。


六、常用函数补充(查询时会用到)

时间处理

YEAR(date_col),MONTH(date_col),DAY(date_col)DATE_ADD(date,INTERVAL1DAY)DATEDIFF(date1,date2)NOW(),CURDATE(),CURTIME()

字符串处理

LENGTH(str),CHAR_LENGTH(str)UPPER(str),LOWER(str)TRIM(str),SUBSTRING(str,start,length)REPLACE(str,from,to)

数值处理

ROUND(num,2),FLOOR(num),CEIL(num)ABS(num),RAND()

判断与转换

IFNULL(column,默认值)COALESCE(1,2,默认值)-- 返回第一个非NULLCAST(columnAS类型)

七、一个综合查询示例

把所有机制串起来:

SELECTdepartment,COUNT(*)ASemp_count,ROUND(AVG(salary),2)ASavg_salary,GROUP_CONCAT(DISTINCTnameORDERBYname SEPARATOR', ')ASemployeesFROMemployeeWHEREstatus='active'ANDhire_date>='2020-01-01'GROUPBYdepartmentHAVINGemp_count>=3ORDERBYavg_salaryDESCLIMIT10;

小结

你已经把单表查询的主线理解得很清楚了:

  • SELECT→ 拿什么
  • FROM→ 从哪拿
  • WHERE→ 过滤行
  • GROUP BY + 聚合→ 分组计算
  • HAVING→ 过滤组
  • ORDER BY + LIMIT→ 排序分页
http://www.jsqmd.com/news/987444/

相关文章:

  • 沧州优质铸钢厂排行:5家实体制造企业实力解析 - 起跑123
  • 如何彻底改变GTA5线上体验:免费小助手的完整使用指南
  • 孩子夏天总过敏?别乱涂药膏!这几款中成药对症用,安全又管用
  • 吸金树脂在矿山尾水金氰络合物的应用与技术综述
  • 参考口碑案例看品牌排名
  • 【极客玩法】WPS接入claude AI助理
  • 2026年6月贴标机公司有哪些,平面贴标机/贴标机/分页贴标机/圆瓶贴标机/小型贴标机/高精度贴标机,贴标机厂家哪家好 - 品牌推荐师
  • 黑龙江断桥铝窗品牌排行 实测性能与交付能力对比 - 起跑123
  • Colossal-AI入门
  • STM32F103RC裸机ROS串口通信开发套件:含OpenOCD烧录配置、电池/LED驱动与ros_lib适配源码
  • UniApp跨端开发实战:从核心语法到性能优化的工程化闭环
  • MQTT服务器搭建(windows环境)
  • 2026年上海雨水PP模块工厂:海绵城市、雨水收集系统与蓄水模块制造商实力解析 - 品牌发掘
  • iOS 26.4越狱完整教程:安全解锁iPhone隐藏功能的终极指南
  • 2026防城港防水补漏哪家靠谱?正规公司排名及避坑价格指南 - 苏易修缮
  • 告别人工加班考评!在线考试 + 人才测评系统,轻松简化企业考核全流程 - 玖叁鹿
  • 实用,DynamicTP进阶之数据采集与告警
  • 海口黄金回收避坑实测篇|本地卖金正规辨别技巧与机构实测 - 薛定谔的梨花猫
  • 3步实现抖音无水印批量下载:douyin-downloader开源工具全解析
  • 精工铸标杆 引领中国厨房水槽品质升级 - 玖叁鹿
  • 2026东莞环保公司优质厂家推荐|东莞环保公司排行榜5强
  • 免费通达信数据接口:Python金融分析的终极解决方案
  • COM3D2女仆调校器:实时修改游戏角色属性的终极解决方案
  • AI生成FPGA代码为何难实现真并行
  • 长沙卖黄金避坑实录:这 4 大套路最常见,这样做没人能坑你 - 奢侈品回收测评
  • 2026钦州防水补漏哪家靠谱?正规公司排名及避坑价格指南 - 苏易修缮
  • 金狮悠闲服,在家舒服、出门体面,2026新风尚~!
  • 2026年整厂设备回收与二手工厂设备处置TOP榜单:涵盖机床冲床、工控化学及自动化设备回收公司的优质口碑推荐 - 品牌发掘
  • 随机访问(Random Access)
  • 如何确认你的手机是否使用软陀螺