更改数据库中的所有表

Bra*_*ter 9 mysql sql

我想在我的SQL数据库中的所有表上运行"Alter Table" :

ALTER TABLE test ADD  CONSTRAINT [COLLUM_NAME]  DEFAULT ((0)) FOR [COLLUM_NAME]
Run Code Online (Sandbox Code Playgroud)

我知道如何从数据库中获取所有现有表:

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
Run Code Online (Sandbox Code Playgroud)

要么

USE DATABASE_NAME
GO 
SELECT name
FROM sys.Tables
GO
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将这两者结合起来.

在我的数据库(50多个表)中,所有表共有1行.我想为所有这些行设置一个默认值.

bAN*_*bAN 7

您可以尝试生成命令并在之后执行它.你可以这样做:

SELECT CONCAT("Alter Table `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` this is my default value change on the column") as MySQLCMD 
FROM TABLES 
Run Code Online (Sandbox Code Playgroud)

并执行检索.


pau*_*aul 1

如果这是一个不需要自动化的一次性过程,那么您可能会比运行类似以下内容并仅复制/粘贴输出更糟糕:

select 'alter table ' + t.name + ' add constraint ' + c.name + ' default ((0)) for ' + c.name
from    sysobjects t join syscolumns c on c.id = t.id
where   t.xtype = 'U'
Run Code Online (Sandbox Code Playgroud)