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视图大部分是易于理解和使用的。因为他们是在创建数据库时自动创建的,你可以立即开始使用这些视图。
相关推荐
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。
-
Notre Dame对云端SQL Server性能基准的探索实践
确立SQL Server的性能基准,对于云端迁移来说是至关重要的第一步,一位来自于University of Notre Dame 的DBA表示,他正在试图通过数据库监控软件,找出SQL server的性能基准。
-
横向扩展SQL Server应用程序:提高工作负载的选项
SQL Server管理员面临的最大挑战之一就是扩展数据库以适应更为繁重的数据处理工作负载。然而事情越发复杂的是,虽然Microsoft提供了许多不同的SQL Server可扩展性选项,但它们并不都适合于每种情况。
-
五大技巧构建首个SQL Server容器
容器的世界庞大而复杂,使用者可能会感到困扰,这里我们将列出一些示例,以便引导您顺利完成SQL Server容器的创建和管理。