怎样用SQL脚本为指定的一批表增加字段?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用SQL脚本为指定的一批表增加字段?相关的知识,希望对你有一定的参考价值。

选择一批表名中含有'list'的表,判断有没有'contact'字段,如果没有则添加,有则略过。请问SQL脚本怎么写?SQL Server

declare @TableName varchar(255) --要增加字段的表名
declare @id int --要增加的表ID
declare @sql nvarchar(max) --增加时动态SQL
DECLARE IncludeListTable CURSOR FOR --取出所有表名包括list的表名和表ID
SELECT name ,id
FROM sysobjects where name like '%list%' and xtype='U'
OPEN IncludeListTable
FETCH NEXT FROM IncludeListTable INTO @TableName,@id

IF @@FETCH_STATUS <> 0
PRINT '没有表'

WHILE @@FETCH_STATUS = 0
BEGIN

if (select COUNT(*) from syscolumns where id=@id and name='contact') =0 --从字段表中取出本表中contact字段,如果个数是0,表示没有
begin
print '为' + @TableName + '表添加字段contact'
set @sql = 'ALTER TABLE ' + @TableName + ' ADD contact varchar(200) NULL' ;
exec sp_executesql @sql --添加这个字段
end

FETCH NEXT FROM IncludeListTable INTO @TableName,@id

END

CLOSE IncludeListTable
DEALLOCATE IncludeListTable

写了一大堆,你看看,对不,看明白再用,头两表的判断我写的并不是太全,你自己再研究下吧
参考技术A 以下SQL 代码, 在 SQL Server 2008 下测试通过

1> CREATE TABLE Alist (
2> id int,
3> contact int
4> )
5>
6> CREATE TABLE Blist (
7> id int
8> )
9> GO

1> SELECT
2> 'ALTER TABLE ' + name + ' ADD contact int;' AS sql
3> FROM
4> sys.tables tab
5> WHERE
6> name LIKE '%list%'
7> AND NOT EXISTS (
8> SELECT 1
9> FROM sys.columns col
10> WHERE tab.object_id = col.object_id
11> AND col.name = 'contact'
12> )
13> go
sql
---------------------------------------------------------
ALTER TABLE Blist ADD contact int;

(1 行受影响)

然后自己复制粘贴 那个查询结果, 去执行去。
请自己根据需要, 修改那个 contact 字段的数据类型。

以上是关于怎样用SQL脚本为指定的一批表增加字段?的主要内容,如果未能解决你的问题,请参考以下文章

sql server中如何写脚本为数据表增加一个字段

文件入库ORACLE自动化脚本

sql语句,怎样判断一个字段中是不是存在某一个值

LINUX删除指定字段不匹配的行脚本怎么写

给某个表增加字段的sql脚本模板

数据库升级,给某张表增加字段,防止重复升级时sql脚本报错