調用CREATE SCHEMA定義一個新的Schema。
文法
CREATE SCHEMA AUTHORIZATION username schema_element [ ... ]說明
CREATE SCHEMA 命令的該變體可建立由 username 擁有的新 schema,並由一個或多個對象填充。schema 和對象的建立發生在單個事務中,因此要麼建立的所有對象均包含 schema,要麼都不包含。(請注意,如果使用的是 Oracle 資料庫,那麼不會建立新 schema – username,因此 schema 必須預先存在。)
schema 本質上是一個命名空間:其中包含命名物件(表、視圖等),其名稱可能與其他 schema 中存在的其他對象重複。命名物件的訪問方式如下:將 schema 名稱作為首碼以“限定”其名稱,或設定包含所需 schema 的搜尋路徑。未限定的對象在當前 schema(即搜尋路徑前面的 schema,可採用函數 CURRENT_SCHEMA 確定)中建立。(搜尋路徑概念及 CURRENT_SCHEMA 函數與 Oracle 資料庫不相容。)
CREATE SCHEMA 包含在 schema 內建立對象的子命令。子命令的處理方式與建立 schema 後發出的單獨命令基本相同。建立的所有對象均由指定的使用者擁有。
說明 要建立 schema,調用使用者必須對當前資料庫具有 CREATE 特權。
參數
| 參數 | 說明 |
| username | 將擁有新 schema 的使用者的名稱。schema 的名稱將與 username 相同。只有超級使用者可以建立除自己以外的使用者所擁有的 schema。(請注意,在PolarDB PostgreSQL版(相容Oracle)中,角色、username 必須已經存在,但 schema 不得存在。在Oracle 中,使用者(相當於 schema)必須存在。) |
| schema_element | 一條 SQL 陳述式,用於定義要在 schema 內建立的對象。在 CREATE SCHEMA 中,接受 CREATE TABLE、CREATE VIEW 和 GRANT 作為子句。在建立 schema 之後,可以在單獨的命令中建立其他物件類型。 |
樣本
CREATE SCHEMA AUTHORIZATION polardb
CREATE TABLE empjobs (ename VARCHAR2(10), job VARCHAR2(9))
CREATE VIEW managers AS SELECT ename FROM empjobs WHERE job = 'MANAGER'
GRANT SELECT ON managers TO PUBLIC;