【问题标题】:Batch Set all MySQL columns to all NULL批量将所有 MySQL 列设置为全部 NULL
【发布时间】:2013-03-18 13:42:35
【问题描述】:

我有一个大型数据库,其中包含一堆表和列,其中一些允许 NULL,而另一些则不允许 NULL..

我最近刚刚决定标准化我的方法并对所有空字段等使用 NULL。因此我需要在我的所有表中设置 ALL COLUMNS 以允许 NULL(当然,除了初选)

我可以编写一个 php 代码来循环它,但我想知道是否有一种通过 SQL 快速完成的方法?

问候

【问题讨论】:

  • 那么,您要的是ALTERUPDATE
  • batch ALTER .. 需要将所有现有列设置为允许 NULL ..

标签: mysql null


【解决方案1】:

您可以使用系统表中的元数据来确定您的表、列、类型等。然后使用它,动态构建一个包含您的 UPDATE SQL 的字符串,并在其中连接表名和列名。然后执行。

我最近发布了一个解决方案,允许 OP 搜索包含特定值的列。代替任何人提供更完整的答案,这应该会给你一些关于如何解决这个问题的线索(或者至少,研究什么)。您需要提供表名,或者加入它们,然后执行与此类似的操作,除了检查类型而不是值(并且您构建的动态 SQL 将构建更新,而不是选择)。

我将在几个小时后进一步帮助您解决特定情况...如果到那时您对此(或其他答案)没有运气,那么我将提供更完整的内容。

编辑:刚刚意识到您已将其标记为 mySql...我的解决方案是针对 MS SQL Server。假设 MySql 允许您查询其元数据并执行动态生成的 SQL 命令,原则应该是相同的(因此我将保留这个答案,因为我认为您会发现它很有用)。

SQL Server - Select columns that meet certain conditions?

【讨论】:

  • 谢谢.. 虽然这似乎比在所有表/列上编写 php 爬取/循环更复杂..
  • @brownChiLD,公平的选择,我不反对。但是你会接受只是“不”吗?作为对您的问题“我想知道是否有一种快速的方法可以通过 SQL 来做到这一点?”的回答:-)。但说真的,请记住这个问题将来可能会被其他人看到,他们可能会通过例如谷歌到达这里,想知道如何在 SQL 中做到这一点或类似的事情,例如因为他们有一些约束意味着它必须在 SQL 中完成,所以这个答案在这方面是有价值的。在 mySql 中使用这种方法可能比我的 MSSQL 示例更直接。请在完成后将您的 PHP 解决方案发回?
  • 哈哈..好点。任何人我都会为此使用 PHP,但我意识到在所有表上使用 NULL 并不是一个好主意……所以我放弃了过渡哈哈。但这是一件“很高兴知道”的事情.. 所以还是谢谢你!
猜你喜欢
  • 2020-01-15
  • 2016-12-28
  • 2016-01-13
  • 2016-02-17
  • 2020-01-27
  • 2014-11-21
  • 2014-08-09
  • 1970-01-01
  • 2018-09-07
相关资源
最近更新 更多