目录
- 介绍
- 目录视图
- 获取表和架构名称
- 获取列信息
- 信息架构视图
- 获取表信息
- 获取列信息
- 系统存储过程和函数
- 获取对象列表
- 获取对象详细信息
- 获取约束信息
- 获取数据库属性信息
- 总结
- 引用
介绍
在 SQL 数据库管理中,获取数据库对象的元数据信息是至关重要的。元数据提供了关于数据库结构和内容的详细信息,包括表、列、索引、约束等。本文将介绍获取 SQL 数据库对象元数据信息的工具和方法,包括目录视图、信息架构视图以及系统存储过程和函数。
目录视图
目录视图提供了关于数据库中各对象的详细信息,包括 SQL 特定信息。以下是一些常用的目录视图及其使用方法。
获取表和架构名称
可以使用 sys.tables
视图获取数据库中所有表的名称及其架构名称。
SELECT
SCHEMA_NAME(schema_id) AS TABLE_SCHEMA_NAME,
name AS TABLE_NAME
FROM sys.tables;
输出示例:
TABLE_SCHEMA_NAME TABLE_NAME
dbo T1
获取列信息
可以使用 sys.columns
视图获取特定表的列信息。
SELECT
name,
TYPE_NAME(system_type_id) AS DATA_TYPE,
max_length,
collation_name,
is_nullable
FROM sys.columns
WHERE object_id = OBJECT_ID(N'Sales.Orders');
输出示例:
name DATA_TYPE max_length collation_name is_nullable
shipname nvarchar 80 Chinese_PRC_CI_AS 0
信息架构视图
信息架构视图是 ANSI SQL 标准定义的视图,提供了关于数据库对象的标准化信息。
获取表信息
可以使用 information_schema.TABLES
视图获取数据库中所有基本表的信息。
SELECT TABLE_SCHEMA, TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_TYPE = N'BASE TABLE';
获取列信息
可以使用 information_schema.COLUMNS
视图获取特定表的列信息。
SELECT
COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, COLLATION_NAME, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = N'Sales' AND TABLE_NAME = N'Orders';
输出示例:
COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH COLLATION_NAME IS_NULLABLE
shipname nvarchar 40 Chinese_PRC_CI_AS NO
系统存储过程和函数
SQL Server 提供了系统存储过程和函数,用于获取数据库对象的详细信息。
获取对象列表
可以使用 sp_tables
存储过程获取当前数据库中可以查询的对象列表。
EXEC sys.sp_tables;
输出示例:
TABLE_QUALIFIER TABLE_OWNER TABLE_NAME TABLE_TYPE REMARKS
TSQLFundamentals2008 dbo nums TABLE NULL
获取对象详细信息
可以使用 sp_help
存储过程获取特定对象的详细信息。
EXEC sys.sp_help @objname = N'Sales.Orders';
获取约束信息
可以使用 sp_helpconstraint
存储过程获取特定表的约束信息。
EXEC sys.sp_helpconstraint @objname = N'Sales.Orders';
获取数据库属性信息
可以使用以下函数获取数据库和对象的特定属性信息。
-- 返回数据库实例的产品级别
SELECT SERVERPROPERTY('ProductLevel'); -- RTM
-- 返回指定数据库的排序规则
SELECT DATABASEPROPERTYEX(N'TSQLFundamentals2008', 'collation'); -- Chinese_PRC_CI_AS
-- 返回表是否具有主键
SELECT OBJECTPROPERTY(OBJECT_ID(N'Sales.Orders'), 'TableHasPrimaryKey'); -- 1
-- 返回指定列的属性信息
SELECT COLUMNPROPERTY(OBJECT_ID(N'Sales.Orders'), N'shipcountry', 'AllowsNull'); -- 1
总结
本文介绍获取 SQL 数据库对象元数据信息的工具和方法,包括目录视图、信息架构视图以及系统存储过程和函数。
引用
- Microsoft Docs: Catalog Views
- Microsoft Docs: Information Schema Views
- Microsoft Docs: System Stored Procedures