SQLServer中获取所有数据库名、表名、字段名以及描述

1. 获取所有的数据库的信息

SELECT * FROM MASTER.DBO.SYSDATABASES

2. 获取所有数据表名

XTYPE

  • U 代表用户创建的表
  • S 代表系统表
SELECT * FROM sys.SYSOBJECTS WHERE XTYPE=‘U‘

3. 查看某表内的所有列

SELECT * FROM sys.SYSCOLUMNS WHERE ID IN (SELECT ID FROM sys.SYSOBJECTS WHERE XTYPE=‘U‘ AND NAME = ‘表名‘)

4. 查看某表内的所有列(包含描述)

SELECT * FROM sys.extended_properties
LEFT JOIN sys.SYSOBJECTS ON sys.SYSOBJECTS.id = sys.extended_properties.major_id
LEFT JOIN INFORMATION_SCHEMA.columns ON (INFORMATION_SCHEMA.columns.ORDINAL_POSITION = sys.extended_properties.minor_id AND INFORMATION_SCHEMA.columns.TABLE_NAME = sys.SYSOBJECTS.name)
WHERE major_id IN (SELECT ID FROM sys.SYSOBJECTS WHERE XTYPE=‘U‘ AND NAME = ‘表名‘) AND INFORMATION_SCHEMA.columns.TABLE_NAME is not null
-- 提取适当的列
SELECT
INFORMATION_SCHEMA.columns.TABLE_CATALOG AS 数据库名,
INFORMATION_SCHEMA.columns.TABLE_NAME AS 表名,
INFORMATION_SCHEMA.columns.COLUMN_NAME AS 列名,
INFORMATION_SCHEMA.columns.DATA_TYPE AS 数据类型,
INFORMATION_SCHEMA.columns.CHARACTER_MAXIMUM_LENGTH AS varchar长度,
sys.extended_properties.value AS 描述
FROM sys.extended_properties
LEFT JOIN sys.SYSOBJECTS ON sys.SYSOBJECTS.id = sys.extended_properties.major_id
LEFT JOIN INFORMATION_SCHEMA.columns ON (INFORMATION_SCHEMA.columns.ORDINAL_POSITION = sys.extended_properties.minor_id AND INFORMATION_SCHEMA.columns.TABLE_NAME = sys.SYSOBJECTS.name)
WHERE major_id IN (SELECT ID FROM sys.SYSOBJECTS WHERE XTYPE=‘U‘ AND NAME = ‘表名‘) AND INFORMATION_SCHEMA.columns.TABLE_NAME is not null

5.  获取数据库中所有的表(包含描述)

SELECT * FROM sys.extended_properties
LEFT JOIN sys.SYSOBJECTS ON sys.SYSOBJECTS.id = sys.extended_properties.major_id
LEFT JOIN INFORMATION_SCHEMA.columns ON (INFORMATION_SCHEMA.columns.ORDINAL_POSITION = sys.extended_properties.minor_id AND INFORMATION_SCHEMA.columns.TABLE_NAME = sys.SYSOBJECTS.name)
WHERE major_id IN (SELECT ID FROM sys.SYSOBJECTS WHERE XTYPE=‘U‘) AND INFORMATION_SCHEMA.columns.TABLE_NAME is null
-- 提取适当的列
SELECT
INFORMATION_SCHEMA.columns.TABLE_CATALOG AS 数据库名,
sys.SYSOBJECTS.name AS 表名,
INFORMATION_SCHEMA.columns.COLUMN_NAME AS 列名,
INFORMATION_SCHEMA.columns.DATA_TYPE AS 数据类型,
INFORMATION_SCHEMA.columns.CHARACTER_MAXIMUM_LENGTH AS varchar长度,
sys.extended_properties.value AS 描述
FROM sys.extended_properties
LEFT JOIN sys.SYSOBJECTS ON sys.SYSOBJECTS.id = sys.extended_properties.major_id
LEFT JOIN INFORMATION_SCHEMA.columns ON (INFORMATION_SCHEMA.columns.ORDINAL_POSITION = sys.extended_properties.minor_id AND INFORMATION_SCHEMA.columns.TABLE_NAME = sys.SYSOBJECTS.name)
WHERE major_id IN (SELECT ID FROM sys.SYSOBJECTS WHERE XTYPE=‘U‘) AND INFORMATION_SCHEMA.columns.TABLE_NAME is null

