当我尝试下一步
mysql> CREATE TABLE '20181020';
sql返回错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''20181020'' at line 1
我该怎么解决?
wixjitnu1#
其他答案涵盖了解决方案,即使用反勾号。让我补充一下,使用非标准标识符是个坏主意。如果你也开始把列命名为数字,谁想找出它们之间的区别呢 20181020.1 , 20181020 . 1 ,和 20181020.1 . 使用前缀有那么难吗: t_20181020 ?但你也不想这么做。让我解释一下。大概,如果你有一张table叫 20181020 ,那么明天你需要另一张table 20181021 . 这是一个非常糟糕的数据库设计。您应该将所有数据放在一个表中,并使用 date 指定日期的列。然后,您可以在一个表上运行查询,以查看随时间的变化,例如。如果表很大,并且您希望能够分别处理每一天,那么可以使用表分区来分别存储每一天的值。这很方便,因为分区可以独立于其他分区进行归档、还原和删除。
20181020.1
20181020
1
t_20181020
20181021
date
nbewdwxp2#
您不需要用反记号 Package 标识符:
CREATE TABLE `20181020`(id INT);
我建议不要这样做,并使用适当的有意义的命名。使用date作为表名表明它可以是table per date反模式。相关文章:select*from sales+@yymm
dtcbnfnu3#
您还可以对这种类型的表名使用双引号
CREATE TABLE "20181020" (id INT); insert into "20181020" values(1)
但这种命名方式并不是标准的做法
3条答案
按热度按时间wixjitnu1#
其他答案涵盖了解决方案,即使用反勾号。
让我补充一下,使用非标准标识符是个坏主意。如果你也开始把列命名为数字,谁想找出它们之间的区别呢
20181020.1
,20181020
.1
,和20181020.1
. 使用前缀有那么难吗:t_20181020
?但你也不想这么做。让我解释一下。大概,如果你有一张table叫
20181020
,那么明天你需要另一张table20181021
. 这是一个非常糟糕的数据库设计。您应该将所有数据放在一个表中,并使用
date
指定日期的列。然后,您可以在一个表上运行查询,以查看随时间的变化,例如。如果表很大,并且您希望能够分别处理每一天,那么可以使用表分区来分别存储每一天的值。这很方便,因为分区可以独立于其他分区进行归档、还原和删除。
nbewdwxp2#
您不需要用反记号 Package 标识符:
我建议不要这样做,并使用适当的有意义的命名。使用date作为表名表明它可以是table per date反模式。
相关文章:select*from sales+@yymm
dtcbnfnu3#
您还可以对这种类型的表名使用双引号
但这种命名方式并不是标准的做法