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
- 数字在排序数组中出现的次数
- 基于Dubbo的http自动测试工具分享
- 传统媒体要用大数据连接用户
- bootstrap源码分析之form、navbar
- Spark监控官方文档学习笔记
- Bootstrap源码分析之nav、collapse
- Maven打包排除某个资源或者目录
- c/c++ 宏中"#"和"##"的用法
- 源码中的哲学——通过构建者模式创建SparkSession
- 长连接和短连接分析
- 基于编辑距离来判断词语相似度方法(scala版)
- 运算符优先级
- 腾讯云联手腾讯安全玄武实验室,提供「应用克隆」漏洞免费检测服务
- 1.注册或登录页面设计:UILabel,UIButton,UITextField
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解