MySQL 中的额外列,我可以删除它吗?

extra column in MySQL, can I drop it?

我有一个正在创建的数据库,我与 Mysql 中的另一个 table 建立了一对一的连接,下面是一个屏幕截图。我的问题是我可以删除在建立连接时创建的额外列(程序集factory_id)吗?我只想要单曲 (factory_id),这会破坏我建立的连接吗?我应该放弃 (factory_id) 并保持连接吗? 我是菜鸟,谢谢!

您可以使用 Alter 语句删除多余的列。

ALTER TABLE table_name DROP COLUMN factory_id;

您也可以参考http://docs.oracle.com/cd/E18283_01/server.112/e17118/statements_3001.htm#i2103683 (特别是删除列子句)

编辑: 就连接而言,Alter 语句转储到临时 table,然后在不丢失任何连接的情况下重建。请参阅此 document

中的 存储、性能和并发注意事项 部分

我假设您的评论 "but should i drop the table?" 确实是想说 "but should i drop the column?"。

简短回答:如果安全,您应该删除该列 - 没有理由让它弄乱数据库和未来开发人员的想法。

长答案:如何确定它是否安全:如果 1) factory_id 中的值与程序集 factory_id 中的值始终相同,例如,它们是彼此重复的值, 和 2) 没有其他表或程序代码引用程序集 factory_id,您可以安全地删除程序集 factory_id。

但是,如果它们可能有不同的含义(不仅仅是 20 行左右的示例),您就不能删除它。参见 fiddle:http://sqlfiddle.com/#!9/0bf17/1

如果它们始终相同,但部分数据库或代码引用程序集 factory_id,您可以重构这些数据库或代码部分以引用 factory_id,然后删除程序集factory_id.

做这样的事情时,您应该进行测试以验证更改后的查询和程序的状态是否与更改前的状态相同。