`

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
*/
 
分享到:
评论

相关推荐

    C# 开发SQLSERVER数据库自动建表

    标题“C# 开发SQLSERVER数据库自动建表”表明我们将讨论一个使用C#开发的程序,该程序可以自动化创建SQL Server数据库中的表结构。这个功能对于数据导入、系统初始化或简化数据库管理流程非常有用。 描述中提到,该...

    sqlserver 导出表及字段说明脚本.rar

    这个压缩包"sqlserver 导出表及字段说明脚本.rar"包含了一个名为"sqlserver 导出表及字段说明脚本.sql"的文件,这通常是一个用于生成SQL语句的脚本,用于描述数据库中的表结构以及各字段的详细信息。以下是对这个...

    SQLServer中如何将一个字段的多个记录值合在一行显示

    SQLServer 中将一个字段的多个记录值合并到一行显示的实现方法 SQL Server 是一种关系型数据库管理系统,具有强大的数据处理能力和存储能力。在实际应用中,我们经常需要将一个字段的多个记录值合并到一行显示,以...

    sqlserver数据库类型对应Java中的数据类型

    在 SQL Server 中,bigint 是一个整数类型,用于存储大整数。在 Java 中,bigint 对应的数据类型是 long。 binary 在 SQL Server 中,binary 是一个二进制类型,用于存储二进制数据。在 Java 中,binary 对应的...

    怎么重命名sqlserver表中字段名

    ### 如何在SQL Server中重命名表中的字段 在数据库管理与维护的过程中,经常会遇到需要对表中的字段进行重命名的情况。特别是在SQL Server这样的大型关系型数据库管理系统中,正确掌握如何进行字段重命名是非常重要...

    sqlserver字段类型介绍

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

    ORACLE中BLOB字段导入到SQL SERVER中的IMAGE字段

    而在SQL SERVER中,IMAGE字段同样用于存储大块的二进制数据,但在SQL SERVER 2005及以后的版本中已被废弃,取而代之的是VARBINARY(MAX)。 要完成这种迁移,我们需要遵循以下步骤: 1. **数据准备**:确保ORACLE...

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

    下面是一个示例代码,演示如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中: 首先,我们需要使用 JDBC 驱动程序连接到 SQL Server 数据库,并从结果集中取出 Image 类型数据: ```java ...

    SqlServer删除所有表数据语句

    首先,我们需要创建一个存储过程 `sp_DeleteAllData`,该过程将删除所有表的数据。该过程的实现代码如下: ```sql CREATE PROCEDURE sp_DeleteAllData AS EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK ...

    sql server 2005 简介

    SQL Server 2005 是一个关系数据库管理系统,关系数据库管理系统是一种使用关系模型来组织和存储数据的数据库管理系统。关系模型是一种二维表格结构,用于描述实体和实体之间的关系。 关系模型的基本概念包括关系...

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

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

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

    在SQL Server 2000及之前版本中,用于存储BLOB数据的字段类型是`image`,而在2005及以上版本中,这个角色由`varbinary(MAX)`接替。 `image`字段类型在SQL Server 2000中用于存储任何长度的二进制数据,最大可达2^31...

    C#更新SQLServer中TimeStamp字段(时间戳)的方法

    在C#编程中,SQL Server的时间戳(TimeStamp)字段是一个特殊的数据类型,它与我们通常理解的日期时间无关,而是用来记录数据行的版本或更改信息。本文将深入探讨如何在C#中读取和更新SQL Server中的Timestamp字段。...

    SQL Server中实现字段值自动增长且连续

    ### SQL Server中实现字段值自动增长且连续的关键知识点 #### 引言 在数据库管理中,确保特定字段的值能够自动增长且保持连续性对于数据的有序性和完整性至关重要。SQL Server提供了多种方法来实现这一需求,包括...

    SQL Server2005基本方法和语句

    - FULL OUTER JOIN:返回两个表中的所有行,如果一个表中有但另一个表中没有,则结果集中的对应字段为空。 以上介绍了 SQL Server 2005 中的基本方法与常用语句,涵盖了数据库管理与数据操作的核心技能。通过熟练...

    SqlServer表结构转oracle表结构

    3. **注释迁移**:在SQL Server中的表注释和字段注释,通常存储在系统视图中。C#代码需要查询这些视图获取注释信息,并在Oracle中使用`COMMENT ON TABLE`和`COMMENT ON COLUMN`语句添加注释。 4. **界面操作**:...

    SQL Server连接字段的方法

    假设我们有一个名为`STAR`的表,其中包含了三个字段`StarYear`、`StarMonth`和`StarDay`,分别存储了年份、月份和日期的信息,但是这些字段是以整数形式存储的,例如`20050821`代表2005年8月21日。我们的目标是将这...

    sql server 2005调试

    接着,创建一个AFTER INSERT类型的触发器,每当`AllMoney`表有新数据插入时,更新`LastID`表的`AllMoneyID`字段为`AllMoney`表中的最大ID。 在调试过程中,首先在触发器的代码中设置断点,然后选择存储过程并进行...

    sqlserver 2005 express X64

    SQL Server 2005 Express Edition ...总之,SQL Server 2005 Express X64是一个功能强大的数据库解决方案,尤其适合资源有限但又需要高性能处理能力的环境。通过深入学习和实践,您可以充分利用它来满足各种业务需求。

    sqlserver 2008 创建数据表 详解

    以上代码创建了一个名为“会员信息”的表,其中包含四个字段:“ID”(自增整数)、“姓名”(非空字符串)、“邮箱”(可选字符串)和“注册日期”(默认为当前日期时间)。 ##### 修改表 一旦表创建完成,可以...

Global site tag (gtag.js) - Google Analytics