元数据简介

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

  1. 某个数据库中的表和视图的个数以及名称 ;
  2. 某个表或者视图中列的个数以及每一列的名称、数据类型、长度、精度、描述等;
  3. 某个表上定义的约束;
  4. 某个表上定义的索引以及主键/外键的信息。

    信息架构视图基于 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 返回当前数据库中的当前用户可以访问的视图及其所有者、定义等信息。

由于这些信息架构都是以视图的方式存在的,因此我们可以很方便地获得并利用需要的信息。

所以很容易的利用数据库元数据信息实现ORM功能,下面是几个常用的SQL

//获取表的所有列
       public const string TABLE_COLUMN_SQL = " SELECT     TABLE_CATALOG AS [Database], TABLE_SCHEMA AS Owner, TABLE_NAME AS TableName, COLUMN_NAME AS ColumnName,  " +
                          "ORDINAL_POSITION AS OrdinalPosition, COLUMN_DEFAULT AS DefaultSetting, IS_NULLABLE AS IsNullable, DATA_TYPE AS DataType,  " +
                          "CHARACTER_MAXIMUM_LENGTH AS MaxLength, NUMERIC_PRECISION AS Precision, DATETIME_PRECISION AS DatePrecision " +
                           "FROM         INFORMATION_SCHEMA.COLUMNS " +
                           "WHERE     (TABLE_NAME = @tblName) ";

//获取表的所有存储过程和参数
         public const string SP_PARAM_SQL="SELECT     SPECIFIC_CATALOG AS [Database], SPECIFIC_SCHEMA AS Owner, SPECIFIC_NAME AS SPName, ORDINAL_POSITION AS OrdinalPosition,  " +
                       "PARAMETER_MODE AS ParamType, IS_RESULT AS IsResult, PARAMETER_NAME AS Name, DATA_TYPE AS DataType,  " +
                       "CHARACTER_MAXIMUM_LENGTH AS DataLength, REPLACE(PARAMETER_NAME, '@', '') AS CleanName " +
                       "FROM         INFORMATION_SCHEMA.PARAMETERS " +
                       "WHERE SPECIFIC_NAME=@spName";

//获取表的所有存储过程的Sql
         public const string SP_SQL = " SELECT     SPECIFIC_CATALOG AS [Database], SPECIFIC_SCHEMA AS Owner, SPECIFIC_NAME AS Name, ROUTINE_DEFINITION AS SQL, CREATED AS CreatedOn, " +
                          "LAST_ALTERED AS ModifiedOn " +
                          "FROM         INFORMATION_SCHEMA.ROUTINES " +
                           "WHERE     (SPECIFIC_NAME = @spName) ";

//获取表的所有存储过程 
      public const string TABLE_SQL = "SELECT     TABLE_CATALOG AS [Database], TABLE_SCHEMA AS Owner, TABLE_NAME AS Name, TABLE_TYPE "+
             "FROM         INFORMATION_SCHEMA.TABLES "+
                "WHERE     (TABLE_TYPE = 'BASE TABLE') AND (TABLE_NAME <> N'sysdiagrams') " +
             "AND TABLE_NAME=@tblName";

转载于:https://www.cnblogs.com/shanyou/archive/2006/10/28/dbmetadata.html

