与SQL语法冲突的表或表键名称的最佳实践

与SQL语法冲突的表或表键名称的最佳实践,sql,syntax,Sql,Syntax,如果这是一个愚蠢的问题,或者我的标题有点错误,我很抱歉,但是在为我的作业创建数据库时,我发现他们希望像返回和地址这样的名称分别作为表名和表键名 它没有问题: CREATE TABLE Returns ( .. ) 及 但是我看到我的MS SQL Server 2008 sp1语法编辑器使单词返回和地址与创建表语句(蓝色)的颜色相同,因此我猜这些是SQL语言的关键字 那么,这是一个好的命名约定,还是我应该切换到类似于: CustomerAddress和ProductReturns?阅读MSDN

如果这是一个愚蠢的问题,或者我的标题有点错误,我很抱歉,但是在为我的作业创建数据库时,我发现他们希望像
返回
地址
这样的名称分别作为表名和表键名

它没有问题:

CREATE TABLE Returns 
(
..
)

但是我看到我的MS SQL Server 2008 sp1语法编辑器使单词
返回
地址
创建表
语句(蓝色)的颜色相同,因此我猜这些是SQL语言的关键字

那么,这是一个好的命名约定,还是我应该切换到类似于:
CustomerAddress
ProductReturns

阅读MSDN上的for SQL Server页面

返回
在将来的关键字列表中,其中:

随着新功能的实现,SQL Server的未来版本中可能会保留以下关键字。考虑避免使用这些词作为标识符。


选择真的那么重要吗?在Python中,人们将变量命名为
class
klass
cls
,而不是
class
,后者是一个关键字。我唯一的建议是保持表名为单数,而不是复数。@DavidKroukamp,是的,你可以。有些你不可能很容易地完成,
日期
浮现在脑海中,但总有其他选择。简单的建议:避免它们,尽快重命名它们。它们在未来可能会造成比现在更名更大的痛苦。我倾向于用z作为可疑名称的前缀(AFAIK,没有以“z”开头的关键字),以德语口音发音:
createtableztable(zdatenotnull,…)这是我个人的偏好。当您读取行的值时,它们指的是其中一个对象,而不是所有对象,因此您想说Customer.name而不是Customers.name+1谢谢具体证据是我所需要的,因此我想最好避免(在我可以接受时)
CREATE TABLE Customers 
(
..
Address varchar(30) NOT NULL,
..
)