----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.XTYPEFROM SYSColUMNS,SYSOBJECTS,SYSINDEXES,SYSINDEXKEYSWHERE 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‘
----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
WHERE SYSColUMNS.XUSERTYPE = SYSTYPES.XUSERTYPE AND SYSColUMNS.ID = OBJECT_ID(‘BCUSTOMER‘);
/*注意点:
----(A)这里为了重点突出某些重要内容,选取了其中几项信息输出。
(B)SYSColUMNS表中只含有数据类型编号,要获取完整的名字需要从SYSTYPES表中找,一般用户使用的数据类型用XUSERTYPE对应比较好,不会出现一对多的情况。
(C)SYSColUMNS.LENGTH得到的是物理内存的长度,所以NVARCHAR和VARCHAR等类型在数据库中的显示是这个的一半。*/
----4、得到表中主键所包含的列名------
FROM SYSColUMNS,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‘
总结以上是内存溢出为你收集整理的SQLServer中获取所有数据库名、所有表名、所有字段名的SQL语句全部内容,希望文章能够帮你解决SQLServer中获取所有数据库名、所有表名、所有字段名的SQL语句所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)