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

  

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

SQLServer中获取所有数据库名、所有表名、所有字段名的SQL语句的更多相关文章

  1. SqlServer中获取所有数据库,所有表,所有字段

    原文:SqlServer中获取所有数据库,所有表,所有字段 一.获取所有数据库 select * from master.dbo.SysDatabases 二.获取某个库中所有表 SELECT * F ...

  2. 点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...

  3. mybatis中当实体类的字段名和表结构中的字段名不一致的时候的处理

    1.在sql语句中使用列的别名 比如:select order_id id,orderNo orderno ,order_price price from order where order_id = ...

  4. Sqlserver获取所有数据库名,表信息,字段信息,主键信息,以及表结构等。

    --获取所有数据库名: SELECT name FROM master..sysdatabases WHERE name NOT IN ( 'master', 'model', 'msdb', 'te ...

  5. Oracle中使用游标获取指定数据表的所有字段名对应的字符串

    操作步骤:打开PLSQL Developer后,直接执行下面的语句就可以出来 --Oracle中使用游标获取指定数据表的所有字段名对应的字符串 declare mytablename VARCHAR( ...

  6. C# 如何获取SQL Server 中指定数据表的所有字段名和字段类型

    如何获取指定数据表的所有字段名和字段类型.SqlConnection.GetSchema方法有2个重载形式,获取指定数据表的所有字段名和字段类型的秘密就在GetSchema (String, Stri ...

  7. sql获取数据库的所有表以及名称字段

    获取数据库中所有的表 SELECT SysObjects.name AS Tablename FROM sysobjects WHERE xtype = 'U' 获取数据库中所有表的列名 SELECT ...

  8. SQLSERVER中如何快速比较两张表的不一样

    SQLSERVER中如何快速比较两张表的不一样 不知不觉要写2014年的最后一篇博文了~ 一般来说,如何检测两张表的内容是否一致,体现在复制的时候发布端和订阅端的两端的数据上面 我这里罗列了一些如何从 ...

  9. SqlServer中的系统数据库

    SqlServer中的系统数据库有五个,平时写代码不太关注,今天一时兴起研究了一下. 1. master 记录SQL Server系统的所有系统级信息,例如:登陆账户信息.链接服务器和系统配置设置.记 ...

随机推荐

  1. 安恒X计划12月月赛

    ezweb 主要是序列化问题.没有PHP环境,在线运行的.实例化对象之后修改一下file.然后echo输出序列化的结果.不过下面有一个正则检查.数字前加一个+,影响了正则的匹配,但是对于序列化的还原没 ...

  2. [LeetCode] 429. N-ary Tree Level Order Traversal_ Easy

    Given an n-ary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  3. [Leetcode] 49. Group Anagrams_Medium

    Given an array of strings, group anagrams together. Example: Input: ["eat", "tea" ...

  4. Vue项目使用AES做加密

    1.先在vue项目中安装crypto-js 2.在项目中新建一个utils.js文件 3.utils.js文件中的内容 /** * 工具类 */ import Vue from 'vue' impor ...

  5. BufferedImage操作图片笔记(转)

    BufferedImage是Image的一个子类,BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片,通常用来做图片修改操作如大小变换.图片变灰. ...

  6. Java Nested Classes(内部类~第一篇英文技术文档翻译)

    鄙人最近尝试着翻译了自己的第一篇英文技术文档.Java Nested Classes Reference From Oracle Documentation 目录 嵌套类-Nested Classes ...

  7. Baidu 推荐技术平台(offer)

    一面: 1 自我介绍 项目介绍. 2 RNN 原理,LSTM原理,GBDT原理,XGB与GBDT的改进. 3 多模匹配,字典树,链表环找入口. 4 c++ static 关键字 5 多线程,线程安全 ...

  8. SQL Server 运行状况监控SQL语句

    Microsoft SQL Server 2005 提供了一些工具来监控数据库.方法之一是动态管理视图.动态管理视图 (DMV) 和动态管理函数 (DMF) 返回的服务器状态信息可用于监控服务器实例的 ...

  9. 基于Axis1.4的webservice接口开发(代码开发)

    基于Axis1.4的webservice接口开发(代码开发) 一.开发环境: 我的开发环境是MyEclipse 2015+Apache-Tomcat-8.0.21. 二.代码开发: 1.新建一个Web ...

  10. AppiumDriverLocalService 启动appium控制台不显示日志以及把日志保存到本地

    import java.io.File; import java.io.OutputStream; import java.lang.reflect.Field; import java.util.A ...