`

sql server 2005中 一个关系表中存储所有关系表及字段类型,自动创建所有表

阅读更多
--创建包含所有要建立表及字段的表 myT
use Northwind
go
if object_id('myT'is not null
drop table myT
go
create table myT(
TN VARCHAR(
20),
TC VARCHAR(
10),
CT VARCHAR(
20),
DEF INT
)
INSERT INTO myT values(
'abc','c1','int',1
)
INSERT INTO myT values(
'abc','c2','varchar(200)',0
)
INSERT INTO myT values(
'def','c3','xml',1
)
INSERT INTO myT values(
'def','c4','varchar(100)',0
)
go
--select * from myT
--创建所有表
declare @total 
int
declare @count 
int
declare @sql varchar(
1000)
declare @name varchar(
200)
set @count=0
set @sql=''
select @total
=count(distinct tn) from myT--计算表的个数
while @count<@total -- 循环遍历所有的表名
begin
    with tmp1 
as(select distinct tn from myT),
         tmp2 
as(select tn,Row_Number() over(order by tn) as rownum from tmp1)
    select @name
=tn from tmp2
        
where rownum =@count+1
    
-- 创建各个表
            select @sql
=@sql+' '+tc+' '+ct+' '+case when def=1 then 'not null'
                                                    when def
=0 then 'null' 
                                                end
+','
                from myT 
where tn=@name
            
set @sql ='create table '+@name+'('+@sql+')'
            select @sql
    
set @count=@count+1
end






















/**//*

--创建所有表
declare @total int
declare @count int
declare @distable varchar(50)
declare @givename varchar(100)
declare @sql varchar(1000)
declare @name varchar(200)
set @count=0
set @distable=''
--计算表的个数
select @total=count(distinct tn) from myT
--select @total
while @count<@total -- 循环遍历所有的表名
begin
    with test as(
        select distinct tn from myT
    ),
    test2 as(
        select tn,Row_Number() over(order by tn) as rownum from test
    )
    select @distable=tn from test2
        where rownum =@count+1
    -- 创建各个表
    set @givename=@distable
    select @ext=count(1) from myT where tn=@givename
    if(@ext=0)
        begin
            print('Error')
        end
    else
        begin
            set @sql=''
            set @name =''
            set @name=@givename
            select @sql=@sql+' '+tc+' '+ct+' '+case when def=1 then 'not null'
                                                    when def=0 then 'null' 
                                                end+','
                from myT where tn=@givename
            set @sql ='create table '+@name+'('+@sql+')'
            select @sql
            --exec (@sql)
        end

    set @count=@count+1
end
*/
 
分享到:
评论

相关推荐

    sqlserver字段类型介绍

    sqlserver字段类型介绍 数据库中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储。如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取出来的字符串是乱码...

    sqlserver 快速查询存储过程是否用到某个表或者字段

    sqlserver 快速查询存储过程或者视图中是否用到某个表或者字段。

    sql server字段保存文件,blob操作

    在sql server的字段中保存文件,文件大小没有限制。 字段类型2005以上是 varbinary(MAX),2000版本是image.

    SQL Server中修改“用户自定义表类型”问题的分析与方法

    SQL Server开发过程中,为了传入数据集类型的变量(比如接受C#中的DataTable类型变量),需要定义“用户自定义表类型”,通过“用户自定义表类型”可以接收二维数据集作为参数,在需要修改“用户自定义表类型”的...

    SQL根据字段值查找表及字段

    当你在使用某软件时,已知某个数据,但是想查看它保存在sql哪个表内字段时,用它非常方便

    Microsoft SQL Server 2005 Express Edition SP3

    Microsoft SQL Server 2005 Express Edition (SQL Server Express) 是一个免费且易于使用的 SQL Server 2005 版本,它替换了 Microsoft Desktop Engine (MSDE)。与 Microsoft Visual Studio 2005 集成之后,SQL ...

    SQLServer2005考试题及答案

    SQLServer考试题及答案 选择题: 1、在MS SQL Server中,用来显示数据库信息的系统存储过程是( ) A sp_ dbhelp B sp_ db C sp_ help D sp_ helpdb 2、SQL语言中,删除一个表的命令是( ) A DELETE B DROP C ...

    sql server中的image类型的数据导出到oracle的clob字段中

    sql server中的image类型的数据导出到oracle的clob字段中

    SQLSERVER数据库中存储BLOB类型数据,在线等现在公司要求用PB6.5+SQLser

    SQLSERVER数据库中存储BLOB类型数据,在线等现在公司要求用PB6.5+SQLser

    C# 存取SqlServer中的Image类型.txt

    C# 存取SqlServer中的Image类型 有时候我们需要将图片存到数库中的Imgae类型的字段下,以下是存取的两种方法:

    SQL Server 利用触发器对多表视图进行更新的实现方法

    其步骤就是:利用update操作触发器产生的2个虚拟表【inserted】用来存储修改的数据信息和【deleted】表,然后将对应的数据更新到对应数据表中的字段信息中; 1.首先创建3个表: a.信息表: USE [SQL-LI] BEGIN ...

    SQL Server将一列的多行内容拼接成一行的实现方法

    昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行,比如表中有两列数据 : 类别 名称 AAA 企业1 AAA 企业2 AAA 企业3 ...

    SQL Server数据库设计表和字段的经验

    所以,在建立系统存储客户信息时,倾向于在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一数据条目的变化。文中介绍了SQL Server数据库设计表和字段的经验。如字段名、前缀...

    sql server经典面试题

    4、 如何在SQLServer中创建临时表(如何在SQLServer中将数据复制到创建的临时表) 5 如何实现行转列 6 查询出某个字段所有重复的记录 7 写一条sql语句,要修改一个字段的俩个值,比如把字段sex中的男改为女,女改为男 ...

    SQL 一次性替换数据库中所有表或者所有列中的关键字

    包含SQLserver数据库的两个存储过程的完全代码,该存储存储可以一次性替换数据库中所有表或者所有列中的关键字,并介绍其使用方法。本存储过程在我单位更名时起到重要作用。

    sqlserver数据库著名上级面试题目

    (4) 如何在SQLServer中创建临时表(如何在SQLServer中将数据复制到创建的临时表) (5)如何实现行转列 (6)查询出某个字段所有重复的记录 (7) 写一条sql语句,要修改一个字段的俩个值,比如把字段sex中的男改为...

    C#+存取SqlServer中的Image类型

    C#+存取SqlServer中的Image类型

    sql2005教程

    sqlserver2005教程SQLSERVER2005中Reporting Service执行日志的读取方法 恢复SQL2005误删除的数据 SQL2005 Management Studio 之 SSMS Field Types of SQL Server 2005 SQL Server 2005和SQL Server 2000数据的...

    SQL server 2005中设置自动编号字段的方法

    在包含标识列的表中插入值时,Microsoft SQL Server 将基于上一次使用的标识值(标识种子属性)和在创建列时指定的增量值(标识增量属性)自动生成下一个标识符。 注意: 只能为不允许空值且数据类型为 decimal、int...

    Microsoft SQL Server数据库建模工具

    当您更改某个受关系影响的列的数据类型、长度、精度、小数位数等信息时,关系中的其他字段将随之更改,这个过程是递归的,所有与该字段有直接或间接关系引用的字段都将受到更改。 8、为更改生成SQL脚本。 使用...

Global site tag (gtag.js) - Google Analytics