原文地址:https://www.cnblogs.com/lang-lang/p/12327615.html

时间: 2024-11-05 23:31:26

SQLServer中获取所有数据库名、表名、字段名以及描述的相关文章

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

原文:SqlServer中获取所有数据库,所有表,所有字段 一.获取所有数据库 select * from master.dbo.SysDatabases 二.获取某个库中所有表 SELECT * FROM SysObjects Where XType='U' --XType='U':表示所有用户表; --XType='S':表示所有系统表; 三.获取某表中的字段,字段类型等 SELECT * FROM INFORMATION_SCHEMA.columns WHERE TABLE_NAME='C

获取sqlserver数据库中所有库、表、字段名的方法

1.获取所有数据库名: SELECT Name from Master..SysDatabases ORDER BY Name 2.获取所有表名: SELECT Name from DatabaseName..SysObjects Where XType='U' ORDER BY Name XType='U':表示所有用户表; XType='S':表示所有系统表; 3.获取所有字段名: SELECT Name from SysColumns WHERE id=Object_Id('TableNa

C#获取oracle数据库某表的列名和数据类型【转载】

C#获取oracle数据库某表的列名和数据类型的sql语句为: select column_name,data_type ,data_length,data_precision,data_scale from user_tab_columns [where table_name=表名] 关于此sql语句的说明: column_name:某表列名(varchar2(30)); data_type:某表列的数据类型(varchar2(106)); data_length:某表列的长度(number)

postgress数据库 出现大写字母 字段名但是提示说不存在

select BSK001 from dbdata 报错: column "bsk001" of relation "dbdata" does not exist. 原因是数据库中字段名为BSK001,而sql语句中将大写字母自动转为小写; 也就是select BSK001 from dbdata与select bsk001 from dbdata是一样的; 难道postgress数据库遇到大写的字段名就无法操作绿吗? select "BSK001&quo

查询MySQL数据表的字段名和表结构

查询表的字段: -- 查询表的字段名 SELECT COLUMN_NAME -- GROUP_CONCAT('a.', COLUMN_NAME) AS COLUMN_NAME -- 加表别名并用逗号连接 FROM information_schema. COLUMNS WHERE TABLE_SCHEMA = 'hera' -- 数据库名 AND TABLE_NAME = 'tbn_car' -- 表名 ; 查询表结构: -- 查询表结构 SELECT TABLE_NAME AS '表名', C

SqlServer中的系统数据库

SqlServer中的系统数据库有五个,平时写代码不太关注,今天一时兴起研究了一下. 1. master 记录SQL Server系统的所有系统级信息,例如:登陆账户信息.链接服务器和系统配置设置.记录其他所有数据库的存在.数据文件的位置.SQL Server的初始化信息等.如果master数据库不可用,则无法启动SQL Server. 2.msdb 用于SQL Server代理计划警报和作业.数据库定时执行某些操作.数据库邮件等. 3.model 用作SQL Server实例上创建的所有数据库

创建数据库一定要注意字段名不能是关键字!

创建数据库一定要注意字段名不能是关键字! 创建数据库一定要注意字段名不能是关键字!,布布扣,bubuko.com

Sqlserver中实现oralce 数据库的rownumber

引用自:http://cai555.javaeye.com/blog/466033 方法1: with temp as ( select row_number() over(order by cityID) as rownum,cityName from city ) select * from temp where rownum between 10 and 20 go 解释: 1 此方法把括号里的查询结果放到变量:temp 里面( 我也不确定是不是变量), 并用row_number() 函数

数据库,表,字段,类型等查询

--获取所有数据库名 SELECT Name FROM Master..SysDatabases ORDER BY Name --获取所有表名 XType='U':表示所有用户表; XType='S':表示所有系统表; SELECT Name FROM [GWI-Pay]..SysObjects Where XType='U' ORDER BY Name --获取表中的字段名 SELECT Name FROM SysColumns WHERE id=Object_Id('Order') --获取