我应该避免使用SQL表名和列名中的“éáç”等特殊字符吗?
使用特殊字符的优缺点是什么?
答案 0 :(得分:1)
你可以猜到,有利有弊。这或多或少是一个主观问题。
SQL(与大多数编程语言不同)允许在表或列标识符中使用特殊字符,空格,标点符号或保留字。
人们可以选择使用适合自己母语的字符,这很不错。
特别是在使用最接近的ASCII字符拼写时,单词会明显改变其含义的情况:例如año
与ano
。
但缺点是,如果你这样做,你必须使用"分隔标识符"每次使用特殊字符引用表时。在标准SQL中,分隔标识符使用双引号。
SELECT * FROM "SELECT"
这实际上没问题!如果要将SQL保留字用作表名,则可以执行此操作。但它可能会导致代码的一些读者感到困惑。
同样,如果使用特殊的非ASCII字符,可能会使说英语的程序员难以维护代码,因为他们不熟悉键入这些特殊字符的键序列。或者他们可能会忘记他们必须划分表名。
SELECT * FROM "año"
然后是非标准的分隔标识符。 Microsoft默认使用方括号:
SELECT * FROM [año]
MySQL默认使用反向标记:
SELECT * FROM `año`
虽然如果您启用某些选项,两者都可以使用标准双引号作为标识符分隔符,但您无法始终依赖它,如果该选项被禁用,您的代码将停止工作。因此,不幸的是,微软和MySQL的用户仍然使用非标准分隔符。
如果您坚持使用ASCII字符,那么在某些方面维护代码会更简单。但是也有合理的理由想要使用特殊字符。