标签: sql-standard

MySQL 是否通过允许选择不属于 group by 子句的列来打破标准?

我习惯了包括 SQL Server 在内的 Microsoft 技术。今天我遇到了一个问答,其中引用了 MySQL 文档中的以下段落:

标准 SQL会拒绝您的查询,因为您不能在聚合查询中选择不属于 GROUP BY 子句的非聚合字段。MySQL 扩展了 GROUP BY 的使用,以便选择列表可以引用未在 GROUP BY 子句中命名的非聚合列。这意味着前面的查询在 MySQL 中是合法的。您可以使用此功能通过避免不必要的列排序和分组来获得更好的性能。但是,这主要在未在 GROUP BY 中命名的每个非聚合列中的所有值对于每个组都相同时很有用。服务器可以自由地从每个组中选择任何值,因此除非它们相同,否则选择的值是 不确定的

MySQL允许这样做是否违反了标准?如何?允许这样做的结果是什么?

在此处输入图片说明

mysql group-by sql-standard

11
推荐指数
1
解决办法
1745
查看次数

使用 CREATE TABLE AS SELECT 如何指定 WITH 条件 (CTE)?

PostgreSQL 中有一个旧的和不推荐使用的命令,它早于CREATE TABLE AS SELECT(CTAS)称为SELECT ... INTO .... FROM,它支持WITH子句/公共表表达式(CTE)。所以,例如,我可以做到这一点..

WITH w AS (
  SELECT *
  FROM ( VALUES (1) ) AS t(x)
)
SELECT *
INTO foo
FROM w;
Run Code Online (Sandbox Code Playgroud)

但是,我不能这样做..

WITH w AS (
  SELECT *
  FROM ( VALUES (1) ) AS t(x)
)
CREATE TABLE foo AS
SELECT * FROM w;
Run Code Online (Sandbox Code Playgroud)

或者,我得到

ERROR:  syntax error at or near "CREATE"
LINE 5: CREATE TABLE foo AS
Run Code Online (Sandbox Code Playgroud)

我将如何使用标准化的 CTAS 语法来做到这一点。

postgresql syntax cte sql-standard ctas

10
推荐指数
1
解决办法
1万
查看次数

什么是 SQL 子句?

这听起来像是一个过于简单的问题,但我发现找到正确的答案并不容易。

关于“什么是 sql 子句?”的问题 互联网上的大多数资源只是提供了一个条款列表并解释了它们的作用。

但我试图抽象地理解它是如何定义的。就像一个通用符号,它捕获了可以编写的所有类型的查询以及子句在其中的适应方式。

是否存在所有子句共有的属性?为什么 UNION 被称为运算符而 HAVING 是一个子句?

sql-standard

9
推荐指数
1
解决办法
5278
查看次数

在 PostgreSQL 中,“存储过程”和其他类型的函数有什么区别?

我理解以下之间的区别:

  • 标量函数
  • 集合返回函数 (SRF)
  • 内部功能
  • 窗口函数
  • 各种聚合函数
  • 用户实现的函数(在 PostgreSQL 中可以用任何语言实现)
  • 等等。

在 SQL Server 中,“存储过程”允许通过EXEC. 与使用SELECT该返回执行的任何其他函数相比,它提供了什么NULL

当 PostgreSQL 获得存储过程时,它们会给我带来什么,规范中函数和存储过程之间的正式区别是什么?

我读过这个问题,但它似乎早于宣布实施

postgresql stored-procedures terminology functions sql-standard

9
推荐指数
2
解决办法
8324
查看次数

在哪里可以找到 SQL-89 标准?

这个问题是不同的,但类似于这个寻找 SQL-86 的请求

SQL 1989 已经快 30 岁了。这个规范在任何地方都可以免费使用。该标准没有维基页面之类的?

规范过去了

  • ANSI X3.135-1989 数据库语言 - 具有完整性增强功能的 SQL
  • ISO 9075-1989
  • SQL-1989

