在sql中创建表,其中表名来自数字

6kkfgxo0  于 2021-06-19  发布在  Mysql
关注(0)|答案(3)|浏览(379)

当我尝试下一步

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

我该怎么解决?

wixjitnu

wixjitnu1#

其他答案涵盖了解决方案,即使用反勾号。
让我补充一下,使用非标准标识符是个坏主意。如果你也开始把列命名为数字,谁想找出它们之间的区别呢 20181020.1 , 20181020 . 1 ,和 20181020.1 . 使用前缀有那么难吗: t_20181020 ?
但你也不想这么做。让我解释一下。大概,如果你有一张table叫 20181020 ,那么明天你需要另一张table 20181021 . 这是一个非常糟糕的数据库设计。
您应该将所有数据放在一个表中,并使用 date 指定日期的列。然后,您可以在一个表上运行查询,以查看随时间的变化,例如。
如果表很大,并且您希望能够分别处理每一天,那么可以使用表分区来分别存储每一天的值。这很方便,因为分区可以独立于其他分区进行归档、还原和删除。

nbewdwxp

nbewdwxp2#

您不需要用反记号 Package 标识符:

CREATE TABLE `20181020`(id INT);

我建议不要这样做,并使用适当的有意义的命名。使用date作为表名表明它可以是table per date反模式。
相关文章:select*from sales+@yymm

dtcbnfnu

dtcbnfnu3#

您还可以对这种类型的表名使用双引号

CREATE TABLE "20181020" (id INT);
insert into "20181020" values(1)

但这种命名方式并不是标准的做法

相关问题