SQL方言参考
Completion requirements
限定标识符(Delimited identifiers)
在SQL中,用于命名数据库对象(如表、列等)的标识符有两种:普通标识符 和 限定标识符。
当你希望使用诸如 FROM
这样的SQL关键字作为标识符,或希望标识符名称中包含特殊字符时,就必须使用限定标识符。
限定标识符的表示方式因SQL方言而异,以下是各种方言中的表示方式及其说明:
方言(Dialect) | 示例(Sample) | 说明(Comment) |
---|---|---|
标准 SQL | "identifier" |
SQL标准将其称为“限定标识符”。标准要求限定标识符区分大小写,但并非所有数据库实现都严格执行这一点。 |
DB2 | "identifier" |
遵循标准,区分大小写,并允许使用特殊字符。 |
Firebird | "identifier" |
遵循标准,区分大小写。 |
Ingres | "identifier" |
创建数据库时可设置是否区分大小写。为符合 ANSI/ISO Entry SQL-92,限定标识符必须区分大小写。 |
Linter | "identifier" |
遵循标准,区分大小写。 |
MonetDB | "identifier" |
遵循标准,区分大小写。 |
MSSQL | [identifier] "identifier" ¹ |
是否区分大小写由数据库设置决定。 |
MySQL | `identifier` "identifier" ² |
使用反引号是MySQL特有的语法。 |
Oracle | "identifier" |
遵循标准,区分大小写。如果不加双引号,则不区分大小写:所有标识符会在执行前被自动转换为大写,例如:CrEAtE table MyTable 实际被处理为 CREATE TABLE MYTABLE ,符合SQL标准。 |
PostgreSQL | "identifier" |
遵循标准,区分大小写。若未加双引号,标识符将自动转换为小写(而标准规定应转换为大写)。 |
SQLite | [identifier] "identifier" 'identifier' identifier |
永不区分大小写,即使使用引号也一样。方括号内的内容总被视为标识符;双引号中的内容若曾作为标识符出现,则被视为标识符,否则为字符串;单引号中内容在允许的上下文中作为字符串,否则也可能被解释为标识符。某些关键字即便未加引号也可直接作为标识符使用。 |
Virtuoso | "identifier" |
标准形式。 |
📌 注释:
-
对于 MSSQL,若设置了
quoted_identifier
选项,"identifier"
才会作为标识符解析;否则,它会被当作单引号字符串解析。 -
对于 MySQL,仅在开启 ANSI 模式时,
"identifier"
才被视为标识符,否则也可能被解释为字符串。
Last modified: Friday, 11 April 2025, 9:57 AM