--获取建表DDL(+主键)
declare @tabname varchar(50)
set @tabname='sys_log'--表名if ( object_id('tempdb.dbo.#t') is not null)
begin
DROP TABLE #t
endselect  'create table [' + so.name + '] (' + o.list + ')' + CASE WHEN tc.Constraint_Name IS NULL THEN '' ELSE 'ALTER TABLE ' + so.Name + ' ADD CONSTRAINT ' + tc.Constraint_Name  + ' PRIMARY KEY ' + ' (' + LEFT(j.List, Len(j.List)-1) + ')' END TABLE_DDL
into #t from    sysobjects so
cross apply(SELECT '  ['+column_name+'] ' + data_type + case data_typewhen 'sql_variant' then ''when 'text' then ''when 'ntext' then ''when 'xml' then ''when 'decimal' then '(' + cast(numeric_precision as varchar) + ', ' + cast(numeric_scale as varchar) + ')'else coalesce('('+case when character_maximum_length = -1 then 'MAX' else cast(character_maximum_length as varchar) end +')','') end + ' ' +case when exists ( select id from syscolumnswhere object_name(id)=so.nameand name=column_nameand columnproperty(id,name,'IsIdentity') = 1 ) then'IDENTITY(' + cast(ident_seed(so.name) as varchar) + ',' + cast(ident_incr(so.name) as varchar) + ')'else ''end + ' ' +(case when IS_NULLABLE = 'No' then 'NOT ' else '' end ) + 'NULL ' + case when information_schema.columns.COLUMN_DEFAULT IS NOT NULL THEN 'DEFAULT '+ information_schema.columns.COLUMN_DEFAULT ELSE '' END + ', ' from information_schema.columns where table_name = so.nameorder by ordinal_positionFOR XML PATH('')) o (list)
left joininformation_schema.table_constraints tc
on  tc.Table_name       = so.Name
AND tc.Constraint_Type  = 'PRIMARY KEY'
cross apply(select '[' + Column_Name + '], 'FROM   information_schema.key_column_usage kcuWHERE  kcu.Constraint_Name = tc.Constraint_NameORDER BYORDINAL_POSITIONFOR XML PATH('')) j (list)
where   xtype = 'U'
AND name=@tabnameselect 'USE '+db_name() +CHAR(13) +'GO' + CHAR(13) +
(--区别有主键和没主键
case when (select count(a.constraint_type)
from information_schema.table_constraints a
inner join information_schema.constraint_column_usage b
on a.constraint_name = b.constraint_name
where a.constraint_type = 'PRIMARY KEY'--主键
and a.table_name = @tabname)=1 then
replace(table_ddl,', )ALTER TABLE',')'+CHAR(13)+'ALTER TABLE')
else SUBSTRING(table_ddl,1,len(table_ddl)-3)+')' end
) from #t--drop table #t-- SP_HELP sys_log

生成的效果如下:

CREATE TABLE [Sys_Log] ([LSTime] datetime  NOT NULL DEFAULT (getdate()),   [LOptName] char(10)  NULL ,   [LOptType] char(12)  NULL ,   [LOptObj] char(20)  NULL ,   [LDetail] varchar(120)  NULL ,   [LStation] tinyint  NULL ,   [LCopied] tinyint  NULL DEFAULT ('0'),   [VTimeStamp] timestamp  NOT NULL
)ALTER TABLE Sys_Log ADD CONSTRAINT PK__Sys_Log__8E0F0ACB1FCDBCEB PRIMARY KEY  ([LSTime])

可自动生成主键约束,及默认值

