取得表的建表语句!

lqqz1984 2012-04-06 03:54:17
想通过sql语句取得表的建表语句,注意是根据已经存在的表,然后能够通过sql语句查到它的建表语句吗?我知道通过查询分析器是能够取得建表语句的,但是能不能通过什么sql语句取得呢?
...全文
427 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
will_never 2012-08-28
  • 打赏
  • 举报
回复
不错,试了一下
字符魔法师 2012-04-07
  • 打赏
  • 举报
回复
Select TableName,-2 ColOrder,1 RowOrder,'If Not Exists(Select * From sysObjects Where xtype=''u'' and Name='''+TableName+''')'
From (
select a.Name TableName
From dbo.sysObjects a
Where a.xtype='u'
) A
Union all
Select TableName,-1 ColOrder,2 RowOrder,' Create Table '+TableName+'('
From (
select a.Name TableName
From dbo.sysObjects a
Where a.xtype='u'
) B
Union all
Select TableName,ColOrder,3 RowOrder,' ' + ColumnName + ' ' +
Case When typeName in ('char','varchar') then 'Varchar('+Cast(ColumnLength as Varchar)+') Not Null '+ Case When cdefault<>0 then 'Default '''',' Else ',' End
When typeName in ('nchar','nvarchar') then 'nVarchar('+Cast(ColumnLength/2 as varchar)+') Not Null ' + Case When cdefault<>0 then 'Default '''',' Else ',' End
When typeName in ('bit','tinyint','smallint','int','bigint','float','real','smallmoney','Money') then typename + ' Not Null '+ Case When cdefault<>0 then 'Default 0,' Else ',' End
When typeName in ('numeric','Decimal') Then typename + '('+Cast(Columnxprec as varchar)+','+Cast(Columnxscale as varchar)+') Not Null ' + Case When cdefault<>0 then 'Default 0,' Else ',' End
When typeName in ('smalldatetime','datetime') Then typename + ' Not Null ' + Case When cdefault<>0 then 'Default getdate(),' Else ',' End
when typename in ('timestamp') then typename + ' Not Null,'
when typename in ('binary','varbinary') then typename + ' Not Null ' + Case When cdefault<>0 then 'Default 0,' Else ',' End
Else '请注意未处理的类型' end SqlScript
From (
select a.Name TableName,b.Name ColumnName,b.Length ColumnLength,
b.xprec Columnxprec,b.xscale Columnxscale,b.ColOrder,b.cdefault,c.name typeName
From dbo.sysObjects a
inner join dbo.sysColumns b on a.ID=b.ID
Inner join dbo.systypes c on b.xusertype=c.xusertype
Where a.xtype='u'
) c
Union all
Select TableName,1000 ColOrder,4 RowOrder,')'
From (
select a.Name TableName
From dbo.sysObjects a
Where a.xtype='u'
) d
Union all
Select TableName,1001 ColOrder,5 RowOrder,'Go'
From (
select a.Name TableName
From dbo.sysObjects a
Where a.xtype='u'
) d
Order by TableName,RowOrder,ColOrder
希望能对楼主有所帮助!
小天 2012-04-07
  • 打赏
  • 举报
回复
1、复制表(复制结构和指定内容,源表名:A(a,b,c),新表名:B)

select * into B from A where ... ...

2、拷贝数据(源表名:A(a,b,c),目标表名:B(d,e,f))

insert into B(d,e,f) select a,b,c from a where ... ...
leijunyuncyuyan 2012-04-06
  • 打赏
  • 举报
回复
SQL2008 可以右键表名—>编写表脚本—>CREATE到—>新查询编辑器
tjs_125 2012-04-06
  • 打赏
  • 举报
回复
参考下面的帖子
http://topic.csdn.net/u/20110802/14/30e4da7b-4391-4fdf-8bf0-3defb05d72d8.html
xiongshao1943 2012-04-06
  • 打赏
  • 举报
回复
上次根据系统表记录的信息获取表信息,能建成基本的语句.但如果索引什么很多的话,那起来很费事,特别有主外键关联的时候.
如果是已经存在的一张独立的表建表还是比较容易的
lqqz1984 2012-04-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

SQL2008 可以右键表名—>编写表脚本—>CREATE到—>新查询编辑器
[/Quote]
是的这个我也知道,就是想知道有没什么sql语句,我想这个功能也应该是通过查询语句来得到的吧?
Me_zzx 2012-04-06
  • 打赏
  • 举报
回复
SQL2008 可以右键表名—>编写表脚本—>CREATE到—>新查询编辑器

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