1

我正在尝试更新数据库表,表的名称格式是employee_yearName_monthName。因为我想将每个月的数据保存在单独的表中。

现在在月初没有那个月的表。所以我应该创建表格。但问题是如何判断表是否存在?

提前致谢。

4

2 回答 2

2

I want to keep each month's data on a separate table

这是非常糟糕的设计!如果您有大量数据(至少在 50-100GB 范围内,大约一亿行),则更喜欢分区(--> Oracle,--> MySQL。如果您没有那么多数据,只需不用担心,将数据存储在一张表中,使用适当的列,并设置适当的索引!

为什么这是一个糟糕的设计?想想这些:

  • 您将如何制定查询,例如针对所有用户的年度报告?
  • 如果用户有 32 个字符的名字怎么办?您的表名将太长,例如 Oracle 无法处理
  • 您如何制定关于一个月中有一半,下一个月有另一周的查询?

编辑作为 OP 披露了更多细节

  • 您可以重构数据库 - 这需要管理决策。您应该评估与维护当前结构与重构数据库相关的成本,并将其呈现给决策者......
  • 在Oracle中,你可以使用USER_TABLES管理表来查询表名:SELECT * FROM USER_TABLES WHERE TABLE_NAME LIKE 'employeeName%例如。
于 2012-11-29T09:02:03.893 回答
2

正如其他人所提到的,这不是一个好的设计。但是,如果你想坚持你的设计,你可以使用

CREATE TABLE IF NOT EXISTS tablename ( ... )
于 2012-11-29T09:04:18.917 回答