是否有任何经验法则可以根据人类可读的描述构建 SQL 查询?

use*_*312 5 sql database heuristics relational-database human-readable

每当我们面前有任何查询描述时,我们都会尝试应用启发式和头脑风暴来构建查询。

是否有任何系统的分步或数学方法可以根据给定的人类可读描述构建 SQL 查询?

例如,如何确定 SQL 查询是否需要联接而不是子查询、是否需要 group by、是否需要 IN 子句等等。

例如,任何研究数字电子学的人都会知道卡诺图或奎因·麦克劳斯基方法等方法。这些是简化数字逻辑的一些系统方法。

是否有类似这样的方法来手动分析sql查询以避免每次头脑风暴?

usr*_*usr 1

这是我在非分组查询中所做的操作:

FROM我将希望在表中每行接收零或一个输出行的表放入子句中。通常,您需要诸如“具有某些属性的所有客户”之类的内容。然后,客户表进入该FROM子句。

使用联接来添加列和过滤行。连接不应重复行。连接应该找到零行或一行,而不是更多。这使其非常直观,因为您可以说“联接添加列并过滤掉一些行”。

如果连接可以替代子查询,则应避免使用子查询。连接看起来更好、更通用并且通常更高效(由于常见的查询优化器弱点)。

如何使用WHERE和预测很简单。