1. declare @table_name varchar(100)-- 表名
  2. set @table_name='bqcform101'
  3.  
  4. --============表结构
  5. select 类别,表名or字段名,描述,字段类型,是否自增,允许为NULL,默认值 from
  6. (
  7. SELECT '表名' 类别,-1 column_id,tbs.name 表名or字段名,ds.value 描述,'' 字段类型,'' 是否自增,'' 允许为NULL,'' 默认值,1 rn
  8. FROM sys.extended_properties ds
  9. LEFT JOIN sysobjects tbs ON ds.major_id=tbs.id
  10. WHERE ds.minor_id=0 and tbs.name=@table_name
  11. union
  12. SELECT
  13. @table_name 类别
  14. ,c.column_id
  15. ,C.name 表名or字段名
  16. ,s.value 描述
  17. ,字段类型 = T.name + CASE T.user_type_id WHEN 41 THEN '('+CAST(C.scale AS VARCHAR) +')' -- time
  18. WHEN 42 THEN '('+CAST(C.scale AS VARCHAR) +')' -- datetime2
  19. WHEN 43 THEN '('+CAST(C.scale AS VARCHAR) +')' -- datetimeoffset
  20. WHEN 106 THEN '('+CAST(C.precision AS VARCHAR)+','+ CAST(C.scale AS VARCHAR) +')' -- decimal
  21. WHEN 108 THEN '('+CAST(C.precision AS VARCHAR)+','+ CAST(C.scale AS VARCHAR) +')' -- numeric
  22. WHEN 165 THEN '('+ISNULL(CAST(NULLIF(C.max_length,-1) AS VARCHAR),'MAX') +')' -- varbinary
  23. WHEN 167 THEN '('+ISNULL(CAST(NULLIF(C.max_length,-1) AS VARCHAR),'MAX') +')' -- varchar
  24. WHEN 173 THEN '('+ISNULL(CAST(NULLIF(C.max_length,-1) AS VARCHAR),'MAX') +')' -- binary
  25. WHEN 175 THEN '('+ISNULL(CAST(NULLIF(C.max_length,-1) AS VARCHAR),'MAX') +')' -- char
  26. WHEN 231 THEN '('+ISNULL(CAST(NULLIF(C.max_length,-1)/2 AS VARCHAR),'MAX') +')' -- nvarchar(该字段校检根据实际情况)
  27. WHEN 239 THEN '('+ISNULL(CAST(NULLIF(C.max_length,-1) AS VARCHAR),'MAX') +')' -- nchar
  28. ELSE ''
  29. END
  30. ,case when C.is_identity=1 then '是' else '' end 是否自增
  31. --cast(C.is_identity as varchar(10)) 是否自增
  32. ,case when C.is_nullable=1 then '是'else '' end 允许为NULL
  33. ,默认值 = ISNULL(STUFF(LEFT(D.definition,LEN(D.definition)-1),1,1,''),'')
  34. ,3 rn
  35. FROM sys.columns C
  36. INNER JOIN sys.types T ON C.user_type_id = T.user_type_id
  37. LEFT JOIN sys.default_constraints D ON D.[object_id] =C.default_object_id AND D.parent_object_id = C.[object_id] AND D.parent_column_id = C.column_id
  38. left join (select major_id,minor_id,value from sys.extended_properties) s on s.major_id = c.object_id and s.minor_id = c.column_id
  39. WHERE C.[object_id] = OBJECT_ID(@table_name)
  40. ) s
  41. order by column_id,rn
  42.  
  43. --============主键
  44. select Primary_COLUMN_NAME = convert(sysname,c.name)
  45. from
  46. sysindexes i, syscolumns c, sysobjects o
  47. where o.id = object_id(@table_name)
  48. and o.id = c.id
  49. and o.id = i.id
  50. and (i.status & 0x800) = 0x800
  51. and (c.name = index_col (@table_name, i.indid, 1) or
  52. c.name = index_col (@table_name, i.indid, 2) or
  53. c.name = index_col (@table_name, i.indid, 3) or
  54. c.name = index_col (@table_name, i.indid, 4) or
  55. c.name = index_col (@table_name, i.indid, 5) or
  56. c.name = index_col (@table_name, i.indid, 6) or
  57. c.name = index_col (@table_name, i.indid, 7) or
  58. c.name = index_col (@table_name, i.indid, 8) or
  59. c.name = index_col (@table_name, i.indid, 9) or
  60. c.name = index_col (@table_name, i.indid, 10) or
  61. c.name = index_col (@table_name, i.indid, 11) or
  62. c.name = index_col (@table_name, i.indid, 12) or
  63. c.name = index_col (@table_name, i.indid, 13) or
  64. c.name = index_col (@table_name, i.indid, 14) or
  65. c.name = index_col (@table_name, i.indid, 15) or
  66. c.name = index_col (@table_name, i.indid, 16)
  67. )

