創(chuàng)建一個(gè)架構(gòu),并且可以在概念上將其看作是包含表、視圖和權(quán)限定義的對(duì)象。
CREATE SCHEMA AUTHORIZATION owner
[ < schema_element > [ ...n ] ]
< schema_element > ::=
{ table_definition | view_definition | grant_statement
}
AUTHORIZATION owner
指定架構(gòu)對(duì)象所有者的 ID。此標(biāo)識(shí)符必須是數(shù)據(jù)庫(kù)中有效的安全帳戶。
table_definition
指定在架構(gòu)內(nèi)創(chuàng)建表的 CREATE TABLE 語(yǔ)句。
view_definition
指定在架構(gòu)內(nèi)創(chuàng)建視圖的 CREATE VIEW 語(yǔ)句。
grant_statement
指定授予用戶或用戶組權(quán)限的 GRANT 語(yǔ)句。
CREATE SCHEMA 提供了在單個(gè)語(yǔ)句中創(chuàng)建表、視圖以及授予對(duì)象權(quán)限的方法。如果在創(chuàng)建任何對(duì)象或授予任何權(quán)限(這些是在 CREATE SCHEMA 語(yǔ)句中指定的)時(shí)發(fā)生錯(cuò)誤,則不會(huì)創(chuàng)建任何對(duì)象。
創(chuàng)建的對(duì)象不必按邏輯順序出現(xiàn),但引用其它視圖的視圖除外。例如,GRANT 語(yǔ)句可以在創(chuàng)建某個(gè)對(duì)象之前授予該對(duì)象的權(quán)限,CREATE VIEW 語(yǔ)句也可以出現(xiàn)在創(chuàng)建該視圖所引用表的 CREATE TABLE 語(yǔ)句之前。同樣,CREATE TABLE 語(yǔ)句中聲明的外鍵可以指向后面指定的表。例外情況是,如果一個(gè)視圖的選擇語(yǔ)句引用另一個(gè)視圖,則必須在指定引用視圖之前指定被引用的視圖。
CREATE SCHEMA 權(quán)限默認(rèn)授予所有用戶,但是他們必須有權(quán)創(chuàng)建加入到架構(gòu)中的對(duì)象。
下例顯示在創(chuàng)建對(duì)象之前授予權(quán)限。
CREATE SCHEMA AUTHORIZATION ross
GRANT SELECT on v1 TO public
CREATE VIEW v1(c1) AS SELECT c1 from t1
CREATE TABLE t1(c1 int)
下例創(chuàng)建相互依賴的 FOREIGN KEY 約束。用其它方法完成由此 CREATE SCHEMA 示例實(shí)現(xiàn)的任務(wù)時(shí),需要執(zhí)行多個(gè)步驟。
CREATE SCHEMA AUTHORIZATION ross
CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT REFERENCES t2(c1))
CREATE TABLE t2 (c1 INT PRIMARY KEY, c2 INT REFERENCES t1(c1))