问题标签 [ansi-sql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 为什么没有数据库完全支持 ANSI 或 ISO SQL 标准?
如果我正在设计一家炼油厂,我不会期望来自不同供应商的材料不会以微妙而重要的方式不符合已发布的标准。来自一家供应商的管道、阀门和其他组件将配备符合 ANSI 标准的法兰和壁厚,任何其他供应商的相同零件也是如此。因此,互操作性和系统安全性得到了保证。
那么,为什么通用数据库对它们所遵循的标准的哪些部分如此挑剔,为什么没有 100% 符合标准的系统脱颖而出呢?标准是否“被破坏”、缺乏范围或太难设计?
得出结论;ANSI(或 ISO)定义 SQL 标准的意义何在?
mysql - 为什么 MySQL 允许没有聚合函数的“group by”查询?
惊喜——这是 MySQL 中一个完全有效的查询:
如果您在 Oracle 或 SQL Server 中尝试此查询,您会收到自然错误消息:
那么 MySQL 如何确定为每个 X 显示哪个 Y?它只会选择一个。据我所知,它只会选择它找到的第一个 Y。基本原理是,如果 Y 既不是聚合函数也不是 group by 子句,那么在查询中指定“select Y”一开始就没有任何意义。因此,我作为数据库引擎将返回任何我想要的,你会喜欢的。
甚至还有一个 MySQL 配置参数来关闭这种“松散”。 http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by
这篇文章甚至提到了 MySQL 在这方面是如何被批评为不符合 ANSI-SQL 的。 http://www.oreillynet.com/databases/blog/2007/05/debunking_group_by_myths.html
我的问题是: 为什么MySQL 是这样设计的?他们打破 ANSI-SQL 的理由是什么?
sql - 数据库表中的嵌套数据
我有一个表,其中包含以下列方式相关的记录:
父母,孩子,孙子。
我希望能够运行查询来执行以下操作:
- 检索从特定记录派生的所有记录
- 检索作为特定记录的直接子项的所有记录(即只有直接子项)
- 检索作为特定记录的孙子的所有记录(即只有孙子)
- 检索记录的祖父母
- 检索记录的父项
- 检索所有记录(及其子孙)
我希望这个查询以排序的方式返回数据,这样我就可以创建一个结构化的文档(例如来自查询结果的 XML)。通过“排序”,我的意思是结果集是由父母“分组”的,然后是孩子,然后是孙子
我设计了一个像这样的简单表格(伪代码):
我有几个问题:
(请记住我要运行的查询 [(1)-(6) 上面])这是最好的(即我可以使用的最有效的表结构?如果不是,什么是?
任何人都可以帮助我编写 ANSI SQL 语句来执行上述查询 (1)-(6) 吗?
sql - Ansi SQL 类型转换
是否允许在 ANSI SQL 中转换类型,例如在 postgres 中:
qnty和reserve是字符列。
sql - Sql Server Management Studio - 以编程方式创建基于 DAL 的脚本;为什么在每个表之前使用 SET ANSI_NULLS ON
我正在寻找基于我的 DAL 中的类定义以编程方式生成用于表创建的 SQL 脚本,类似于 SQL Server Management Studio。
因此,当我右键单击 MS SMS 中的一个表,并告诉它脚本表为 > 创建到 > 新查询窗口时,它会生成一些非常易于理解的代码。但是,我不确定它们为什么会生成以下几行:
- 设置 ANSI_NULLS ON
- 设置 QUOTED_IDENTIFIER ON
- 设置 ANSI_PADDING ON
- {表 DEF 在这里}
- 设置 ANSI_PADDING 关闭
我在产品文档中查看了这些语句,并了解它们的用途,但不确定为什么它们是围绕每个表声明生成的。
sql - CONNECT BY 的标准替代方案?
我正在尝试将一些 Oracle SQL 查询转换为(理论上)任何 SQL 数据库。一些查询本质上是分层的,并使用 CONNECT BY 编写。
是否有标准 SQL 替代 Oracle 的 START WITH...CONNECT BY 语法?或者是否有一些我应该遵循的推荐过程来转换分层查询?
sql - ANSI SQL 手册
谁能推荐一本好的 ANSI SQL 参考手册?
当您需要基本或更深入的解释或示例时,我不必指教程,而是要查找的适当参考文档。
目前我正在使用W3Schools SQL 教程和SQL 教程,它们还可以,但我觉得它们不够“深入”。
当然,每个主要的 RDBMS 生产商都会有一些针对他们自己产品的参考手册,但它们往往有偏见,有时会使用专有扩展。
已编辑:问题的目的是关注数据库引擎的共同点,即 SQL 根。但了解这些差异也可能是一件积极的事情——这很有趣。
sql - 两个日期之间的天数 - ANSI SQL
我需要一种方法来确定 SQL 中两个日期之间的天数。
答案必须是 ANSI SQL。
ansi-sql - 为投标编写 SQL 查询
我该如何为此编写查询?我不是用 SQL 编写这么多复杂查询的专家。我忘了在这里提到出价 3、4。
sql-server - 在 Sql Server 和 PostgreSQL 上都以某种方式执行“where booleanvalue=false”?
我正在尝试使应用程序能够在 Sql Server 和 PostgreSQL 上运行。
我似乎找不到一个基本的通用表达方式
在 SQL Server 上我必须这样做(这非常令人困惑,因为位类型的默认值必须是 true 或 false,但您不能将它们分配给 true 或 false 或对其进行测试)
在 PostgreSQL 上我必须做
我们的程序中有相当多的查询可以做到这一点,所以我宁愿只使用一些通用语法而不是做if(dbformat=="postgres")..
类型废话。
另外,我更愿意将列保留为布尔/位类型,而不是将它们更改为整数类型..尽管这是一个选项..