postgresql模式建立、修改、刪除

來源:互聯網
上載者:User

標籤:

一個資料庫包含一個或多個模式,而模式又包含表、序列、函數等,不同的模式可以包含相同名稱的表、序列、函數等。模式本質上是命名空間,就像人的姓氏一樣。一個使用者只要有許可權,串連到資料庫後,可一次訪問該資料庫的任何模式下的對象。建立一個資料庫會預設建立一個public模式,後續操作資料庫對象如果沒指定模式,則預設為public。例如之前建立的school資料庫

school=# \dn+
                          List of schemas
  Name  |  Owner   |  Access privileges   |      Description      
--------+----------+----------------------+------------------------
 public | postgres | postgres=UC/postgres+| standard public schema
        |          | =UC/postgres         |
(1 row) 

 

 一、建立模式

文法:

school=# \h create schema

Command:     CREATE SCHEMA

Description: define a new schema

Syntax:

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

 

參數:

schema_name

模式名稱,預設使用user_name,且不能以pg_開頭。

user_name

模式屬於的使用者,預設為執行命令的使用者。

schema_element

一條SQL語句,即建立模式後,在該模式下建立一個資料庫物件。當前支援的子句有CREATE

TABLE, CREATE VIEW, CREATE INDEX, CREATE SEQUENCE, CREATE TRIGGER and GRANT。

IF NOT EXISTS

如果模式已存在,使用該選項不會拋出錯誤。使用此選項不能使用schema_element子句。

樣本

create schema schema_test authorization test1 create table tbl_test(a int) create view view_test as select * from tbl_test;

 

 

 

訪問模式下資料庫物件在模式和資料庫物件之間加一個句點即可

school=# select * from schema_test.tbl_test ; a---(0 rows) school=# select * from schema_test.view_test ; a---(0 rows)

 

 

二、模式修改 

文法:

school=# \h alter schema

Command:     ALTER SCHEMA

Description: change the definition of a schema

Syntax:

ALTER SCHEMA name RENAME TO new_name

ALTER SCHEMA name OWNER TO new_owner

 

參數:

name

模式名稱

new_name

模式新的名稱,同樣新名稱也不能以pg_開頭

new_owner

模式新使用者名稱稱

樣本

school=# alter schema schema_test owner to postgres ;ALTER SCHEMAschool=# alter schema schema_test rename to test;ALTER SCHEMAschool=# \dn+                          List of schemas  Name  |  Owner   |  Access privileges   |      Description      --------+----------+----------------------+------------------------ public | postgres | postgres=UC/postgres+| standard public schema        |          | =UC/postgres         | test   | postgres |                      |(2 rows)

 

三、模式刪除 

文法: 

school=# \h drop schema

Command:     DROP SCHEMA

Description: remove a schema

Syntax:

DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

 

參數:

IF EXISTS

如果模式不存在,不會拋出錯誤。

name

模式名稱。

CASCADE

自動刪除該模式下資料庫物件。

RESTRICT

如果該模式下還存在資料庫物件,則不允許刪除該模式,RESTRICT為預設值。

樣本:

school=# drop schema test;ERROR:  cannot drop schema test because other objects depend on itDETAIL:  table test.tbl_test depends on schema testview test.view_test depends on schema testHINT:  Use DROP ... CASCADE to drop the dependent objects too.

 

 

school=# drop schema test cascade;NOTICE:  drop cascades to 2 other objectsDETAIL:  drop cascades to table test.tbl_testdrop cascades to view test.view_testDROP SCHEMA

 

 

 

 

postgresql模式建立、修改、刪除

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.