<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # CREATE SCHEMA ## Name CREATE SCHEMA?--?定義一個新模式 ## Synopsis ``` CREATE SCHEMA _schema_name_ [ AUTHORIZATION _user_name_ ] [ _schema_element_ [ ... ] ] CREATE SCHEMA AUTHORIZATION _user_name_ [ _schema_element_ [ ... ] ] CREATE SCHEMA IF NOT EXISTS _schema_name_ [ AUTHORIZATION _user_name_ ] CREATE SCHEMA IF NOT EXISTS AUTHORIZATION _user_name_ ``` ## 描述 `CREATE SCHEMA`在當前數據庫里輸入一個新模式。 該模式名將在當前數據庫里現存的所有模式名中唯一。 模式實際上是一個名字空間:它包含命名對象(表、數據類型、函數、操作符) 這些名字可以和其它模式里存在的其它對象重名。命名對象要么是通過用模式名作為前綴 "修飾"進行訪問,要么是通過設置一個搜索路徑包含所需要的模式。 一條帶著無修飾對象名的`CREATE`命令都是在當前模式中創建創建對象的 (在搜索路徑最前面的模式;可以用`current_schema`函數來判斷)。 另外,`CREATE SCHEMA`可以包括在新模式中創建對象的子命令。 這些子命令和那些在創建完模式后發出的命令沒有任何區別, 只不過是如果使用了`AUTHORIZATION`子句,那么所有創建的對象都將被該用戶擁有。 ## 參數 `_schema_name_` 要創建的模式名字。如果省略,則使用 `_user_name_`作為模式名。 這個名字不能以`pg_`開頭,因為這樣的名字保留給系統模式使用。 `_user_name_` 將擁有該模式的用戶的角色名。如果省略,缺省為執行該命令的用戶名。 要想創建一個屬于其他角色的模式,你必須是那個角色的直接或非直接成員,或是超級用戶。 `_schema_element_` 一個 SQL 語句,定義一個要在模式里創建的對象。目前,只有`CREATE TABLE`、 `CREATE VIEW`、`CREATE INDEX`、`CREATE SEQUENCE`、 `CREATE TRIGGER`和`GRANT`是可以接受的子句。 其它類型的對象可以在創建完模式之后的獨立命令里創建。 `IF NOT EXISTS` 如果相同名字的模式已經存在,那么什么也不要做(除了發出一個通知)。 當使用此選項時,不能包括`_schema_element_`子命令。 ## 注意 要創建模式,調用該命令的用戶必需在當前數據庫上有`CREATE`權限。 (當然,超級用戶可以繞開這個檢查。) ## 例子 創建一個模式: ``` CREATE SCHEMA myschema; ``` 為用戶`joe`創建模式,模式名也叫`joe`: ``` CREATE SCHEMA AUTHORIZATION joe; ``` 創建一個名為`test`的模式,該模式被用戶`joe`所擁有, 除非已經有一個名為`test`的模式。 (這與`joe`是否擁有早已存在的模式無關。) ``` CREATE SCHEMA IF NOT EXISTS test AUTHORIZATION joe; ``` 創建一個模式并且在里面創建一個表: ``` CREATE SCHEMA hollywood CREATE TABLE films (title text, release date, awards text[]) CREATE VIEW winners AS SELECT title, release FROM films WHERE awards IS NOT NULL; ``` 請注意上面獨立的子命令不是由分號結尾的 下面的命令是實現同樣結果的等效語句: ``` CREATE SCHEMA hollywood; CREATE TABLE hollywood.films (title text, release date, awards text[]); CREATE VIEW hollywood.winners AS SELECT title, release FROM hollywood.films WHERE awards IS NOT NULL; ``` ## 兼容性 SQL 標準允許在`CREATE SCHEMA`里面有一個 `DEFAULT CHARACTER SET`子句以及比目前PostgreSQL 可以接受的更多的子命令。 SQL 標準聲明在`CREATE SCHEMA`里的子命令可以以任意順序出現。 目前PostgreSQL里的實現還不能處理所有子命令里前向引用的情況; 有時候可能需要重排一下子命令的順序以避免前向引用。 在 SQL 標準里,模式的所有者總是擁有其中的所有對象。 PostgreSQL允許模式包含非模式所有者擁有的對象。 只有在模式所有者將自己模式的`CREATE`權限給了其他人, 或者超級用戶選擇在該模式中創建對象時,才可能出現。 `IF NOT EXISTS`選項是一個PostgreSQL擴展。 ## 又見 [ALTER SCHEMA](#calibre_link-43), [DROP SCHEMA](#calibre_link-44)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看