PostgreSQL表空間、資料庫、模式、表、使用者/角色之間的關係
阿新 • • 發佈:2019-01-22
而template1資料庫的預設表空間是pg_default,這個表空間是在資料庫初始化時建立的,所以所有template1中的物件將被同步克隆到新的資料庫中。
相對完整的語法應該是這樣的:CREATE DATABASE dbname OWNER kanon TEMPLATE template1 TABLESPACE tablespacename;
下面我們來做個實驗驗證一下:
1.連線到template1資料庫,建立一個表作為標記:CREATE TABLE tbl_flag(id integer not null);向表中插入資料INSERT INTO tbl_flag VALUES (1);
2.建立一個表空間:CREATE TABLESPACE tskanon OWNER kanon LOCATION '/tmp/data/tskanon';在此之前應該確保目錄/tmp/data/tskanon存在,並且目錄為空。
3.建立一個數據庫,指明該資料庫的表空間是剛剛建立的tskanon:CREATE DATABASE dbkanon TEMPLATE template1 OWNERE kanon TABLESPACE tskanon;
4.檢視系統中所有資料庫的資訊:/l;可以發現,dbkanon資料庫的表空間是tskanon,擁有者是kanon;
5.連線到dbkanon資料庫,檢視所有表結構:/d;可以發現,在剛建立的資料庫中居然有了一個表tbl_flag,檢視該表資料,輸出結果一行一列,其值為1,說明,該資料庫的確是從template1克隆而來。
相對完整的語法應該是這樣的:CREATE DATABASE dbname OWNER kanon TEMPLATE template1 TABLESPACE tablespacename;
下面我們來做個實驗驗證一下:
1.連線到template1資料庫,建立一個表作為標記:CREATE TABLE tbl_flag(id integer not null);向表中插入資料INSERT INTO tbl_flag VALUES (1);
2.建立一個表空間:CREATE TABLESPACE tskanon OWNER kanon LOCATION '/tmp/data/tskanon';在此之前應該確保目錄/tmp/data/tskanon存在,並且目錄為空。
3.建立一個數據庫,指明該資料庫的表空間是剛剛建立的tskanon:CREATE DATABASE dbkanon TEMPLATE template1 OWNERE kanon TABLESPACE tskanon;
4.檢視系統中所有資料庫的資訊:/l;可以發現,dbkanon資料庫的表空間是tskanon,擁有者是kanon;
5.連線到dbkanon資料庫,檢視所有表結構:/d;可以發現,在剛建立的資料庫中居然有了一個表tbl_flag,檢視該表資料,輸出結果一行一列,其值為1,說明,該資料庫的確是從template1克隆而來。