SQL Server获取元数据所有方法和示例

时间:2022-07-25
本文章向大家介绍SQL Server获取元数据所有方法和示例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

SQL Server元数据

  • 什么是元数据?
  • 怎么获取元数据?
    • 使用系统存储过程
    • 使用系统函数
    • 使用系统表
    • 使用信息架构视图

什么是元数据?


元数据 (metadata) 最常见的定义为"有关数据的结构数据",或者再简单一点就是"关于数据的信息",日常生活中的图例、图书馆目录卡和名片等都可以看作是元数据。在关系型数据库管理系统 (DBMS) 中,元数据描述了数据的结构和意义。比如在管理、维护 SQL Server 或者是开发数据库应用程序的时候,我们经常要获取一些涉及到数据库架构的信息:某个数据库中的表和视图的个数以及名称 ;某个表或者视图中列的个数以及每一列的名称、数据类型、长度、精度、描述等。

怎么获取元数据?


示例数据库AdventureWorks2008:github下载地址

使用系统存储过程

元数据常用存储过程

系统存储过程

描述

sp_columns

返回指定表或视图的列的详细信息。

sp_databases

返回当前服务器上的所有数据库的基本信息。

sp_fkeys

若参数为带有主键的表,则返回包含指向该表的外键的所有表;若参数为带有外键的表名,则返回所有同过主键/外键关系与该外键相关联的所有表。

sp_pkeys

返回指定表的主键信息。

sp_server_info

返回当前服务器的各种特性及其对应取值。

sp_sproc_columns

返回指定存储过程的的输入、输出参数的信息。

sp_statistics

返回指定的表或索引视图上的所有索引以及统计的信息。

sp_stored_procedures

返回当前数据库的存储过程列表,包含系统存储过程。

sp_tables

返回当前数据库的所有表和视图,包含系统表。

示例

USE AdventureWorks2008
GO
execute sp_columns 'Person'
execute sp_tables

使用系统函数

元数据函数详细文档

系统函数

描述

COLUMNPROPERTY

返回有关列或过程参数的信息,如是否允许空值,是否为计算列等。

COL_LENGTH

返回指定数据库的指定属性值,如是否处于只读模式等。

DATABASEPROPERTYEX

返回指定数据库的指定选项或属性的当前设置,如数据库的状态、恢复模型等。

OBJECT_ID

返回指定数据库对象名的标识号

OBJECT_NAME

返回指定数据库对象标识号的对象名。

OBJECTPROPERTY

返回指定数据库对象标识号的有关信息,如是否为表,是否为约束等。

fn_listextendedproperty

返回数据库对象的扩展属性值,如对象描述、格式规则、输入掩码等。

示例

SELECT COLUMNPROPERTY( OBJECT_ID('Person.Contact'),'LastName','PRECISION')AS 'Column Length';
USE AdventureWorks2008
GO
IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 1
   PRINT 'UnitMeasure is a table.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 0
   PRINT 'UnitMeasure is not a table.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') IS NULL
   PRINT 'ERROR: UnitMeasure is not a valid object.';
GO

使用系统表

元数据常用系统表

系统表

描述

syscolumns

存储每个表和视图中的每一列的信息以及存储过程中的每个参数的信息。

syscomments

存储包含每个视图、规则、默认值、触发器、CHECK 约束、DEFAULT 约束和存储过程的原始 SQL 文本语句。

sysconstraints

存储当前数据库中每一个约束的基本信息。

sysdatabases

存储当前服务器上每一个数据库的基本信息。

sysindexes

存储当前数据库中的每个索引的信息。

sysobjects

存储数据库内的每个对象(约束、默认值、日志、规则、存储过程、用户表等)的基本信息。

sysreferences

存储所有包括 FOREIGN KEY 约束的列。

systypes

存储系统提供的每种数据类型和用户定义数据类型的详细信息。

示例

select * from sysobjects where OBJECT_NAME(ID)='Department';
select * from  sysdatabases;

使用信息架构视图

信息架构视图基于 SQL-92 标准中针对架构视图的定义,这些视图独立于系统表,提供了关于 SQL Server 元数据的内部视图。信息架构视图的最大优点是,即使我们对系统表进行了重要的修改,应用程序也可以正常地使用这些视图进行访问。因此对于应用程序来说,只要是符合 SQL-92 标准的数据库系统,使用信息架构视图总是可以正常工作的。

常用视图

视图

描述

INFORMATION_SCHEMA .CHECK_CONSTRAINTS

返回有关列或过程参数的信息,如是否允许空值,是否为计算列等。

INFORMATION_SCHEMA .COLUMNS

返回当前数据库中当前用户可以访问的所有列及其基本信息。

INFORMATION_SCHEMA .CONSTRAINT_COLUMN_USAGE

返回当前数据库中定义了约束的所有列及其约束名。

INFORMATION_SCHEMA .CONSTRAINT_TABLE_USAGE

返回当前数据库中定义了约束的所有表及其约束名。

INFORMATION_SCHEMA .KEY_COLUMN_USAGE

返回当前数据库中作为主键/外键约束的所有列。

INFORMATION_SCHEMA .SCHEMATA

返回当前用户具有权限的所有数据库及其基本信息。

INFORMATION_SCHEMA .TABLES

返回当前用户具有权限的当前数据库中的所有表或者视图及其基本信息。

INFORMATION_SCHEMA .VIEWS

返回当前数据库中的当前用户可

示例

select * from INFORMATION_SCHEMA .CHECK_CONSTRAINTS;
select * from INFORMATION_SCHEMA .TABLES

原创不易,请勿转载本不富裕的访问量雪上加霜 ) 博主首页:https://blog.csdn.net/qq_45034708