search_path类似于linux中的path环境变量
postgres=# show search_path;
search_path
—————–
“$user”, public
(1 row)
默认值是$user,public,意思就是当以某个用户登录到的时候,默认就是先查找和登录用户同名的schema,再查找public
例如当前我使用postgres用户连接到testdb下,查看当前有哪些表:
对search_path的操作,主要包括:1) show
2) set
schema相关概念模式即schema,类似于oracle中schema,mysql中的database概念,使用create schema来创建schema,一般我们的schema和owner都设置为相同。当连接到一个数据下的时候,创建表或者其它对象的时候一般都需要加上schema.name① 创建schema
suq=# \h create schema
command: create schema
description: define a new schema
syntax:
create schema schema_name [ authorization role_specification ] [ schema_element [ … ] ]
create schema authorization role_specification [ schema_element [ … ] ]
create schema if not exists schema_name [ authorization role_specification ]
create schema if not exists authorization role_specification
where role_specification can be:
[ group ] user_name
| current_user
| session_user
② 使用\n查看当前数据库下有哪些schema public是创建database的时候生成的默认schema,类似于oracle中的public用户
suq=# create schema brent authorization suq;
create schema
suq=# \dn
list of schemas
name | owner
——–+———-
brent | suq
public | postgres
③ 使用drop schema来删除schemasuq=# drop schema brent;
drop schema
④ 使用alter schema来修改schema,例如修改schema的名字suq=# alter schema brent rename to suq;
alter schema
suq=# \dn
list of schemas
name | owner
——–+———-
public | postgres
suq | postgres
⑥ 修改schema的所属主:suq=# alter schema suq owner to suq;alter schema
suq=# \dn
list of schemas
name | owner
——–+———-
public | postgres
suq | suq