SQLServer中获取所有数据库名所有表名 描述所有字段名的SQL语句
Posted Tozhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLServer中获取所有数据库名所有表名 描述所有字段名的SQL语句相关的知识,希望对你有一定的参考价值。
原文:https://www.cnblogs.com/qianjinyan/p/9636535.html
----1. 获取所有的数据库名----- SELECT NAME FROM MASTER.DBO.SYSDATABASES ORDER BY NAME -----2. 获取所有的表名------ SELECT NAME FROM SYSOBJECTS WHERE XTYPE=\'U\' ORDER BY NAME --XTYPE=\'U\':表示所有用户表; --XTYPE=\'S\':表示所有系统表; SELECT NAME FROM SYSOBJECTS WHERE TYPE = \'U\' AND SYSSTAT = \'83\' ----注意:一般情况只需要TYPE = \'U\',但有时候会有系统表混在其中(不知道什么原因),加上后面一句后就能删除这些系统表了。 ----3.获取所有字段名----- SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID(\'BCUSTOMER\'); SELECT SYSCOLUMNS.NAME,SYSTYPES.NAME,SYSCOLUMNS.ISNULLABLE,SYSCOLUMNS.LENGTHFROM SYSCOLUMNS, SYSTYPES WHERE SYSCOLUMNS.XUSERTYPE = SYSTYPES.XUSERTYPE AND SYSCOLUMNS.ID = OBJECT_ID(\'BCUSTOMER\'); /*注意点: ----(A)这里为了重点突出某些重要内容,选取了其中几项信息输出。 (B)SYSCOLUMNS表中只含有数据类型编号,要获取完整的名字需要从SYSTYPES表中找,一般用户使用的数据类型用XUSERTYPE对应比较好,不会出现一对多的情况。 (C)SYSCOLUMNS.LENGTH得到的是物理内存的长度,所以NVARCHAR和VARCHAR等类型在数据库中的显示是这个的一半。*/ ----4、得到表中主键所包含的列名------ SELECT SYSCOLUMNS.NAME ,SYSOBJECTS.XTYPE FROM SYSCOLUMNS,SYSOBJECTS,SYSINDEXES,SYSINDEXKEYS WHERE SYSCOLUMNS.ID = OBJECT_ID(\'BCUSTOMER\') 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=\'BCUSTOMER\'
select top 1000 ROW_NUMBER() OVER (ORDER BY a.name) AS No, a.name AS 表名, CONVERT(NVARCHAR(100),isnull(g.[value],\'-\')) AS 说明 from sys.tables a left join sys.extended_properties g on (a.object_id = g.major_id AND g.minor_id = 0)
以上是关于SQLServer中获取所有数据库名所有表名 描述所有字段名的SQL语句的主要内容,如果未能解决你的问题,请参考以下文章
SQLSERVER如何获取一个数据库中的所有表的名称一个表中所有字段的名称