SQL里最基本的语法是什么呢?

SELECT 语句用于从数据库中检索数据。
说实话,只要选择你需要的就可以了。

FROM 子句指定数据源。
从广义上讲,这意味着告诉 SQL 在哪里查找数据。
例如,订单和客户表。

ALL 默认返回所有数据。
DISTINCT 删除重复项并仅留下不同的重复项。
DISTINCTROW 按行删除重复项。
TOP 选择前几项。
显然,是为了控制返回的数据量。

美国别名字段。
坦白说,改变名字会让它看起来更友好。

哪里有资格。
换句话说,就是对数据进行过滤,只保留符合条件的数据。

比较运算符 =、>、<、!=。
更具体地说,就是找到符合比较关系的记录。

JOIN 连接表。
INNER JOIN 仅存储双方的匹配项。
LEFT JOIN 保留所有左表。
RIGHT JOIN 保留所有正确的表。
说白了,这就是把多个表放在一起。

按组分组。
有一个累积结果过滤器。
显然,它被归类为条件统计量。

PARAMETERS 创建参数查询。
更具体地说,就是让SQL语句支持动态输入。

功能查询包括更新、删除、添加和生成表。
严格来说,这意味着直接操作数据库数据。

使用 UPDATE 进行更新查询。
使用 DELETE 删除查询。
从广义上讲,这意味着更改数据和删除数据。

子查询匹配 ANY、ALL、EXISTS。
任何人都会满足你。
一切都必须得到满足。
只要存在就满足。
换句话说,就是利用条件来过滤条件。

例如:退回英国客户的订单。

SELECT FROM Orders WHERE ShipCountry = 'UK'
先了解基本结构,然后慢慢展开。

简述SQL语言中SELECT语句的基本结构

说白了,SELECT查询的核心就是“选择+过滤+排序”。
语法看似复杂,但逻辑却很直观。

拓展一下,主要有两点: 首先使用[ALL|DISTINCT]设置范围。
例如,去年我们承接了一个电子商务报告项目。
使用 DISTINCT 在删除重复数据时节省了半天的精力。
但忘记添加会导致数据重复,直接拖慢SQL执行5 秒以上。
这称为雪崩效应。
事实上,前面的一个小延迟就会导致后面的一切崩溃。
另外,[WHERE]条件必须尽早设置。
去年测试用户筛选问题时,发现把JOIN放在前面卡在3 秒,把WHERE放在前面直接掉到了1 秒,因为数据库早就停止统计不符合条件的数据了。
还有另一个重要的细节。
例如,如果您使用 LIKE '%张' 来查找姓名,请在姓名后面加上百分号“%”。
SQL会自动使用索引。
然而,如果你写LIKE '%张' 那么它本质上相当于全表扫描。
去年,一名实习生踏入了这个陷阱,服务器CPU使用率达到了9 0%——老实说,这是一个相当大的陷阱。

一开始我觉得GROUP BY和HAVING很深奥,后来发现它们其实就相当于Excel中的数据透视表。
首先将堆按维度划分(GROUP BY),然后过滤出堆中符合条件的区域(HAVING)。
例如,在按班级计算平均分的情况下,HAVING count()>0就是过滤掉没有班级的班级。
等等,还有一件事。
ORDER BY 中的 ASC/DESC 请勿拼写错误。
去年有同学写的是降序,而不是升序。
直播数据不按从高到低的顺序,老板骂了我半个小时。

应该运行更多的 EXPLAIN 分析计划,尤其是复杂的查询。

第五章 SQL谓词 BETWEEN

说到BETWEEN,这个SQL小工具还真是有趣。
我记得当我第一次遇到这个的时候,我认为它非常有用,特别是对于过滤值落在一定范围内的数据。

例如,我曾经在论坛上看到一个讨论,有人提到使用BETWEEN来过滤1 8 岁到2 1 岁之间的用户。
我立即理解了这个例子。
BETWEEN不仅可以过滤数值,还可以过滤日期、时间等,非常灵活。

但是说实话,我犯了一些小错误,比如先把BETWEEN的值写反了,比如BETWEEN2 1 AND1 8 ,结果查询返回了一个空结果。
由此我意识到,使用BETWEEN时顺序非常重要,应该按升序书写。

此外,在处理包含字符串数据的表时,我发现 BETWEEN 默认情况下按 SQLUPPER 排序,这意味着它不区分大小写。
当时,我无法理解为什么会发生这种情况。
我查了资料,发现这是SQL的默认行为。
如果要区分大小写,则必须使用 %SQLSTRING 排序函数。

我记得有一次,当我在做一个项目时,我需要忽略字符串比较中的空格和标点符号。
当时我正在使用BETWEEN,发现这是自动处理的。
这让我们觉得BETWEEN在处理字符串时非常聪明。

不过,我从来没有亲自经营过这个地区。
我记得数据在 X 左右,但我建议检查一下。
此外,在动态 SQL 中使用 BETWEEN 时,请记住以 %SelectMode 格式指定日期,例如 %SelectMode=1 (ODBC),以避免 SQLCODE 错误。

总之,SQL谓词BETWEEN用得好可以大大提高你的查询效率,但是你也要注意它的使用规则,避免犯像我当年那样的愚蠢错误。