GBase 8c 创建和管理Schema (一)

GBase8c数据库允许用户通过schema进行数据隔离和组织,schema包含表和其他数据库对象,避免了同名对象冲突。用户可以创建、使用、删除schema,并设置搜索路径进行权限控制。系统在新建用户时会自动在当前数据库为用户创建schema,但其他数据库需手动创建。搜索路径决定了未指定schema时对象的查找顺序,pg_catalog schema始终在搜索路径中具有高优先级。

背景信息

schema又称作模式。通过管理schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的schema下而不引起冲突。 管理schema包括:创建schema、使用schema、删除schema、设置schema的搜索路径以及schema的权限控制。

注意事项

  1. GBase 8c包含一个或多个已命名数据库。用户和用户组在GBase 8c范围内是共享的,但是其数据并不共享。任何与服务器连接的用户都只能访问连接请求里声明的那个数据库。
  2. 一个数据库可以包含一个或多个已命名的schema,schema又包含表及其他数据库对象,包括数据类型、函数、操作符等。同一对象名可以在不同的schema中使用而不会引起冲突。例如,schema1和schema2都可以包含一个名为mytable的 表。
  3. 和数据库不同,schema不是严格分离的。用户根据其对schema的权限,可以访问所连接数据库的schema中的对象。进行schema权限管理首先需要对数据库的权限控制进行了解。
  4. 不能创建以PG_为前缀的schema名,该类schema为数据库系统预留的。
  5. 在每次创建新用户时,系统会在当前登录的数据库中为新用户创建一个同名Schema。对于其他数据库,若需要同名Schema,则需要用户手动创建。
  6. 通过未修饰的表名(名称中只含有表名,没有“schema名”)引用表时,系统会通过search_path(搜索路径)来判断该表是哪个schema下的表。pg_temp和pg_catalog始终会作为搜索路径顺序中的前两位,无论二者是否出现在search_path中,或者出现在search_path中的任何位置。search_path(搜索路 径)是一个schema名列表,在其中找到的第一个表就是目标表,如果没有找到则报错。(某个表即使存在,如果它的schema不在search_path中,依然会查找失败)在搜索路径中的第一个schema叫做"当前schema"。它是搜索时查询的第一 个schema,同时在没有声明schema名时,新创建的数据库对象会默认存放在该schema下。
  7. 每个数据库都包含一个pg_catalog schema,它包含系统表和所有内置数据类型、函数、操作符。pg_catalog是搜索路径中的一部分,始终在临时表所属的模式后面,并在search_path中所有模式的前面,即具有第二搜索优先级。这样确保可以搜索到数据库内置对象。如果用户需要使用和系统内置对象重名的自定义对象时,可以在操作自定义对象时带上自己的模式。
### 创建管理视图的教程 在 openGauss 数据库中,视图是种虚拟表,其内容由查询定义。创建管理视图的过程包括创建视图、查询视图、查看视图的具体信息以及删除视图等操作。 #### 1. 创建视图 创建视图可以通过 `CREATE VIEW` 或 `CREATE OR REPLACE VIEW` 命令实现。以下是个示例命令[^3]: ```sql CREATE OR REPLACE VIEW MyView AS SELECT * FROM tpcds.web_returns WHERE trunc(wr_refunded_cash) > 10000; ``` 此命令将创建个名为 `MyView` 的视图,该视图从 `tpcds.web_returns` 表中选择所有退款金额大于 10000 的记录[^3]。 #### 2. 查询视图 查询视图与查询普通表类似。可以使用 `SELECT` 语句直接查询视图的内容。例如: ```sql SELECT * FROM MyView; ``` 这将返回视图 `MyView` 中的所有数据[^1]。 #### 3. 查看视图的具体信息 要查看视图的具体定义或相关信息,可以使用系统表或元数据查询。例如,通过查询 `pg_views` 系统视图可以获取视图的定义信息: ```sql SELECT viewname, definition FROM pg_views WHERE schemaname = 'public' AND viewname = 'myview'; ``` 上述命令将返回视图 `MyView` 的定义语句。 #### 4. 删除视图 如果不再需要某个视图,可以使用 `DROP VIEW` 命令将其删除。例如: ```sql DROP VIEW MyView; ``` 执行此命令后,视图 `MyView` 将被删除[^2]。 #### 注意事项 - 在创建视图时,确保基础表的数据完整性,因为视图依赖于这些基础表。 - 如果基础表被修改或删除,可能会影响视图的正常运行。 - 使用 `CREATE OR REPLACE VIEW` 时需谨慎,因为它会覆盖已存在的视图定义[^3]。 ### 示例代码块 以下是个完整的示例,展示如何在 openGauss 数据库创建、查询删除视图: ```sql -- 创建视图 CREATE OR REPLACE VIEW MyView AS SELECT * FROM tpcds.web_returns WHERE trunc(wr_refunded_cash) > 10000; -- 查询视图 SELECT * FROM MyView; -- 查看视图定义 SELECT viewname, definition FROM pg_views WHERE schemaname = 'public' AND viewname = 'myview'; -- 删除视图 DROP VIEW MyView; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值