获取SQL数据库中的数据库名、所有表名、所有字段名、列描述

1.获取所有数据库名: 
   (1)、Select Name FROM Master.dbo.SysDatabases orDER BY Name 
2.获取所有表名: 
   (1)、Select Name FROM SysObjects Where XType='U' orDER BY Name 
           XType='U':表示所有用户表; 
           XType='S':表示所有系统表;

   (2)、SELECT name FROM sysobjects WHERE type = 'U' AND sysstat = '83'

           注意:一般情况只需要type = 'U',但有时候会有系统表混在其中(不知道什么原因),加上后面一句后就能删除这些系统表了

3.获取所有字段名: 
(1)、Select Name FROM SysColumns Where id=Object_Id('TableName')

(2)、SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND "syscolumns.id = object_id('tableName')

       注意点:
     (a)这里为了重点突出某些重要内容,选取了其中几项信息输出。
     (b)syscolumns表中只含有数据类型编号,要获取完整的名字需要从systypes表中找,一般用户使用的数据类型用xusertype对应比较好,不会出现一对多的情况。
     (c)syscolumns.length得到的是物理内存的长度,所以nvarchar和varchar等类型在数据库中的显示是这个的一半。

4、得到表中主键所包含的列名:

SELECT syscolumns.name FROM syscolumns,sysobjects,sysindexes,sysindexkeys WHERE syscolumns.id = object_id('tablename') AND sysobjects.xtype = 'PK' AND sysobjects.parent_obj = syscolumns.id AND sysindexes.id = syscolumns.id AND sysobjects.name = sysindexes.name AND sysindexkeys.id = syscolumns.id AND sysindexkeys.indid = sysindexes.indid AND syscolumns.colid = sysindexkeys.colid

注意:这是在4张系统表中寻找的,关系比较复杂,大致可以表示为:
syscolumns中存有表中的列信息和表id,sysobjects表中存有主键名字(即PK_Table类似)和表id,sysindexes中存有主键名字和表id和index编号,sysindexkeys中存有表id和index编号和列编号,一项一项对应起来后就能找到列名了,呼~

5、得到表中列的描述内容:

select a.name,g.value from syscolumns as a    left join sysproperties g   on a.id=g.id AND a.colid = g.smallid    where a.id='表id'

时间: 2024-10-18 13:43:08

获取SQL数据库中的数据库名、所有表名、所有字段名、列描述的相关文章

asp列出sql数据库中(PUBS数据库)存储过程及其例子

存储过程|数据|数据库 ---- 以下语句将列出数据库中(PUBS数据库)存贮过程 pubDatabase =oSQLServer.Databases("pubs")'oSQLServer是前面创建的SQL Server服务器对象For Each DBSP In pubDatabase.StoredProceduresResponse.Write DBSP.TextNext ---- 程序运行的结果(取数据表名): ---- 取存贮过程的结果: ---- 一个完整的小例子源码附后(其它

SQL Server中转换数据库的排序规则

本文定义了排序规则并介绍如何在 Microsoft SQL Server 中转换数据库的排序规则.有关 SQL Server 2000 的概念和讨论同样适用于 SQL Server 2005. 什么是排序规则? 排序规则指定了表示每个字符的位模式.它还指定了用于排序和比较字符的规则.排序规则具有下面的特征: ◆语言 ◆区分大小写 ◆区分重音 ◆区分假名 要了解服务器当前使用的排序规则,可以在 SQL 查询分析器中运行 sp_helpsort 系统过程. SQL Server 7.0 不支持使用多

如何将云端SQL Azure中的数据库备份到本地SQL Server

SQL Azure提供一系列的数据复制和同步机制.例如,本地的SQL Server数据库可以被发布到SQL Azure上:SQL Azure的数据库也可以被打包下载到本地SQL Server服务器上:您还可以通过数据同步服务(Data Sync Service)备份数据库,以及进行动态数据同步. 数据层应用程序 数据层应用程序(Data-Tier Application, DAC)封装了一个应用程序所用的所有数据库和实例对象,例如表.索引.视图.存储过程乃至用户等. 通过这个逻辑上的封装,开发者

《SQL Server企业级平台管理实践》读书笔记——SQL Server中收缩数据库不好用的原因

原文:<SQL Server企业级平台管理实践>读书笔记--SQL Server中收缩数据库不好用的原因 数据库管理员有时候需要控制文件的大小,可能选择收缩文件,或者把某些数据文件情况以便从数据库里删除. 这时候我们就要使用到DBCC SHRINKFILE命令,此命令的脚本为: DBCC SHRINKFILE ( { file_name | file_id } { [ , EMPTYFILE ] | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATE

使用Transact-SQL在SQL Server中创建数据库对象

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   Adventure Works Cycles 的数据仓库中有几个非常大的表.为改善此数据的存储,您决定对几个跨文件组的表进行分区.这样您就可以控制基础磁盘存储. 先决条件 在开始此实验之前,您必须: 使用 Transact-SQL 在 Microsoft® SQL Server® 数据库中创建数据库对象的经验. 实验设置 实验场景 Adventure Works

在SQL SERVER中查询数据库中第几条至第几条之间的数据SQL语句写法_数据库其它

今天在写程序的时候,需要生成从开始id到结束id的sql语句.原来不需要这个功能现在就需要了. 在SQL SERVER中查询数据库中第几条至第几条之间的数据SQL语句如何写? 如:在SQL SERVER中查询数据库中第10条至30条之间的数据SQL语句如何写? ------解决方案-------------------- select top 20 * from 表 where id in (select top 30 id from 表 order by id)order by id desc

jtable显示数据库中的数据,为什么数据显示不完全,第一列列名也没有

问题描述 jtable显示数据库中的数据,为什么数据显示不完全,第一列列名也没有 10C 解决方案 用JTable显示数据库数据将数据库中的数据显示到JTable上将Excel中的数据在JTable中显示 解决方案二: 你for循环写的从1开始的..

如何取得一个表的所有字段名用逗号分割_数据库其它

自从 Oracle 9i 开始,就可以通过SYS_CONNECT_BY_PATH 函数实现将从父节点到当前行内容以"path"或者层次元素列表的形式显示出来. 取得一个表的所有字段名,用逗号分割. select max(substr(SYS_CONNECT_BY_PATH(COLUMN_NAME, ','),2)) col from (select COLUMN_NAME,column_id from user_tab_columns where table_name='&表名

基于SQL Server中如何比较两个表的各组数据 图解说明_MsSql

开始 前一阵子,在项目中碰到这样一个SQL查询需求,有两个相同结构的表(table_left & table_right),如下: 图1. 检查表table_left的各组(groupId),是否在表table_right中存在有一组(groupId)数据(data)与它的数据(data)完全相等. 如图1. 可以看出表table_left和table_right存在两组数据完整相等: 图2. 分析 从上面的两个表,可以知道它们存放的是一组一组的数据:那么,接下来我借助数学集合的列举法和运算进行

如何从SQL SERVER中恢复被删除的表?

问题描述 如何从SQL SERVER中恢复被删除的表?这表中的数据能不能一起恢复? 解决方案 恢复被删除的表可以使用SQL数据恢复软件log explorer for sql server来恢复,表中的数据可以一起恢复.具体的可以看一下这篇.http://www.wuguoqiang.com/j_note_detail.asp?id=24解决方案二:删表之前最后先备份下"create table temp as(select * from tableName)"