SQL SERVER 查看数据库表的字段类型,是否允许为NULL,默认值,主键等的更多相关文章

  1. SQL Server进阶(二)字段类型

    概述 系统数据类型详情 SqlDbType namespace System.Data { // // 摘要: // 指定要用于 System.Data.SqlClient.SqlParameter ...

  2. sql server 查看锁表SQL【转】

    1.select * from sys.dm_tran_locks或sp_LOCK 查看request_node 字段中为'X'(排他锁)或'IX'(意向排他锁)2.用sp_who2 + pid(进程 ...

  3. [转]基于SQL脚本将数据库表及字段提取为C#中的类

    开发时,勉不了需要使用SQL直接与数据库交互,这时对于数据库中的表名及字段名会使用的比较多.如果每使用一次都复制一个,实在蛋疼.所以就考虑将其做成const常量.但是数据库中的表和字段相当多,一个一个 ...

  4. Sql Server 导出数据库表结构的SQL查询语句

    --导出数据库所有表 SELECT 表名 Then D.name Else '' End, 表说明 Then isnull(F.value,'') Else '' End, 字段序号 = A.colo ...

  5. sql server查看创建表的代码,表定义

    1.查看建表语句在“对象资源管理器”中找到要导出的表,选中该表并单击右键,“编写表脚本为(S)”/“CREATE到(C)”/“新查询编辑器窗口”即可查看该表的建表语句.2.导出建表语句在“对象资源管理 ...

  6. sql server 2008获取表的字段注释

    SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, 字段序号=a.colorder, 字段名=a.n ...

  7. SQL Server 查看数据表占用空间大小的SQL语句

    ) ) if object_id('tempdb..#space') is not null drop table #space ),rows ),data ),index_size ),unused ...

  8. SQL SERVER 查看数据库安装时间

    --通过name为NT AUTHORITY\SYSTEM的登录账号的create_date,就知道SQL Server的安装日期了. SELECT * FROM SYS.SERVER_PRINCIPA ...

  9. SQL SERVER 查看数据库信息

    a.使用sys.database_files查看有关数据库文件的信息 b.使用sys.filegroups查看有关数据库组的信息. c.使用sys.master_files 查看数据库文件的基本信息和 ...

随机推荐

  1. No.018:4Sum

    问题: Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = ...

  2. <记录学习>(前三天)京东页面各种注意点

    培训学校第1到3天先学习HTML现在流行的是HTML5,目前学习的是HTML5规范.(给有基础一定的人学习)前三天学习的是京东页面的编写,和以前写的不同,页面看上去和自己写的一样,但老师讲的还是有很多 ...

  3. 设置MySQL允许外网访问

    1:设置mysql的配置文件      /etc/mysql/my.cnf      找到 bind-address  =127.0.0.1  将其注释掉://作用是使得不再只允许本地访问:   重启 ...

  4. 更加简洁易用——wangEditor富文本编辑器新版本发布

    1. 前言 wangEditor富文本编辑器(www.wangEditor.com)从去年11月份发布,至今已经有将近10各月了.它就像一个襁褓中的小婴儿,在我的努力以及众多使用者的支持下不断摸索.成 ...

  5. 使用 Google Analytics 跟踪 JavaScript 错误

    Google Analytics(谷歌分析)不仅仅是一个流量统计工具,你还可以用它来测量广告活动的有效性,跟踪用户多远到所需的页面流(从点击广告到购物车到结账页面)获取,并基于用户的信息设置浏览器和语 ...

  6. 【web前端面试题整理06】成都第一弹,邂逅聚美优品

    前言 上周四回了成都,休息了一下下,工作问题还是需要解决的,于是今天去面试了一下,现在面试回来了,我感觉还是可以整理一下心得. 这个面试题整理系列是为了以后前端方面的兄弟面试时候可以得到一点点帮助,因 ...

  7. document.querySelector和querySelectorAll方法

    querySelector和querySelectorAll是W3C提供的新的查询接口,其主要特点如下: 1.querySelector只返回匹配的第一个元素,如果没有匹配项,返回null.  2.q ...

  8. iOS开发--Swift 如何完成工程中Swift和OC的混编桥接(Cocoapods同样适用)

    由于SDK现在大部分都是OC版本, 所以假如你是一名主要以Swift语言进行开发的开发者, 就要面临如何让OC和Swift兼容在一个工程中, 如果你没有进行过这样的操作, 会感觉异常的茫然, 不用担心 ...

  9. Protocol and Delegate协议和代理

    1.什么是协议?  OC协议仿照Java的接口.协议和接口,都是不同类的对象之间一种通信的机制.2.协议的基础语法  单纯的语言描述协议的语法,很难让人理解,主要因为在OC中协议是类对象的通信机制,他 ...

  10. c中的进制与内存分析

    一. 进制 1. 什么是进制 l 是一种计数的方式,数值的表示形式 数一下方块的个数 汉字:十一   十进制:11  二进制:1011  八进制:13 l 多种进制:十进制.二进制.八进制.十六进制. ...