获取SQLSERVER所有库 所有表 所有列 所有字段信息
最近想起来做一个项目代码生成器,直接生成底层代码..
这免不了要先行读取数据库已有的信息..
废话不多说..开整..
SELECT NAME FROM MASTER..SYSDATABASES --读取所有库
上边语句只得到单表单列..里边就全是数据库的名字..
然后选择数据库后..按此数据库连接重新链接数据库..执行以下语句
SELECT NAME FROM SYSOBJECTS WHERE TYPE='U' --读取所有表
上边语句依然是得到的单表单列,存储的值全不是当前选择的数据库中的表
用户选择..得到表名..
SELECT CAST(value AS nvarchar(200)) as tableDescription FROM fn_listextendedproperty ('MS_Description', 'user', 'dbo', 'table', '写入表名', default, default)
可以使用上述语句来获取表的扩展属性表说明字段 譬如 "用户表"
结合之后得到以下语句..可以直接把表名和表说明一起读出
SELECT NAME,(SELECT CAST(value AS nvarchar(200)) as tableDescription FROM fn_listextendedproperty ('MS_Description', 'user', 'dbo', 'table', SO.NAME, default, default)) FROM SYSOBJECTS AS SO WHERE TYPE='U'
Select
SCOL.NAME, --列名
SCOL.ISNULLABLE, --是否为NULL
SCOL.PREC, --长度
STYPE.NAME AS [TYPE] , --字段数据类型
(SELECT SYS.EXTENDED_PROPERTIES.VALUE FROM SYSCOLUMNS
INNER JOIN SYS.EXTENDED_PROPERTIES ON SYSCOLUMNS.ID = SYS.EXTENDED_PROPERTIES.MAJOR_ID
AND SYSCOLUMNS.COLID = SYS.EXTENDED_PROPERTIES.MINOR_ID
INNER JOIN SYSOBJECTS ON SYSCOLUMNS.ID = SYSOBJECTS.ID
WHERE SYSOBJECTS.NAME = SO.NAME AND SYSCOLUMNS.NAME = SCOL.NAME) AS NOTES --字段说明文字 from SYSCOLUMNS AS SCOL
LEFT JOIN SYSOBJECTS SO ON SO.ID=SCOL.ID
LEFT JOIN SYSTYPES AS STYPE ON STYPE.xtype=SCOL.xtype
Where
SCOL.ID=OBJECT_ID('写入表名')
AND STYPE.NAME<>'SYSNAME' --最后这个我也没搞明白 是自己加上的 有时候同一个字段会出来两行数据 其中一个是sysname
上边的语句是自己写的..自己测试结果是正确的..如有不对..请多多指正批评
在语句中只要在最后写入表名..即可得到一张四列的表..分别是 字段名/字段类型/是否为空/备注
这四个东西基本上就是生成代码的最重要四个元素了..缺一不可..
加注:
SELECT objname,CAST(value AS nvarchar(200)) as fieldDescription FROM fn_listextendedproperty ('MS_Description', 'user', 'dbo', 'table', '写入表名' , 'column', default)
也可以用上述语句来单独获取表中的字段说明
在之后就是循环就好了..循环生成读模板..绑数据..写文件
获取SQLSERVER所有库 所有表 所有列 所有字段信息的更多相关文章
- MSSQL·查看DB中所有表及列的相关信息
阅文时长 | 0.6分钟 字数统计 | 1013.6字符 主要内容 | 1.引言&背景 2.声明与参考资料 『MSSQL·查看DB中所有表及列的相关信息』 编写人 | SCscHero 编写时 ...
- Sql中判断"库、表、列,视图,存储过程"是否存在
--判断数据库是否存在 IF EXISTS (SELECT * FROM MASTER.sys.sysdatabases WHERE NAME = '库名') PRINT 'exists ' else ...
- sqlserver 比较两个表的列
一.问题 给了两个各有四五十个列的表,找出他们相同的列和不同的列 二.查询两个表的列,存在临时表 --#a ,#b都是临时表,当前连接断开后自动删除--RANK() OVER (ORDER BY sy ...
- mssql sqlserver 给已存在表添加新的字段及字段备注的方法
转自:http://www.maomao365.com/?p=8102 摘要: 下文讲述向已存在表上添加新字段及字段备注的方法,如下所示: 实验环境:sql server 2008 R2 1. 添加新 ...
- tsql获取sqlserver某个库下所有表
) declare my_cursor cursor for (select [name] from SysObjects where XType='U') open my_cursor fetch ...
- oracle数据库获取指定表的列的相关信息
1.很多时候我们需要从数据库中获取指定表的所有列的相关属性,如 name,commens,datatype,datalength,pk等.下面就是制定的语句. select c.TABLE_NAME ...
- SqlServer和Oracle判断表和列是否存在
SqlServer .判断表Users是否存在 if object_id(N'Users',N'U') is not null print '存在' else print '不存在' .判断表User ...
- SQLServer在多个表中都增加一个字段的方法
1.使用游标 declare @sql varchar(), @name varchar() declare my_cursor scroll cursor for select name from ...
- PCB MS SQL 通过表名查询各字段信息和vb.net C# module类代码
正式表:各字段内容获取 ) SET @tabname = 'ppeflow' SELECT @tabname AS '表名' ,(CASE ))+ ')' )) ) )) + ')' )) ) )) ...
随机推荐
- EventBus完全解析--组件/线程间通信利器
github地址:https://github.com/greenrobot/EventBus 1, Android EventBus实战, 没听过你就out了 2, Android EventBu ...
- HTTP/2.0与HTTP/1.1协议区别
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协议.设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法.通 ...
- [转]git在eclipse中的配置
一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜索EGit 二_使用EGIT前的配置 配置个 ...
- 【poj1019】 Number Sequence
http://poj.org/problem?id=1019 (题目链接) 题意 给出一个数:1 12 123 1234 12345 123456 1234567 12345678 123456789 ...
- HNOI2016(BZOJ4542) 大数
HNOI2016 Day2 T3 大数 Description 小 B 有一个很大的数 S,长度达到了 N 位:这个数可以看成是一个串,它可能有前导 0,例如00009312345.小B还有一个素数P ...
- squid日志时间转换
squid日志时间是unix时间戳 不利于观看 python脚本进行转换 #!/usr/bin/env python #2014-6-5 pdd import re import time impor ...
- DirectX的引用找不到问题
今天要用C#开发(vs2010下)DirectSound应用,按照网上说得在: 但我系统里怎么也找不到,我确定安装了DirectX9.0SDK ,因为在C++里做的开发都好好的. 最后看到Dircet ...
- Spring mvc web 配置
Spring Framework本身没有Web功能, Spring MVC使用WebApplicationContext类扩展ApplicationContext ,使得拥有web功能.那么,Spri ...
- POJ 3617 Best Cow Line (贪心)
Best Cow Line Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16104 Accepted: 4 ...
- PHP之:PHP框架
ThinkPHP - 国内PHP框架 http://www.thinkphp.cn/. OneThink-基于tp框架开发的CMS (适于小项目) http://www.onethink.cn/. ...