使用信息架构视图访问数据库元数据相关推荐

  1. 三层架构 android访问MSSQL数据库 程序 (服务器端)

    Delphi Xe5开始支持Android编程了.Delphi的春天终于来了! 我也是刚接触XE,以前一直都在用D7,一直都在等它支持Android今天终于等来了,可以开始做项目了,虽然XE还存在很多 ...

  2. android框架连接mysql_三层架构 android访问MSSQL数据库 程序 (服务器端)

    Delphi Xe5开始支持Android编程了.Delphi的春天终于来了! 我也是刚接触XE,以前一直都在用D7,一直都在等它支持Android今天终于等来了,可以开始做项目了,虽然XE还存在很多 ...

  3. 数据库架构设计——分布式数据库设计

    摘要 现在互联网应用已经普及,数据量不断增大.对淘宝.美团.百度等互联网业务来说,传统单实例数据库很难支撑其性能和存储的要求,所以分布式架构得到了很大发展.一定要认识到数据库技术正在经历一场较大的变革 ...

  4. mysql修改表的备注信息_修改mysql 数据库的 表的列的备注信息

    1 INFORMATION_SCHEMA提供了访问数据库元数据的方式. 元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等.有些时候用于表述该信息的其他术语包括"数据词典& ...

  5. mysql实验索引和视图_数据库实验报告 索引和视图

    数据库实验报告 索引和视图 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 1西北师范大学计算机科学与工程学院学生实验报告西北师范大 ...

  6. 浅析ado.net获取数据库元数据信息

    写这个文章源于早先对ADO.Net获取数据库元数据上的认识,去年我在阅读ADO.Net Core Reference的时候曾经注意过DataSet的FillSchema的这个方法.这方面,在我之前的随 ...

  7. 读取数据库信息构建视图字段的备注信息,方便程序代码生成

    在很多情况下,我们开发都需要有一个快速的代码生成工具用来提高开发效率,代码生成工具很多信息都是读取数据库的表.视图等元数据进行对象表信息的完善,有了这些信息,我们就可以在普通的实体类代码里面添加属性字 ...

  8. jdbc获取数据库元数据,获取数据库列表,获取数据库基本信息,获取指定数据库中的表信息,获取指定表中的字段信息

    jdbc获取数据库元数据 package cn.itcast.metadata.test;import org.junit.Before; import org.junit.Test;import j ...

  9. SparkSQL Catalog的作用和访问Hive元数据信息

    SparkSQL Catalog的作用: SparkSQL直接访问hive元数据信息,不再需要去mysql里的表里去查找 Spark 2.0中添加了标准的API(称为catalog)来访问Spark ...

  10. Oracle中如何记录访问数据库的登录信息?

    曾有同学问过,能不能知道都有谁登陆过Oracle数据库, 碰巧看到老杨的这篇历史文章<Oracle中如何记录访问数据库的登陆信息>,介绍了几种实现这个需求的方案,学习一下. 1. 有哪些审 ...

最新文章

  1. 树形选择排序的基本概念
  2. C#连接sqlserver数据库
  3. WDA将改变现有的abap的开发方式
  4. 《你必须知道的261个java语言问题》读书报告——第二弹
  5. ORA-01506: missing or illegal database name
  6. idea总结几个不错的插件
  7. mysql alert longtext_mysql数据类型介绍(含text,longtext,mediumtext说明)
  8. 服务器摆放需要预留U位么_这样的U型厨房,才是我向往的
  9. 前端开发 2018 回顾
  10. Wireshark初步入门
  11. c语言如何将字母向下移一格,c语言 如何将一个字符串的前n个字母后移至尾,其他的按顺序前移?...
  12. Android计算器界面布局
  13. 幼儿园观察记录的目的和目标_幼儿园教育活动内容实施中的观察与记录有何目的...
  14. 车牌识别算法介绍与实践
  15. 学计算机编程技校排名,学编程什么学校最好?
  16. 2020书单、影单、电视剧
  17. 第二届“中国制造(深圳)高峰论坛”举行
  18. lv6 网络编程(9)-网络编程扩展下
  19. Hive 不同存储格式表数据同步问题
  20. Tita OKR实施攻略

热门文章

  1. 昨天又发火了:领导拒不给他人安排工作
  2. 计算机员工工资管理系统源代码,C员工工资管理系统源代码.doc
  3. oracle注释 kole_t2u,oracle4
  4. python中tab的用法_详解Python中expandtabs()方法的使用
  5. ajax 微信code获取_ajax实现微信网页授权登录
  6. 大表join大表_阿里开发规范:超过三张表,禁止join骚操作
  7. 等比缩放公式_CVPR2019 | 旷视提出MetaSR:单一模型实现超分辨率任意缩放因子
  8. linux 测试网络端口通不通_能否使用一台矢量网络分析仪来控制多台 E5092A 以增加测试端口数?...
  9. android 广告字幕,Android编程实现类似天气预报图文字幕垂直滚动效果的方法
  10. oracle 修改sga参数,oracle 参数文件的修改,sga pga参数的修改