Schema管理
Schema是數(shù)據(jù)庫的命名空間,它是一個數(shù)據(jù)庫內(nèi)部的對象(表、索引、視圖、存儲過程、操作符)的集合。Schema在每個數(shù)據(jù)庫中是唯一的。每個數(shù)據(jù)庫都有一個名為public的默認(rèn)Schema。
如果用戶沒有創(chuàng)建任何Schema,對象會被創(chuàng)建在public schema中。所有的該數(shù)據(jù)庫角色(用戶)都在默認(rèn)的public schema中擁有CREATE和USAGE特權(quán)。
創(chuàng)建Schema
使用CREATE SCHEMA
命令來創(chuàng)建一個新的Schema,命令如下:
CREATE SCHEMA <schema_name> [AUTHORIZATION <username>]
<schema_name>:schema名稱。
<username>:如指定authorization username,則創(chuàng)建的schema屬于該用戶。否則,屬于執(zhí)行該命令的用戶。
示例:
CREATE SCHEMA myschema;
設(shè)置Schema搜索路徑
數(shù)據(jù)庫的search_path用于配置參數(shù)設(shè)置Schema的搜索順序。
使用ALTER DATABASE
命令可以設(shè)置搜索路徑。例如:
ALTER DATABASE mydatabase SET search_path TO myschema, public, pg_catalog;
您也可以使用ALTERROLE
命令為特定的角色(用戶)設(shè)置search_path。例如:
ALTER ROLE sally SET search_path TO myschema, public, pg_catalog;
查看當(dāng)前Schema
使用current_schema()
函數(shù)可以查看當(dāng)前的Schema。例如:
SELECT current_schema();
您也可以使用SHOW
命令查看當(dāng)前的搜索路徑。例如:
SHOW search_path;
刪除Schema
使用DROP SCHEMA
命令刪除一個空的Schema。例如:
DROP SCHEMA myschema;
默認(rèn)情況下,Schema它必須為空才可以刪除。
刪除一個Schema連同其中的所有對象(表、數(shù)據(jù)、函數(shù)等等),可以使用:
DROP SCHEMA myschema CASCADE;