在MySQL数据库中命名表的约定

时间:2012-02-26 14:41:28

标签: php mysql sql database-design

我可以在数据库中为表名使用符号吗?例如,

$tablename
%tablename

我使用选择查询进行了测试,他们似乎没问题,但我之前没有看到任何人这样做,所以只是想知道它是否安全。

SELECT * FROM $tablename // returns result.
SELECT * FROM %tablename // returns result.

3 个答案:

答案 0 :(得分:4)

快速回答:是的!

您可以使用数据库支持的任何符号,但这并不意味着这样做!

为了便于阅读和使用,我建议遵循标准命名约定。在线列出了许多标准命名约定,并被广泛接受和使用。请记住,您的数据库不能单独工作,它与您可能希望稍后添加的可能不支持特殊字符的应用程序和插件接口。

答案 1 :(得分:3)

documentation on valid identifiers.。您可以使用这些,但是您需要引用包含%的任何表或列名称(至少根据文档)。 $在不带引号的标识符中有效,但%不是。

  

不带引号的标识符中允许的字符:

     
      
  • ASCII:[0-9,a-z,A-Z $ _](基本拉丁字母,数字0-9,美元,下划线)
  •   
  • 扩展:U + 0080 .. U + FFFF
  •   
     

带引号的标识符中的允许字符包括完整的Unicode基本多语言平面(BMP),但U + 0000除外:

     
      
  • ASCII:U + 0001 .. U + 007F
  •   
  • 扩展:U + 0080 .. U + FFFF
  •   

因此,这样做通常是安全的,但您需要与引用标识符一致,例如

SELECT * FROM `%tablename`

答案 2 :(得分:1)

根据MySQL 5.0 Reference Manual

  
      
  • 不带引号的标识符中允许的字符:

         

    ASCII: [0-9,a-z,A-Z $ _] (基本拉丁字母,数字0-9,美元,下划线)

         

    扩展:U + 0080 .. U + FFFF

  •   
  • 带引号的标识符中允许的字符包括完整的Unicode基本多语言平面(BMP),但U + 0000除外:

         

    ASCII:U + 0001 .. U + 007F

         

    扩展:U + 0080 .. U + FFFF

  •   
  • 标识符可以以数字开头,但除非引用可能不仅仅包含数字。

  •   
  • 数据库,表格和列名称不能以空格字符结尾。

  •   
  • 数据库和表名称不能包含“/”,“\”,“。”或文件名中不允许的字符。

  •   

$是ASCII,因此可以不加引号,%在引用时应引用反引号。