语言的工作范围

SQL既能读取数据,也能建立表、定义约束、更新记录和管理事务。查询只是其用途的一部分。使用者在语句中说明选择哪些列、满足什么条件以及怎样组合资料,数据库再据此安排实际执行工作;这与逐项控制文件读取位置的过程式程序有不同的表达重点。

参考:[1]

从表得到结果

SELECT语句可以从表或其他查询结果读取资料,用WHERE筛选行,并用连接组合来源。分组和聚合则把多行计算成每组的统计结果。过滤发生在哪个层次会影响含义,例如筛选明细行与筛选汇总结果是不同问题,编写时应先明确最终希望得到哪一类记录。

参考:[2]

约束与更新一起定义

表可以规定列的类型、主键和其他约束,插入或更新必须遵守这些规则。事务又能把若干相关语句组织在一起。程序传入参数时,应让数据保持为参数,而不是将它拼成任意SQL片段;这样查询结构与用户提供的值能够有清楚边界。

参考:[1]

共同标准与方言

SQL有共同标准,但数据库提供的函数、类型及语法并非处处相同。SQLite就明确列出所支持、略去和扩展的功能;移植时需要检查实际语义。没有ORDER BY的查询也不承诺固定输出次序,测试中碰巧一直相同的排列,不能被当作语言保证的排序规则。

参考:[2]