一个数据库包含一个或者多个命名的模式,模式又可以包含表等数据库对象。模式有点类似于命名空间,我们可以在不同的命名空间中使用相同的名称而不会冲突。模式不是严格分离的,它只是一个逻辑上的区分。
模式的创建语法格式: create schema 模式名;
模式的删除语法格式: drop schema 模式名 [cascade];
当我们在删除模式时使用了cascade的时候,也就是所谓的级联删除,它会删除模式及其所有对象。
当我们在使用一个数据库对象时,可以使用它的全名称来定位,但是这样通常也非常繁琐,于是我们可以设置search_path的值,它的语法格式为: set search_path to 模式1,模式2....;
当然我们也可以通过show search_path;来查看当前的搜索路径。
在默认情况下,用户看不到模式中不属于他们所有的对象,为了让他们可以看到,模式的所有者需要在模式上赋予USAGE权限。
我们还可以将用户名和模式名进行关联,这样我们将模式关联到指定的角色,格式为: CREATE SCHEMA 模式名 AUTHORIZATION 用户名;