【问题标题】:Is CARD a keyword in SQL? or: List of all SQL keywordsCARD 是 SQL 中的关键字吗?或:所有 SQL 关键字的列表
【发布时间】:2019-02-01 21:24:01
【问题描述】:

我正在向我的数据库中添加一个表 - CREATE TABLE dbo.Card - SSMS 正在突出显示单词 Card。我正在互联网上搜索,试图找出该词对 SQL 的含义以及它是否是关键字。我在 Microsoft 的 SQL Reserved Words 列表中没有看到它。

除了突出显示困扰我之外,我关心的主要原因是我想避免使用任何保留字或关键字作为架构/表/列/等...名称。当我绝对必须 - 现有数据库 - 我喜欢使用方括号使事情变得明确。

Card 是 SQL 中的保留字或关键字,还是出于任何其他原因不安全用作标识符?

如果可以安全使用,谁能解释为什么 SSMS 会突出显示它?

如果用作表名不是 100% 安全,我很可能会选择其他名称。

Windows 8.1
SSMS v17.7
Red Gate - Up to date, including SQL Prompt 9.4.9
SQL Server 2017 (14.0)
Database Compatibility Level 2017 (140)

更新

看起来主要的共识是:

  1. 它不是保留或关键字
  2. SSMS 突出显示它是因为原因...它可能在某处被 MS SQL Server 或 SSMS 使用

此时我非常好奇,但至少我知道没有必要担心。谢谢大家的回答。

【问题讨论】:

  • 感谢@AaronDietz 的链接。非常相似的问题,虽然我想知道为什么特别突出这个词。我能做出的最好猜测是与基数有关,但我真的不知道
  • 我发现 this question on dba.StackExchange 可以回答这个问题,但我找不到任何上下文,其中“卡片”适合该案例。
  • 好吧,作为参考,start_date 突出显示为蓝色,因为它用于创建证书命令。您可能必须深入研究 SQL Server 中的每个命令才能找到确切的原因。
  • 只是一个疯狂的猜测。但我在List of future Keywords 上注意到CARDINALITY 在那里。也许 SSMS 已经为此突出显示了缩写 CARD,以防万一?

标签: sql sql-server tsql sql-server-2017


【解决方案1】:

不,card 在 Microsoft SQLServer 或 SQL ANSI 标准中不是一个颠倒的词。

【讨论】:

  • 感谢您的快速回复。我更新了我的问题,以便更清楚地说明我还想知道为什么 SSMS 会突出显示它。
【解决方案2】:

Card绝对不是SQL Server中的保留关键字

您可以查看保留字的完整列表Reserved Keywords (Transact-SQL)

SSMS 突出显示它是因为原因......它可能在某处被 MS SQL Server 或 SSMS

它们是由 Microsoft 主观选择并放入查询编辑器语法着色文件中的列表中的各种关键字。

我建议在指定表名和列名时使用分隔标识符[] 或“)总是好的。

例如,你正在使用的脚本应该写成

CREATE TABLE [dbo].[Card](<Columns>)

【讨论】:

  • 感谢您的回答。正如我在问题中提到的,我已经检查了 Microsoft 的保留关键字列表,并且我通常使用方括号来表示保留字。在这一点上,我真的只是想知道为什么微软选择突出显示这个词。
  • @Hill,正如我在答案中提到的,SSMS 对不一定是保留关键字的关键字使用颜色语法突出显示,例如 start_date。有为IDE配置的字。
猜你喜欢
  • 1970-01-01
  • 2013-02-02
  • 2012-02-04
  • 2016-11-15
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
相关资源
最近更新 更多