转自:http://blog.sina.com.cn/s/blog_515015800100evtc.html
转自:http://smiky.iteye.com/blog/624745
按照SQL标准的解释,在SQL环境下Catalog和Schema都属于抽象概念,可以把它们理解为一个容器或者数据库对象命名空间中的一个层次,主要用来解决命名冲突问题。从概念上说,一个数据库系统包含多个Catalog,每个Catalog又包含多个Schema,而每个Schema又包含多个数据库对象(表、视图、字段等),反过来讲一个数据库对象必然属于一个Schema,而该Schema又必然属于一个Catalog,这样我们就可以得到该数据库对象的完全限定名称从而解决命名冲突的问题了;例如数据库对象表的完全限定名称就可以表示为:Catalog名称.Schema名称.表名称。这里还有一点需要注意的是,SQL标准并不要求每个数据库对象的完全限定名称是唯一的,就象域名一样,如果喜欢的话,每个IP地址都可以拥有多个域名。
从实现的角度来看,各种数据库系统对Catalog和Schema的支持和实现方式千差万别,针对具体问题需要参考具体的产品说明书,比较简单而常用的实现方式是使用数据库名作为Catalog名,使用用户名作为Schema名,具体可参见下表:
供应商 |
Catalog支持 |
Schema支持 |
Oracle | 不支持 | Oracle User ID |
MySQL | 不支持 | 数据库名 |
MS SQL Server | 数据库名 | 对象属主名,2005版开始有变 |
DB2 | 指定数据库对象时,Catalog部分省略 | Catalog属主名 |
Sybase | 数据库名 | 数据库属主名 |
Informix | 不支持 | 不需要 |
PointBase | 不支持 | 数据库名 |
最后一点需要注意的是Schema这个单词,它在SQL环境下的含义与其在数据建模领域中的含义是完全不同的。在SQL环境下,Schema是一组相关的数据库对象的集合,Schema的名字为该组对象定义了一个命名空间,而在数据建模领域,Schema(模式)表示的是用形式语言描述的数据库的结构;简单来说,可以这样理解,数据建模所讲的Schema<也就是元数据>保存在SQL环境下相应Catalog中一个Schema<名叫DEFINITION_SCHEMA>下的表中,同时可以通过查询该Catalog中的另一个Schema<名叫INFORMATION_SCHEMA>下的视图而获取,具体细节不再赘述。
参考资料:
1. ISO/IEC 9075-2:2003 - Database Language SQL (SQL-2003)
2. Database-specific Catalog and Schema Considerations
3. What is a Schema in SQL Server 2005?
个人想法(与上面转的无关)
如在sqlserver中有个数据库叫hibernate,其下有张表test,就可以这们select * from hibernate.dbo.test1
这里的hibernate相当于catagory,dbo就是catagory
相关推荐
当我们谈论数据库的Catalog与Schema时,源码和工具的角色也很重要。数据库系统的源码中,会包含处理Catalog和Schema的模块,这些模块负责读取、更新和维护Catalog中的信息。开发者可以通过阅读这些源码来了解数据库...
备份与恢复是数据库管理中的核心环节,确保在系统故障、数据丢失或损坏时能够迅速恢复服务,保证业务连续性。以下是对Oracle数据库备份与恢复专题的详细解读: ### 第1章:使用exp&imp工具进行数据库备份及恢复 **...
- `db2 catalog tcpip node remote server ostype` 编目一个TCP/IP节点,允许连接到远程数据库服务器。 - `db2 uncatalog node` 取消节点编目,移除不再需要的节点信息。 2. **数据库目录**: - `db2 list ...
为了执行数据导出等操作,还需要建立与数据库的连接: - **db2 connect to**:用于建立到数据库的连接。 - 命令格式:`db2 connect to db_name user user_name using password` - 其中`db_name` 是数据库名字;`...
- `-m`: 只停止master实例,与 `gpstart -m` 对应使用。 - `-f`: 强制停止数据库,中断所有数据库连接并回滚正在运行的事务。适用于紧急情况下的安全关闭。 - `-u`: 不停止数据库,仅加载 `pg_hba.conf` 和 `...
1. **数据库模式(Schema)和数据库名称(Catalog)**:SQL Server中,`schema`和`catalog`的概念与MySQL中的数据库概念不同。在MySQL中,一个数据库就是一个包含多个表的集合,而在SQL Server中,`schema`可以理解...
- `getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate)`:返回表的索引信息,包括索引名、是否唯一、索引类型等。 4. **获取存储过程信息**: - `getProcedures...
在Java编程环境下,开发人员经常需要与数据库进行交互,以便实现各种业务逻辑。`DatabaseMetaData` 是Java数据库连接(JDBC)API的一部分,它提供了关于数据库模式、特性以及元数据的详细信息。本篇文章将深入探讨...
在C#中,ADO.NET库提供了一种标准的方式与各种数据库系统进行交互,例如SQL Server、MySQL等。我们可以通过SqlConnection类建立到SQL Server的连接。以下是一个基本的示例: ```csharp using System.Data.SqlClient...
首先,Catalog在MonetDB中扮演着至关重要的角色,它是数据库对象的元数据仓库,包含了关于数据库模式(schema)、表、列、索引、约束、函数以及事务等所有信息。`sql_catalog.h`文件中定义了各种数据结构,用于表示...
c#获取数据库中所有表名称的方法 在软件开发过程中,经常需要获取数据库中的所有表名称,以下总结了六种使用c#实现获取数据库中所有表名称的方法。 一、使用SQLDMO SQLDMO是操作SQL Server的理想方式,如果数据库...
查询数据库输入涉及到数据库的接口和API,这通常是指数据库管理系统提供的编程接口,允许应用程序与数据库交互,执行数据操作和管理任务。 #### 21. 查询约束? 查询约束可以帮助理解数据库中数据的完整性和一致性...
`@Table` 注解中可以包含 `schema` 和 `catalog` 属性来指定表所在的 schema 和 catalog。此外,还可以使用 `@UniqueConstraints` 来定义表的唯一约束。例如: ```java @Entity @Table(name="tbl_sky", ...
与有连接模式类似,首先需要创建数据库连接对象。 **2. 通过DataAdapter填充DataSet** `SqlDataAdapter`是一个桥接器,用于在数据库和DataSet之间传输数据。例如: ```csharp string selectCommand = "SELECT...
cursor.execute("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'database_name'") tables = cursor.fetchall() for table in tables: old_name = table[0] new_name = old_name....
- **恢复目录(catalog)数据库**:这是一个独立的数据库Schema,用于记录一个或多个目标数据库的RMAN活动。 ### 确定是否使用闪回恢复区(FRA) FRA是Oracle数据库备份和恢复中的一个关键特性,它具备许多优点。...
openGauss基本管理 ...每个数据库都有pg_catalog schema,它包含系统表、内置数据类型、函数、操作符。搜索路径(search_path)始终以pg_temp和pg_catalog这两个schema作为搜索路径顺序中的前两位。
例如,我们可以使用`sys.objects`(SQL Server)或`information_schema.tables`(大多数关系型数据库)来获取表的元数据。 ```csharp string query = "SELECT * FROM sys.objects WHERE type = 'U'"; SqlCommand ...
### 国产数据库达梦、神通与金仓的安装与使用教程 #### 概述 随着信息安全和国产化的推进,越来越多的企业开始采用国产数据库产品。本文档旨在介绍如何快速部署和使用三种主流的国产数据库——达梦、神通与金仓。...