SELECT name,
type_desc
FROM AdventureWorks2012_Data.sys.tablesORDERBY Name
----1. 获取所有的数据库名-----SELECT NAME FROM MASTER.DBO.SYSDATABASES ORDERBY NAME
-----2. 获取所有的表名------SELECT NAME FROM SYSOBJECTS WHERE XTYPE='U'ORDERBY NAME
--XTYPE='U':表示所有用户表;--XTYPE='S':表示所有系统表;SELECT NAME FROM SYSOBJECTS WHERETYPE='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.VALUEFROM SYSCOLUMNS AS A
LEFTJOIN SYSPROPERTIES G
ON A.ID=G.ID
AND A.COLID = G.SMALLID
WHERE A.ID='BCUSTOMER'
*查看sql server中所有数据库的名称
SELECT name FROM SysDatabases ORDERBY Name;*查询指定数据库中所有的表名
SELECT Name FROM'库名'..SysObjects Where XType='U'ORDERBY Name;*查看指定表中的字段名及字段类型
SELECT TABLE_CATALOG, TABLE_NAME,COLUMN_NAME,DATA_TYPE from'数据库名'.information_schema.columnswhere TABLE_NAME ='表名';