联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
在PostgreSQL中schema和oracle中不一样,在oracle中schema基本上可以理解为user,但是在PostgreSQL中user和schema没有严格意义上的对应关系.
创建模式
这里可以看到使用u_xifenfei创建的schema就是属于该用户,默认的public schema属于postgres用户.
db_xifenfei=# \c 您现在已经连接到数据库 "db_xifenfei",用户 "u_xifenfei". db_xifenfei=# create schema u_xifenfei; CREATE SCHEMA db_xifenfei=# \dn 架构模式列表 名称 | 拥有者 ------------+------------ public | postgres u_xifenfei | u_xifenfei (2 行记录)
数据库检索schema的顺序
默认情况下优先检索和用户名一致的schema,然后是public schema
db_xifenfei=# show search_path; search_path ----------------- "$user", public (1 行记录)
测试schema的检索顺序
这里比较明显优先使用/找到的是u_xifenfei schema(和用户名匹配的schema),然后再是默认的public schema
db_xifenfei=# create table t_xifenfei as select * from pg_database; SELECT 4 db_xifenfei=# select pg_relation_filepath('t_xifenfei'); pg_relation_filepath --------------------------------------------- pg_tblspc/16406/PG_10_201707211/16407/16421 (1 行记录) db_xifenfei=# select count(*) from t_xifenfei; count ------- 4 (1 行记录) db_xifenfei=# select schemaname,tablename,tableowner,tablespace db_xifenfei-# from pg_tables where tableowner='u_xifenfei'; schemaname | tablename | tableowner | tablespace ------------+-------------+------------+------------ public | t_xifenfei | u_xifenfei | u_xifenfei | t_xifenfei | u_xifenfei | (3 行记录) --public.t_xifenfei和public.t_xifenfei2昨天创建 db_xifenfei=# select count(*) from public.t_xifenfei; count --------- 1310720 (1 行记录) db_xifenfei=# drop table t_xifenfei; DROP TABLE db_xifenfei=# select count(*) from t_xifenfei; count --------- 1310720 (1 行记录)