09
2023
03
09:29:53

MSSQL查看数据库中所有表的名字、字段名称

------查找表中的所有列

select COLUMN_NAME from INFORMATION_SCHEMA.Columns 

where table_name='表' and TABLE_CATALOG='数据库名';


COLUMN_NAME //列名 



------查找所有用户表名

Select Name FROM SysObjects Where XType='U' and name like 'Z_%' order BY Name


----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'




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/3709.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: