天天看點

PostgreSql建立資料庫

PostgreSql建立資料庫的文法是:

CREATE DATABASE name

    [ [ WITH ] [ OWNER [=] user_name]

           [ TEMPLATE [=] template]

           [ ENCODING [=] encoding]

           [ LC_COLLATE [=] lc_collate]

           [ LC_CTYPE [=] lc_ctype]

           [ TABLESPACE [=] tablespace_name]

           [ CONNECTION LIMIT[=] connlimit ] ]

其中方括号内的都是為可選的參數,換句話說建立一個資料庫的文法可是是這樣:

Create database database_name;

那麼參數都是為預設的,Owner就是目前的使用者,template是template1,encoding是template1的編碼,LC_COLLATE,LC_CTYPE,TABLESPACE,CONNECTIONLIMIT與template1的配置保持一緻。

    PostgreSql資料庫中預設存在兩個模闆template0,template1,其實template0是templat1的一個克隆,在安裝完資料庫後預設存在的,建立資料庫時不一定要使用這兩個模闆中的一個,可以使别的資料庫。如存在一個資料庫test需要建立資料庫testdb,并且以test為模闆,那麼這個時候test資料不能有任何連接配接。

下面對參數進行解釋:

OWNER:表示擁有者,一般都是建立者;

TEMPLATE:表示建立資料庫的模闆;

ENCODING:表示新建立的資料庫的字元集,如'SQL_ASCII',LATIN1;

LC_COLLATE: 表示字元串排序規則,如collate‘C’或者’de_DE’,’es_ES’;

LC_CTYPE:一般與LC_COLLATE保持一緻,指的是字元分類;

TABLESPACE:表示建立的資料庫在那個表空間,預設為default;

Connection LImIT:表示并發的連接配接數;

需要注意的是

1、  在建立資料庫時需要超級使用者;

2、  并發連接配接數隻是一個近似的值,并不是精确的,比如100個連接配接,已經使用99個,那麼此時兩個連接配接需要連接配接,此時很可能兩個連接配接都失敗,當然如果是超級使用者的話是不受這個限制的;

3、  TABLESPACE是另外建立的,如:

Create tablespace tablespace_name  LOCATION  ‘C:/data’;

4、  特别注意的是template參數指的是需要建立的資料庫的模闆,真實建立時隻是先克隆這個template,如果模闆資料庫存在資料比如表中存在資料,存在索引等,那麼ENCODING,LC_COLLATE,LC_CTYPE三個參數需要你保持一緻,因為不一緻可能會由于編碼字元集不比對而導緻亂碼等問題;

5、  在建立資料庫或者資料庫表空間時都不能再一個事務快中(cannot be executed inside a transaction block);

6、  可以在指令行中執行createdb指令來建立資料庫,-O就是擁有者,-l相當于lc-collateand --lc-ctype,-T就是指定模闆,-E指的是字元集,dbname指的是資料庫名;

7、  建立資料庫例子:

Create database testdb1 owner=postgres

                   template= template1      

                 ENCODING = 'UTF8'

                 LC_COLLATE='Chinese(Simplified)_People''s RepublicofChina.936'

                 LC_CTYPE = 'Chinese (Simplified)_People''sRepublic of China.936'

                     CONNECTION LIMIT = 1000;

繼續閱讀