【问题标题】:Should I avoid special characters for table names in SQL Server?我应该避免 SQL Server 中表名的特殊字符吗?
【发布时间】:2023-03-09 13:22:02
【问题描述】:

我想创建一个 SQL Server 数据库,该数据库将包含数千个表,这些表的名称将反映股票代码名称。例如,“0099-OL.HK”是公司的股票代码。我正在为其创建表格的许多股票中都有这样的特殊字符。

我读过应该避免表名中的特殊字符,但我仍然不知道为什么。如果您用方括号将名称括起来,SQL Server 允许您在表名中使用特殊字符,例如,'CREATE TABLE [0099-OL.HK] ...'。

我应该使用代码名称作为它们的表名,还是应该避免使用它们的特殊字符?

【问题讨论】:

  • 您的数据模型在第一句话中听起来很糟糕。不是数千张桌子。数百万行。这就是数据库的设计方式。不是每个股票代码一张表,所有股票代码一张表。
  • 当您将信息放在表名中时,这绝对是一个巨大的危险信号。
  • 请不要。未来的亚历克斯会感谢你。
  • @Gordon Linoff 好吧,每只股票每分钟都在更新,所以每条记录都是一分钟。你还是建议把每只股票放在一张桌子上,还是应该把每只股票放在同一张桌子上?
  • @AlexMancheno 。 . .我认为手表可以每分钟进行一次更新而不会出现问题。将成百上千的更新每秒视为数据库通常可以处理的负载。

标签: sql sql-server database


【解决方案1】:

这将导致无穷无尽的问题。 SQL Server 允许名称中包含空格和特殊字符的原因是人们从允许名称中包含这些字符的数据库迁移而来。如果您必须这样做,请将所有特殊字符替换为 _,如下所示:TN0099_OL_HK(TN 代表股票名称),这样用户就可以在不使用方括号的情况下键入 sql。

【讨论】:

    【解决方案2】:

    这样做是不好的做法,因为并非每个库都能够正确处理表名。

    【讨论】:

      【解决方案3】:

      避免在数据库名、表名和列名中使用特殊字符、空格和前导数字。

      对于常规标识符的完整规则:Database Identifiers - docs

      【讨论】:

        猜你喜欢
        • 2016-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-15
        • 1970-01-01
        • 1970-01-01
        • 2012-10-14
        • 1970-01-01
        相关资源
        最近更新 更多