SQL Server 没有提供函数或存储过程直接查看建表语句,当然它的DBMS客户端提供了这个功能 但是太麻烦 ,下面介绍3种方式获取 建表语句。

举例表SYS_USER

1. 数据库→任务→生成脚本→选择特定表(存储过程也可)→设置高级设置中类型→保存到新建查询窗口 即可。

2. 找到目标表右键→编写表脚本→create到新查询编辑窗口 即可

3.自建 存储过程 帮助生成建表语句 后调用

(此部分参考 https://www.lefer.cn/posts/25533/  )

i) Create Proceduce

CREATE PROCEDURE sp_helptable ( @table VARCHAR(100) )
-- exec sp_helptable tablename
-- SQL Server 没有提供函数或存储过程直接查看建表语句(),此存储过程可实现
ASBEGINDECLARE @sql TABLE(s VARCHAR(1000) ,id INT IDENTITY);
-- 创建语句INSERT  INTO @sql  ( s )  VALUES  ( 'create table [' + @table + '] (' );--获取注释SELECT  A.name AS table_name ,B.name AS column_name ,C.value AS column_descriptionINTO    #columnspropertiesFROM    sys.tables AINNER JOIN sys.columns B ON B.object_id = A.object_idLEFT JOIN sys.extended_properties C ON C.major_id = B.object_idAND C.minor_id = B.column_idWHERE   A.name = @table;-- 获取列的列表,拼接语句INSERT  INTO @sql  ( s )SELECT  '  [' + a.COLUMN_NAME + '] ' + DATA_TYPE+ COALESCE('('+ CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR)+ ')', '') + ' '+ CASE WHEN EXISTS ( SELECT idFROM   syscolumnsWHERE  OBJECT_NAME(id) = @tableAND name = a.COLUMN_NAMEAND COLUMNPROPERTY(id,name,'IsIdentity') = 1 )THEN 'IDENTITY('+ CAST(IDENT_SEED(@table) AS VARCHAR)+ ','+ CAST(IDENT_INCR(@table) AS VARCHAR)+ ')'ELSE ''END + ' '+ ( CASE WHEN IS_NULLABLE = 'NO' THEN 'NOT 'ELSE ''END ) + 'NULL ' + COALESCE('DEFAULT '+ COLUMN_DEFAULT, '')+ CASE WHEN ISNULL(CONVERT(VARCHAR, b.column_description),'') <> ''THEN '/**'+ ISNULL(CONVERT(VARCHAR, b.column_description),'') + '**/,'ELSE ','ENDFROM    INFORMATION_SCHEMA.COLUMNS aLEFT JOIN #columnsproperties b ON CONVERT(VARCHAR, a.COLUMN_NAME) = CONVERT(VARCHAR, b.column_name)WHERE   a.TABLE_NAME = @tableORDER BY ORDINAL_POSITION;
-- 主键DECLARE @pkname VARCHAR(100);SELECT  @pkname = CONSTRAINT_NAMEFROM    INFORMATION_SCHEMA.TABLE_CONSTRAINTSWHERE   TABLE_NAME = @tableAND CONSTRAINT_TYPE = 'PRIMARY KEY';IF ( @pkname IS NOT NULL )BEGININSERT  INTO @sql  ( s ) VALUES  ( '  PRIMARY KEY (' );INSERT  INTO @sql  ( s )SELECT  '   [' + COLUMN_NAME + '],'FROM    INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE   CONSTRAINT_NAME = @pknameORDER BY ORDINAL_POSITION;-- 去除尾部多余的字符UPDATE  @sqlSET     s = LEFT(s, LEN(s) - 1)WHERE   id = @@identity;INSERT  INTO @sql ( s ) VALUES  ( '  )' );END;ELSEBEGIN-- 去除尾部多余的字符UPDATE  @sqlSET     s = LEFT(s, LEN(s) - 1)WHERE   id = @@identity;END;
-- 继续拼接INSERT  INTO @sql ( s ) VALUES  ( ')' );-- 输出结果SELECT  s AS CreateTableSQLFROM    @sqlORDER BY id;END;

ii)调用

 EXEC sp_helptable sys_user

iii)

最后  还有一种 SQL 直接建 表的 sql 如下

SELECT a.*,'' 其他新增列 into new_table    from sys_user a WHERE 1=2
--要求 new_table不存在

SELECT a.*,'' 其他新增列 into new_table    from sys_user a WHERE 1=2  之所以加条件 是因为 这里只需要表结构, 无需数据, 与SQL insert into new_table2 SELECT * from sys_user 的区别在于 后者 要求new_table2 存在

