暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss每日一练第13天 | 学习心得体会

原创 zongzi 2022-12-08
812

学习目标
学习openGauss表的创建、搜索路径和访问方法等

课程学习
1.实验准备:
–创建表空间enmtbs、数据库enmdb、用户user1,并授予用户user1 SYSADMIN权限:
ae89a85927807798b6ecc3f88ad41fa.png
–以数据库用户user1的身份,连接到刚刚创建的数据库enmdb,创建enmschm1、enmschm2模式:
1ad467893a9b10a2c166b33d861f61b.png
2.创建表
默认情况下,在某个数据库上创建的数据库对象(本例是表testtable),都位于该数据库中的public模式中
–查看默认搜索路径:
af834ad2c81ef65e8de29bd41a9a769.png
–创建一个测试表testtable,并插入一条数据:
46805232388e74e2a176aaa3b827021.png
–查看当前数据库enmdb下的public模式有哪些表:
b76d01e6eba0ac304ec2f05be001340.png
3.在不同的模式(public和enmschm1),可以创建同名的表testtable
前面2的实验是在public模式下创建表testtable,下面是在模式enmschm1中创建同名的表testtable:
–执行下面的命令,查看当前的模式搜索顺序:
c3d34e8438cc770152294f69b76e702.png
–执行下面的命令,在会话级重新设置模式搜索路径为模式enmschm1,并查看当前的模式搜索顺序:
7288a19ed91dea5502618b2b1bddb30.png
–在数据库enmdb的模式enmschm1中创建表testtable:
7f8e95233835add3eab8fae5caeae89.png
4.为enmschm1模式下的testtable插入一条测试数据
由于当前的模式搜索顺序为模式enmschm1,因此不需要指定模式名,就可以为enmschm1.testtable插入新行。
e31d2616c3c24eeecbd9ab62abab08d.png
5.使用SchemaName.TableName的表标识方法访问表虽然当前模式搜索顺序没有模式enmschm2,但是我们仍然可以在模式enmschm2中创建表,方法是使用SchemaName.TableName的表标识方法,来指定在哪个模式下创建、插入、查询表。
–执行下面的命令,查看当前的模式搜索顺序,并执行下面的SQL语句,将在数据库enmdb的模式enmschm2中创建表testtable、testtable1、testtable2并插入数据:
5b20c2088c8e8e2db007e803fd2850e.png
a6b3369dd4f677647bd830d51c8e90f.png
–查看表中内容:
a6b3369dd4f677647bd830d51c8e90f.png
6.openGauss在一个用户连接到enmdb数据库时,可以访问不同模式中的表。
– 以数据库用户user1的身份,连接到数据库enmdb,查看不同模式下的表,9b369c58518993d6745655c2eb501d5.png
课程作业
1.创建一个表(默认,不指定模式),查看该表在那个模式下

create table test1(col varchar(100));
select table_catalog,table_schema,table_name,table_type from information_schema.tables where table_name='test1';

d54fa5b4d97f4005884368ca0c43a26.png
2.使用一个用户连接到enmdb数据库,测试该用户可以访问不同模式中的表

CREATE USER user2 IDENTIFIED BY 'kunpeng@1234';
ALTER USER user2  SYSADMIN;
\q
gsql -d enmdb   -U user2   -W kunpeng@1234 -r
select * from enmschm1.testtable;
select * from enmschm2.testtable;

1670493974888.png

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

SET SEARCH_PATH TO enmschm1;
create table test2(col1  char(100));
insert into enmschm1.test2 values('Hello from test IN SCHEMA enmschm1!');
select * from enmschm1.test2;

1670494304088.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论