SQL DDL 生成建表语句(可自动生成主键约束,字段默认值等)相关推荐

  1. SQL Server2000导出数据时包含主键、字段默认值、描述等信息

    时经常用SQL Server2000自带的导出数据向导将数据从一台数据库服务器导出到另一台数据库服务器: 结果数据导出了,但表的主键.字段默认值.描述等信息却未能导出,一直没想出什么方法,今天又尝试了 ...

  2. SQL语句 SQL Server(代码添加约束:主键约束,外键约束,默认值约束,check约束,规则约束)

    SQL语句(基于SQL Server) 约束 primary约束,unique约束,check约束 建表时 列级 create table <table name>(<column_ ...

  3. SQL语句:建表语句、插入语句、查询语句、增加列、删除列、查询语句like、修改语句

    1.建表 create table student (   id number(10,0) not null,   uname varchar2(255 char),   pword varchar2 ...

  4. Bootstrap4+MySQL前后端综合实训-Day04-PM【PowerDesigner 图形化数据库设计软件(设置依赖关系、自动增长主键、生成sql语句)、SQLyog软件(备份数据库)】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 PowerDesigner软件 5张数据表之间的依赖关系图 设置数据表的自动增长主键 ...

  5. 关于使用java程序从excel或者数据库中取出建表规则数据,自动生成数据库建表语句(适用于批量建数据库表)

    公司开发新系统,需要创建几百个数据库表,建表的规则已经写好放到Excel中,如果手动创建的话需要占用较长的时间去做,而且字段类型的规则又被放到了另一张表,如果手动去一个一个去匹配就很麻烦,所以我先把两 ...

  6. java生成mysql数据库建表语句、字段、字段类型、字段注释,可实现不用mysqldump备份数据库

    使用 mysqldump 备份数据库也是可行的,因为每次备份的时候都需要mysqldump这个文件, 我在windows备份时没问题,但是放到linux上面时,centos系统死活不认这个文件,但又不 ...

  7. SQL Server 与Oracle 建表语句的不同之处

    SQL Server和Oracle建表中的区别: 1.Sql server中的字符串类型建表关键字为varchar,而Oracle是varchar2  2.两种数据库实现主键自增的区别: >&g ...

  8. Java 实现两个不同服务器的数据库数据的迁移(注释含数据库建表语句备份)

    现在需要将内网数据库的数据及表同步到外网中,但是连接内网需要jar包才能穿透连接到,经测试,jar包对获取建表语句进行了限制(注释的代码),所以需要内外网两边把表建好,直接同步数据. 逻辑: 获取内网 ...

  9. oracle建表语句设置主键,oracle 表添加主键 primary key

    根据数据库三范式就是每个表建议要有主键,每个字段不可再分,表与之间不存在部分依赖 数据库的优化首先考虑的也是主键 主键会在对应的字段加唯一约束.加not null,建 索引 怎么为表加主键呢 1,建表 ...

最新文章

  1. 用python深度优先遍历解迷宫问题
  2. 003_ZooKeeper服务端集群搭建
  3. sklearn one_hot向量输出维度第2维大小的本质
  4. 洛谷 P3119 [USACO15JAN]草鉴定Grass Cownoisseur (SCC缩点,SPFA最长路,枚举反边)
  5. 最全总结!聊聊 Python 发送邮件的几种方式
  6. iOS通过切片仿断点机制上传文件
  7. Flume之介绍 核心组件 可靠性 恢复性
  8. 利用VBA将出纳表格生成可打印的凭证
  9. 模似html元素tilte提示
  10. 三星推出体积更小的1亿像素图像传感器产品线
  11. nvidia怎么查看
  12. Attack State Slight Movement(攻击状态)
  13. 计算机显存影响什么,老司机告诉你显存是怎样影响电脑速度的
  14. Silverlight 4 - MVVM with Commanding and WCF RIA Services
  15. html实现从内向外渐变色,CSS3 由内到外(放射性)渐变
  16. 维视智造斩获2022年度光能杯最具影响力“智造”企业奖
  17. C语言整人的无限循环,让对方电脑自动关机的整人程序和无限循环程序-win7自动关机软件...
  18. 已解决:Traceback (most recent call last): File “d:\python3.6\lib\runpy.py“,
  19. 学习seo必须学习什么?
  20. Redhat6.5离线配置Zabbix,含自定义Zabbix监控项

热门文章

  1. java amp 0xff6_BuuCTF Web Writeup 第一部分
  2. protel99se 元件名系表--分立元件库中英文对照
  3. 使用wget下载Google Drive公开的链接
  4. linux上wps能云同步吗,Linux版WPS管理云端文档
  5. i510500和i510400参数对比 区别大吗
  6. 【kthreaddi】记录一次被木马攻击hadoop后如何解决
  7. 我的CISSP备考之路
  8. ONVIF协议从入门到精通
  9. 基于微信小程序的聊天室源码设计实践
  10. 用java写一个SM2算法