前言:
最近参加了由opengauss、墨天轮、鲲鹏社区一起推出的活动《每日一练 opengauss 3.0.0 数据库在线实训课程》,共21天,墨天轮提供实操环境,特此记录学习笔记。
活动详情:https://www.modb.pro/db/551619
主题:
学习openGauss表的创建、搜索路径和访问方法等
学习笔记
第13天:表管理1
先来看看表的概念:
表(Table)
表是由行与列组合成的,是数据库中用来存储数据的对象,是整个数据库系统的基础。
每张表只能属于一个数据库,也只能对应到一个表空间。每张表对应的数据文件必须在同一个表空间中。
1.实验环境准备
创建表空间enmtbs、数据库enmdb、用户user1,并授予用户user1 SYSADMIN权限:

以数据库用户user1的身份,连接到刚刚创建的数据库enmdb,创建enmschm1、enmschm2模式

2.创建表
还是一样,不知道语法的时候可以查看帮助:

默认情况下,在某个数据库上创建的数据库对象(本例是表testtable),都位于该数据库中的public模式中.

3.不同模式可以创建同名的表

4.根据模式名创建表
可以使用SchemaName.TableName的表标识方法访问表
我们可以非当前模式的模式下去在另外的模式中创建对象,方法是使用SchemaName.TableName的表标识方法,来指定在哪个模式下创建、插入、查询表。


5.根据模式名去访问表
openGauss在一个用户连接到enmdb数据库时,可以访问不同模式中的表

课程作业:
1.创建一个表(默认,不指定模式),查看该表在那个模式下(我之前在数据库级别设置过默认模式,所以不是public)

2.使用一个用户连接到enmdb数据库,测试该用户可以访问不同模式中的表(我测试环境mydb1,就不重新创建了)

3.在会话级设置模式搜索路径为:模式enmschm1,使用SchemaName.TableName的表标识方法访问表(创建表、插入数据和查询表中数据)

总结:
在同一个数据库中,我们可以通过模式来隔离对象。
需要访问不同模式的时候,需要使用SchemaName.TableName的表标识方法。




