获取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 ))+ ')' )) ) )) + ')' )) ) )) ...
随机推荐
- jquery-jsrender使用
JsRender是一款基于jQuery的JavaScript模版引擎 特点: · 简单直观 · 功能强大 · 可扩展的 · 快如闪电 jsrender使用比较简单,本文简单结束一些常用的 使用过程 ...
- oracle 11g 新特性UTL_TCP、UTL_HTTP 和 UTL_SMTP程序包发邮件
首先,创建一个 ACL: begindbms_network_acl_admin.create_acl (acl => 'utlpkg.xml', ---创建的访问控制列 ...
- 【BZOJ-3626】LCA 树链剖分
3626: [LNOI2014]LCA Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1428 Solved: 526[Submit][Status ...
- springMVC-配置Bean
配置Bean - 配置形式:基于xml文件方式,基于注解的方式- bean的配置方式:通过全类名(反射),通过工厂方法(静态工厂方法和实例工厂方法),FactoryBean依赖注入的方方式,属性注入和 ...
- PowerShell控制台快捷键
按键 功能 ← 光标向左移动一个字符 Ctrl + ← 光标向左移动一个单词 → 光标向右移动一个字符 Ctrl + → 光标向右移动一个单词 Home键 光标移动到行首 End键 光标移动到行尾 D ...
- wpf添加超链接
前段: <TextBlock Margin="69,93,859,10"> <Hyperlink NavigateUri="http://dmsite. ...
- 微信小程序一步步搭建商城系列-01-开篇
1.小程序介绍 小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用.也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题.应用将无处不 ...
- 降低磁盘IO使Oracle性能优化(转)
文章转自:http://blog.chinaunix.net/uid-26813519-id-3207996.html 硬件方面虽然只占Oracle性能优化的一个方面(另一方面是软件),但是仍不可忽视 ...
- HTTP 长连接和短连接
1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问 ...
- C#变量类型
在C#语言中,我们把变量分为七种类型,它们分别是:静态变量(static varibles),非静态变量(instance variables),数组元素(array elements),值参数(va ...