Questions tagged «sql-standard»

对于有关SQL标准本身(也称为ANSI或ISO SQL标准)的问题,包括编写符合该标准的查询。此标记不得用于有关SQL Server Standard Edition的问题。

11
SQL:SELECT除某些列外的所有列
SELECT除了特定列之外,是否有办法访问表中的所有列?从表中选择所有非blob或nongeometry列将非常方便。 就像是: SELECT * -the_geom FROM segments; 我曾经听说该功能被故意排除在SQL标准之外,因为更改向表中添加列将更改查询结果。这是真的?该论点有效吗? 有没有解决方法,尤其是在PostgreSQL中?

3
为什么ANSI SQL将SUM(无行)定义为NULL?
的ANSI SQL标准定义(第6.5章,集功能规范),用于空的结果集的集合函数以下行为: COUNT(...) = 0 AVG(...) = NULL MIN(...) = NULL MAX(...) = NULL SUM(...) = NULL 由于未定义空集的平均值,最小值和最大值,因此对AVG,MIN和MAX返回NULL十分合理。 但是,最后一个让我感到困扰:从数学上来说,空集的SUM是定义明确的:0。使用0 (加法的中性元素)作为基本情况可以使所有内容保持一致: SUM({}) = 0 = 0 SUM({5}) = 5 = 0 + 5 SUM({5, 3}) = 8 = 0 + 5 + 3 SUM({5, NULL}) = NULL = 0 + 5 …

2
创建索引与更改表添加索引-MySQLism还是SQL Standard?
刚遇到一个奇怪的问题,根据我创建索引的方式,需要一个索引名称。 http://dev.mysql.com/doc/refman/5.5/zh-CN/create-index.html http://dev.mysql.com/doc/refman/5.5/en/alter-table.html CREATE INDEX `random_name` ON `my_table` (`my_column`); # Requires an index name ALTER TABLE `my_table` ADD INDEX (`my_column`); # Does not require an index name 在我看来,CREATE INDEX调用不应使索引名称成为必需。我想知道这是MySQLism还是SQL标准?

1
是否在SQL:2008标准中指定了CTE(WITH查询)的优化隔离行为?如果是这样,在哪里?
我看到对WITH查询(公用表表达式或CTE)的频繁引用充当了优化隔离,不允许服务器将过滤器下推到CTE查询中,将常用表达式从CTE中拉出,等等。成为SQL标准要求的行为。 CTE 绝对是PostgreSQL中的优化栅栏……但这是标准要求的,还是实际上只是实现细节? 例如,这些邮件列表张贴声明或表明它是标准的: http://www.digipedia.pl/usenet/thread/11566/101385/ 在评论中提到它之后,我被问到了它的指定位置-在查看了SQL:2008的唯一草稿后,我获得了访问它的机会,但运气并不好。 我尚未深入研究该标准,因此希望有人提出以下建议:标准实际上需要PostgreSQL中CTE的优化范围吗?如果是这样,它在哪里指定?还是Pg邮件列表上的语句有误? 另请参阅待办事项列表上的线程CTE优化围栏?。

2
在哪里可以找到SQL的第一个标准化SQL-86?
这个问题是不同的,但与寻找SQL-89的请求类似。 SQL的第一稿标记为SQL-86。对此有许多参考。可以下载吗?维基百科甚至没有页面。由于历史原因,我对此感兴趣。 好像也叫 ANSI X3.135-1986 CAN / CSA Z243.47-88 ISO 9075:1987 SQL / 1 NBS FIPS 127 ANSI技术委员会X3H2在此期间的文档中引用了该规范。 我知道有webstore.ansi.org,但是找不到该X3.135-1986文档。但是,我可以X3.168-1989在X3.135-1992 Searching for 下找到可用的规格both X3.168,并且X3.135不允许我购买1986年的规格。



1
用于LIMIT标准化的ANSI / ISO计划?
当前是否有计划标准化一种限制查询返回的结果数量的最佳方法? 上的堆栈溢出问题是否有MYSQL LIMIT关键字的ANSI SQL替代方法?列出了使用不同语言处理此行为的各种方法: DB2 -- select * from table fetch first 10 rows only Informix -- select first 10 * from table Microsoft SQL Server and Access -- select top 10 * from table MySQL and PostgreSQL -- select * from table limit 10 Oracle -- select * from …

1
SQL规范是否要求EXISTS()中的GROUP BY
Microsoft当前允许使用此语法。 SELECT * FROM ( VALUES (1) ) AS g(x) WHERE EXISTS ( SELECT * FROM ( VALUES (1),(1) ) AS t(x) WHERE g.x = t.x HAVING count(*) > 1 ); 请注意,GROUP BY该EXISTS子句中没有有效的ANSI SQL。还是仅公开实现细节。 作为参考,PostgreSQL不允许使用相同的语法。 错误:“ tx”列必须出现在GROUP BY子句中或在聚合函数中使用 但是允许使用此语法。 SELECT * FROM ( VALUES (1) ) AS g(x) WHERE EXISTS …

2
有副作用的标准SQL函数吗?
SQL标准是否定义了具有副作用的函数? 例如,当您执行以下操作时,它们是否具有用于写入文件 *或更新表中某些列中的值的功能? SELECT myfunction(params...); 我有时见过这些,但是我很好奇SQL标准是否也这样做。 *这不是专门针对PostgreSQL的问题。我仅使用在PostgreSQL中看到的副作用示例。

3
是否实际使用了关键字“ ALIAS”?
根据PostgreSQL 7.1到9.1(目前不支持),ALIAS至少在SQL-99中被列为保留字。更高版本未显示它-表示已将其作为保留字删除。旧的PostgreSQL文档确实说过“关键字的存在并不表示功能的存在。” 给表或列加别名时我见过AS,但从没见过ALIAS。 SQL关键字在哪里(或曾经在哪里)ALIAS?它是曾经使用过还是仅保留供将来使用?

4
在SQL Server 2016中最大化可移植性的最佳实践
在开发解决方案原型时,通常尚未决定技术,并且可能与最终产品中使用的技术不同。 在这种情况下,我倾向于使用Microsoft SQL Server以尽可能标准的方式编写查询,以简化最终迁移到另一台服务器的过程。 有没有一种方法或某种已知的实践可以直接在SQL Server中或通过SQL Server Management Studio(SSMS)通过T-SQL方言强制使用标准SQL ?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.