Information Schema视图是SQL Server中访问元数据的几种方法之一。通过这个视图可以检索存储在数据库中的数据对象的元数据。例如,你可以使用Sql Server Information Schema视图访问表的详细信息,如列的数据类型,是否可为空、缺省值等。 Information Schema视图从SQL Server 2005开始支持,自动加入数据库中名叫Information_Schema的Schema,它是特别为视图而创建的。
Information Schema视图和Catalog View检索的内容有部分是相同的信息类型,但不是作为扩展信息。不过,Inform……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
Information Schema视图是SQL Server中访问元数据的几种方法之一。通过这个视图可以检索存储在数据库中的数据对象的元数据。例如,你可以使用Sql Server Information Schema视图访问表的详细信息,如列的数据类型,是否可为空、缺省值等。
Information Schema视图从SQL Server 2005开始支持,自动加入数据库中名叫Information_Schema的Schema,它是特别为视图而创建的。Information Schema视图和Catalog View检索的内容有部分是相同的信息类型,但不是作为扩展信息。不过,Information Schema视图与国际标准化组织ISO的协议是一致的。这意味着这个视图所用的命名惯例是与SQL标准一致的。如果你的应用代码是基于不同的SQL Server版本或者其他数据库管理系统的,那就使用Information Schema视图。
以下表列出视图所用的主要的ISO兼容对象的名字,以及这些名字与SQL Server中的对象之间的对应关系。
SQL standard object name | SQL Server object name |
catalog | database |
schema | schema |
object | object |
domain | user-defined data type |
你可以用SQL Server Information Schema视图来访问数据库对象的元数据,例如表,列,视图,参数,权限,约束和其他对象类型。为了访问这些信息,参考你或者其他用户定义的表或视图。例如,在以下Select语句中,我通过Columns Information Schema 视图查询特定列的信息。
USE AdventureWorks2008; GO SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Employee'; |
注意,我先改变当前数据库为AdventureWorks2008(本文中所有的例子都是用的SQL Server2008的本地实例中的这个样例数据库)。然后我用Select语句访问这个视图。在这个例子中,From从句中是我在访问的这个视图,就象访问一个表或任何其他视图一样。因为SQl Server Information Schema视图是在Information_schema中定义的,你必须要在视图名前面加上Schema的名字,就象这样写:INFORMATION_SCHEMA.COLUMNS
Schema和数据库名
你也能在视图和模式名中包括数据库名,这种情况就不必使用Use Database语句了。
上例中也在Select列表中列出了几个视图的列。你能参考SQL Server在线文档中检索这些特定的主题,找到视图中每个列的名字和描述。我也通过where从句,限制table_name=’employee’来限制返回的结果。以下结果也表明有select语句所返回的特定员工的数据。
COLUMN_NAME | DATA_TYPE | IS_NULLABLE | COLUMN_DEFAULT |
BusinessEntityID | int | NO | NULL |
NationalIDNumber | nvarchar | NO | NULL |
LoginID | nvarchar | NO | NULL |
OrganizationNode | hierarchyid | NO | NULL |
OrganizationLevel | smallint | NO | NULL |
JobTitle | nvarchar | NO | NULL |
BirthDate | date | NO | NULL |
MaritalStatus | nchar | NO | NULL |
Gender | nchar | NO | NULL |
HireDate | date | NO | NULL |
SalariedFlag | bit | NO | ((1)) |
VacationHours | smallint | NO | ((0)) |
SickLeaveHours | smallint | NO | ((0)) |
CurrentFlag | bit | NO | ((1)) |
rowguid | uniqueidentifier | NO | (newid()) |
ModifiedDate | datetime | NO | (getdate()) |
你能很容易通过任何其他information Schema视图检索元数据。例如,在以下Select语句中,我使用tables视图来检索HumanResource 模式下的每个表的类型和名字。
USE AdventureWorks2008; GO SELECT TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'HumanResources'; |
再者,我先确保AdventureWorks2008是当前数据库。在Select语句中,我在select列表中指定了TABLE_NAME和Table_type列,在from从句中使用表的Information Schema 视图(带上INFORMATION_SCHEMA模式名),然后在where从句中限制搜索结果。如下结果表明,HumanResources模式中包括基本表和view。
TABLE_NAME | TABLE_TYPE |
Department | BASE TABLE |
Employee | BASE TABLE |
EmployeeDepartmentHistory | BASE TABLE |
EmployeePayHistory | BASE TABLE |
JobCandidate | BASE TABLE |
vEmployee | VIEW |
vEmployeeDepartment | VIEW |
vEmployeeDepartmentHistory | VIEW |
vJobCandidate | VIEW |
vJobCandidateEmployment | VIEW |
vJobCandidateEducation | VIEW |
Shift | BASE TABLE |
这都是在用Information Schema视图的例子。在Sql Server在线文档上,参考“Information Schema Views (Transact-SQL)”这个主题,你能找到sql server支持的视图的列表。除了描述视图所返回的列以外,这个主题提供了附加的信息,这对理解视图是很重要的。不过,Sql Server Information Schema视图大部分是易于理解和使用的。因为他们是在创建数据库时自动创建的,你可以立即开始使用这些视图。
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。