首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL "to“关键字--特别是POSTGRESQL

SQL "to“关键字--特别是POSTGRESQL
EN

Stack Overflow用户
提问于 2021-02-12 05:29:07
回答 3查看 61关注 0票数 1

"to“关键字在SQL中有什么作用,特别是POSTGRESQL。

我可以验证它是一个关键字。

然而,搜索像" to“这样的简单单词是非常困难的。

它不会出现在这里,例如:https://www.w3schools.com/SQl/sql_ref_keywords.asp

我不知道这是特定于POSTGRESQL还是更通用的...

EN

回答 3

Stack Overflow用户

发布于 2021-02-12 16:02:04

搜索TO的解析器src/backend/parser/gram.y,您将发现:

  • SET name TO 'var_value'

  • INTERVAL HOUR TO MINUTE (数据类型)

  • ALTER TABLE <name> OWNER TO RoleSpec

  • FOR VALUES FROM '(' expr_list ')' TO '(' expr_list ')' (partitioning)

  • COPY ( query ) TO file [WITH] [(options)]

  • ALTER EXTENSION name UPDATE [ TO version ]

  • IMPORT FOREIGN SCHEMA remote_schema [ { LIMIT TO | EXCEPT } ( table_list ) ]

  • CREATE POLICY name ON table [AS { PERMISSIVE | RESTRICTIVE } ] [FOR { SELECT | INSERT | UPDATE | DELETE } ] [TO role, ...] [USING (qual)] [WITH CHECK (with check qual)]

  • ALTER TYPE_P any_name RENAME VALUE_P Sconst TO Sconst

  • REASSIGN OWNED BY role_list TO RoleSpec

  • GRANT privileges ON privilege_target TO grantee_list

  • CREATE opt_or_replace TRANSFORM FOR Typename LANGUAGE name (TO SQL_P WITH FUNCTION function_with_argtypes)

  • ALTER THING name RENAME TO newname

  • CREATE opt_or_replace RULE name AS ON event TO qualified_name where_clause DO opt_instead RuleActionList

  • ROLLBACK opt_transaction TO SAVEPOINT ColId

  • CREATE [DEFAULT] CONVERSION <conversion_name> FOR <encoding_name> TO <encoding_name> FROM <func_name>

  • a_expr SIMILAR TO a_expr
票数 3
EN

Stack Overflow用户

发布于 2021-02-12 05:40:55

关键字不会“做”任何事情,它们只是被保留下来,以便在实现SQL解析器时,您可以假设如何处理查询的某些部分。

从技术上讲,TO的任何实例都被视为令牌,除非另外进行了转义。

它“做”什么完全取决于上下文。在某些情况下,它只是装饰性的,而在另一些情况下,它是语法的必需部分。它只是用来表达一个特定的语句。

为什么?语法就是这样定义的。

请记住,SQL被设计为一种类似英语的查询语言,因此某些语句的语法反映了这一点。INSERT INTO本可以表示为INS,它的操作也是一样的,但这不是设计者希望它看起来的样子。

票数 2
EN

Stack Overflow用户

发布于 2021-02-12 05:42:25

在设置运行时参数和SET时使用TO关键字,例如SET search_path TO my_schema, public;

您可以在https://www.postgresql.org/docs/13/sql-set.html中看到对它的描述

因为它不是“正常”SELECTUPDATECREATE语法的一部分,所以你可以理解为什么它不经常出现。

编辑:正如下面的评论者非常有帮助地指出的那样,它被用于多个地方,包括grantalter语句等。它有时充当等号的角色(例如,设置参数),有时充当标识受影响的人或事物的角色(例如,授权给),有时还表达操作的最终结果(回滚到,更改表到),这取决于特定语句。就像英语中的"to“一样,它根据上下文做了很多事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66163175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档