打卡第十三天,表管理
学习表创建在不同的模式下及设置搜索路径和访问方法。
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
目录