SQL Server 使用SQL获取建表语句相关推荐

  1. sql字段修改及查看建表语句

    -- 修改字段长度 -- 举例:alter table user modify name varchar(300);alter table 表名 modify 字段名 目标字段;-- 修改字段名 -- ...

  2. greenplum获取建表语句_Greenplum数据库基本语句 - 树懒学堂

    这一节提供了Greenplum数据库中有关操纵数据和并发访问的信息.这个主题包括下列小标题: 关于Greenplum数据库中的并发控制 插入行 更新现有行 删除行 使用事务 清理数据库 关于Green ...

  3. Shell脚本导出导入MySQL建表语句

    Shell脚本导出导入MySQL建表语句 一.导出sql语句 1.需求: 2.shell脚本如下: 二.导入sql语句 1.需求 2.shell实现1 3.shell实现2 一.导出sql语句 1.需 ...

  4. SQL Server 怎样使用SQL输出建表语句

    在一般的数据库系统中可使用 表名右键--[Script Table as]--[Create To]--XX 输出建表SQL语句,但在某些SQL Server系统中可能客户仅提供数据库查询权限,导致无 ...

  5. Oracle和sql server中复制表结构和表数据的sql语句

    在Oracle和sql server中,如何从一个已知的旧表,来复制新生成一个新的表,如果要复制旧表结构和表数据,对应的sql语句该如何写呢?刚好阿堂这两天用到了,就顺便把它收集汇总一下,供朋友们参考 ...

  6. Sql Server 优化 SQL 查询:如何写出高性能SQL语句

    1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条 ...

  7. SQL SERVER 的SQL语句优化方式小结

    SQL SERVER 的SQL语句优化方式小结 详细出处参考:http://www.jb51.net/article/19547.htm 1.SQL SERVER 2005的性能工具中有SQL Ser ...

  8. oracle建表语句string,编程式Mybatis获取oracle表创建表语句

    写在前面 Mybatis之前使用过一段时间,当然只是粗糙地使用,而且配合Spring有一部分Mybatis管理的内容都交给了Spring,加上一段时间没用到又开始忘了,刚好今天碰到一个要求,Oracl ...

  9. SQL Server中的内存优化表变量

    This article will cover the usage details and performance advantages of the memory-optimized table v ...

  10. sql server 查看死锁,以及执行语句

    sql server 查看死锁,以及执行语句 第二秒 select t1.resource_type [资源锁定类型], DB_NAME(resource_database_id) as 数据库名, ...

最新文章

  1. deepin系统引导_国产 Linux 发行版 深度操作系统 20 正式版发布
  2. qt dll 1% 不是有效的win32应用程序
  3. 一般向量空间的基变换_从希尔伯特空间的角度看线性变换的一般思想和问题
  4. 怎么搞技术呢?我觉得最简单的方法
  5. Anaconda中下载速度贼慢?
  6. Spring中AOP切面编程学习笔记
  7. kibana 查询_Exceptionless服务端+kibana部署实时日志纪要
  8. java 托盘开发_java托盘开发界面记录
  9. 【牛客练习赛58-C】矩阵消除游戏(dfs+状态标记)
  10. svn使用方法以及使用教程
  11. FinalData 数据恢复工具[绿色版]
  12. PCL计算点到直线距离
  13. “双非计算机专硕”考博历程分享
  14. android补间动画有哪几种,Android补间动画、属性动画 常用功能总结
  15. web前端面试题附答案035-关于number考点大全,走过路过不会错过
  16. SHA-256哈希函数实现
  17. ionic3生产打包javascript内存溢出的解决方法
  18. 【nginx】配置nginx.conf 配置多个代理
  19. 丘成桐中学生计算机科学竞赛,丘成桐计算机奖介绍,为什么要参加丘成桐奖?...
  20. 最严谨的计算机语言p,P=NP?这世界真有捷径?

热门文章

  1. exoplayer和mediaplayer的封装
  2. 别再白瞎去花钱购买高精度卫星地图,一文教你解决精度与下载问题
  3. 2022最新软考考试时间已公布
  4. 《Qt图形界面编程入门》实验
  5. 视频教程-新版全面系统完整的人工智能教程-机器学习
  6. ArchLinux安装笔记「双系统U盘安装」(2018-11-19)
  7. 学历真的重要吗?当然非常非常非常重要。
  8. SCT2450QSTE 国产车规AEC-Q100 3.8V-36V 5A 高效同步降压 DCDC 转换器 替代TSP54540
  9. ascii码01100001_【多选题】计算机中字符a的ASCII码值是(01100001)2,那么字符c的ASCII码值是( )。...
  10. 统一建模语言——UML