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

openGauss每日一练第13天 | 表管理

原创 田灬禾 2022-12-07
238

打卡第十三天,表管理

学习表创建在不同的模式下及设置搜索路径和访问方法。

search_path参数的默认值为:"$user",public。$user表示与当前会话用户名同名的Schema名,如果这样的模式不存在,$user将被忽略。

所以默认情况下,用户连接数据库后,如果数据库下存在同名Schema,则对象会添加到同名Schema下,否则对象被添加到Public Schema下。


课程作业

1.创建一个表(默认,不指定模式),查看该表在那个模式下

omm=# show search_path;
  search_path   
----------------
 "$user",public
(1 row)

omm=# create table t1 (a int);
CREATE TABLE

omm=# select table_catalog,table_schema,table_name,table_type
omm-# from information_schema.tables where table_name='t1';
(1 row)

omm=#  table_catalog | table_schema | table_name | table_type 
---------------+--------------+------------+------------
 omm           | public       | t1         | BASE TABLE

omm=# \dt+ t1
                                    List of relations
 Schema | Name | Type  | Owner |  Size   |             Storage              | Description 
--------+------+-------+-------+---------+----------------------------------+-------------
 public | t1   | table | omm   | 0 bytes | {orientation=row,compression=no} | 
(1 row)


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

omm=# \c enmdb user1
Password for user user1: 
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "enmdb" as user "user1".
enmdb=> create schema schm2;
CREATE SCHEMA
enmdb=> create schema schm3;
CREATE SCHEMA          ^
enmdb=> show search_path;
enmdb=>   search_path   
----------------
 "$user",public
(1 row)

enmdb=> set search_path to schm2;
SET
enmdb=> create table t2(a int);
CREATE TABLE
enmdb=> insert into t2 values (2);
INSERT 0 1
enmdb=> create table schm3.t3(a int);
CREATE TABLE
enmdb=> insert into schm3.t3 values(3);
INSERT 0 1
enmdb=> show search_path ;
 search_path 
-------------
 schm2
(1 row)

enmdb=> select * from t2;
 a 
---
 2
(1 row)

enmdb=> select * from schm3.t3;
 a 
---
 3
(1 row)



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

enmdb=> create schema enmschm1;
CREATE SCHEMA
enmdb=> set search_path to enmschm1;
SET
enmdb=> create table enmschm1.tt(a int);
CREATE TABLE
enmdb=> insert into enmschm1.tt values(111);
INSERT 0 1
enmdb=> select * from enmschm1.tt ;
  a  
-----
 111
(1 row)

enmdb=> 



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

评论

目录
  • 打卡第十三天,表管理
  • 课程作业
    • 1.创建一个表(默认,不指定模式),查看该表在那个模式下
    • 2.使用一个用户连接到enmdb数据库,测试该用户可以访问不同模式中的表
    • 3.在会话级设置模式搜索路径为:模式enmschm1,使用SchemaName.TableName的表标识方法访问表(创建表、插入数据和查询表中数据)