簡體   English   中英

在 SQL 中創建表,其中表名來自數字

[英]Create Table in SQL where table name is from digits

當我嘗試做下一個

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

我該如何解決?

您不需要用反引號包裝標識符:

CREATE TABLE `20181020`(id INT);

我建議不要這樣做並使用適當的有意義的命名。 使用日期作為表名表明它可能是表-每個日期的反模式。

相關文章: SELECT * FROM sales + @yymm

您也可以對這種類型的表名使用雙引號

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

但這種命名不是標准做法

其他答案涵蓋了解決方案,即使用反引號。

讓我補充一點,使用非標准標識符是一個壞主意。 如果您也開始將列命名為數字,那么誰想弄清楚20181020.120181020之間的差異。 120181020.1 使用前綴有那么難嗎: t_20181020

但你也不想這樣做。 讓我解釋。 據推測,如果您有一張名為20181020表,那么明天您將需要另一張表20181021 這是一個非常糟糕的數據庫設計。

您應該將所有數據放入一個表中,並用date列指定日期。 然后,您可以對一張表運行查詢以查看隨時間的變化——例如。

如果表很大並且您希望能夠分別處理每一天,那么您可以使用表分區來分別存儲每一天的值。 這很方便,因為分區可以獨立於其他分區進行歸檔、恢復和刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM