postgresql创建schema

postgresql创建schema,第1张

概述schema概念有点像命名空间或者把它想像成一个文件系统中的目录,差别就是这个schema下不能再有schema嵌套. 各个对象比如表、函数等存放在各个schema下,同一个schema下不能有重复的对象名字,但在不同schema下可以重复. 使用schema的作用 方便管理多个用户共享一个数据库,但是又可以互相独立. 方便管理众多对象,更有逻辑性. 方便兼容某些第三方应用程序,创建对象时是有sc

schema概念有点像命名空间或者把它想像成一个文件系统中的目录,差别就是这个schema下不能再有schema嵌套.
各个对象比如表、函数等存放在各个schema下,同一个schema下不能有重复的对象名字,但在不同schema下可以重复.

使用schema的作用 方便管理多个用户共享一个数据库,但是又可以互相独立. 方便管理众多对象,更有逻辑性. 方便兼容某些第三方应用程序,创建对象时是有schema的.

比如要设计一个复杂系统.由众多模块构成,有时候模块间又需要有独立性.各模块存放单独的数据库显然是不合适的.
这时候使用schema来分类各模块间的对象,再对用户进行适当的权限控制.这样逻辑也非常清晰.

创建schema
db01=# create schema schema01;CREATE SCHEMA db01=# \dn List of schemas name | Owner ----------+---------- public | postgres schema01 | postgres (2 rows) 
在schema中创建对象
db01=# table schema01.t1(ID int);table db01=# insert into schema01.t1 values(1);INSERT 0 1 db01=# select * from t1;ERROR:  relation "t1" does not existliNE 1: from t1;                      ^db01=# from schema01.t1; ID----  1(1 row)db01=# from db01.schema01.t1; ID----  1(1 row)

默认是在public这个schema下.因此要带上schema名称.数据库名字如果要带上,只能是当前连接的数据库!!

删除schema
drop schema schema01;ERROR:  cannot schema schema01 because other objects depend on it DETAIL: table schema01.t1 depends on schema schema01 HINT: Use DROP ... CASCADE to drop the dependent objects too. db01=# schema schema01 cascade;NOTICE:  drop cascades table schema01.t1 DROP SCHEMA 

schema下有对象如果需要一起删除,需要带上cascade关键字.有点像使用rmdir删除目录一样,文件夹下有东西不然删除.

创建schema指定owner

默认是谁创建的schema,owner就是谁,当然也可以指定

schema s01 authorization hippo;SCHEMA db01=# schema --------+---------- hippo | hippo public | postgres s01 | hippo (3 rows) 

指定了owner,不指定schema,则schema名字与owner一致。

总结

以上是内存溢出为你收集整理的postgresql创建schema全部内容,希望文章能够帮你解决postgresql创建schema所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1172333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存