在研究问题时出现了对它的需求,SQL-1992 标准是否将命名标识符限制为 18 个字符?

sql-standard

9
推荐指数
1
解决办法
1043
查看次数

关键字“ALIAS”是否实际使用?

根据 PostgreSQL 7.1 到 9.1(现在不支持),它ALIAS被列为保留字,至少对于 SQL-99。后来的版本不显示它 - 表明它已作为保留字删除。旧的 PostgreSQL 文档确实说“关键字的存在并不表示功能的存在”。当我见过的表或列使用别名时AS,但从未见过ALIAS

SQL 关键字在哪里(或曾经)ALIAS使用过?它曾经在使用中还是只为将来使用而保留?

postgresql reserved-word postgresql-9.1 sql-standard

9
推荐指数
2
解决办法
1737
查看次数

哪种 SQL 标准得到最广泛和完全的支持?

我想专注于 SQL 语言规范之一,以供学习和参考。哪个版本的 SQL 标准在 DBMS 中得到最广泛的支持,以便我可以将时间和精力集中在它上面?

sql-standard

8
推荐指数
3
解决办法
487
查看次数

ISO 8601 允许的不精确日期值的单一数据类型

如何在 PostgreSQL 类型中以降低的精度存储日期和时间值,并使它们表现为日期和/或时间值

ISO 8601 允许精度降低的日期值。'1964', '1964-05', '1964-05-02' 都是值的有效表示,精度越来越高。Python 'datetime' 类型也允许以这种方式降低精度的值。

PostgreSQL 本机时间类型不允许降低精度

在原生日期类型中,日期的每个元素都必须存在,否则该值将被拒绝。将低于所需精度级别的元素设置为“00”也会失败。

=> SELECT CAST('1964-05-02' AS DATE);
    date    
------------
 1964-05-02
(1 row)

=> SELECT CAST('1964-05' AS DATE);
ERROR:  invalid input syntax for type date: "1964-05"
LINE 1: SELECT CAST('1964-05' AS DATE);
                    ^
=> SELECT CAST('1964' AS DATE);
ERROR:  invalid input syntax for type date: "1964"
LINE 1: SELECT CAST('1964' AS DATE);
                    ^
=> SELECT CAST('1964-00-00' AS DATE);
ERROR:  date/time field value out of range: …
Run Code Online (Sandbox Code Playgroud)

postgresql datatypes timestamp sql-standard

8
推荐指数
2
解决办法
2388
查看次数

SQL Server 是否支持自定义域?

PostgreSQL 支持DOMAIN规范,来自 SQL 2011 工作草案规范,

域是命名的用户定义对象,可以在某些可以指定数据类型的地方将其指定为数据类型的替代。域由数据类型、可能是默认选项和零个或多个(域)约束组成。

这使我们能够做一些非常酷的事情,例如通过不区分大小写的文本类型为电子邮件实现HTML5 规范的它确保所有访问数据库的客户端都对插入的数据进行完整性检查。

CREATE DOMAIN email AS citext
  CHECK ( value ~ '^[a-zA-Z0-9.!#$%&''*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$' );
Run Code Online (Sandbox Code Playgroud)

SQL Server 是否支持触发器系统之外的任何此类功能?

sql-server datatypes sql-clr sql-standard domain

8
推荐指数
1
解决办法
1199
查看次数

在 SQL Server 2016 中最大化可移植性的最佳实践

在开发解决方案的原型时,通常还没有确定技术,并且可能与最终产品中使用的技术不同。

在这种情况下,我倾向于使用 Microsoft SQL Server 编写尽可能标准的查询,以简化最终迁移到另一台服务器的过程。

是否有一种方法或一些已知的做法可以直接在 SQL Server 中或通过SQL Server Management Studio (SSMS)强制使用标准 SQL over T-SQL 方言?

sql-server migration sql-standard sql-server-2016

8
推荐指数
3
解决办法
1161
查看次数