### [PostgreSQL學習手冊(數據庫管理)](http://www.cnblogs.com/stephen-liu74/archive/2012/05/21/2303510.html)
Posted on?2012-05-21 10:12?[Stephen_Liu](http://www.cnblogs.com/stephen-liu74/)?閱讀(1428) 評論(0)?[編輯](http://www.cnblogs.com/stephen-liu74/admin/EditPosts.aspx?postid=2303510)?[收藏](http://www.cnblogs.com/stephen-liu74/archive/2012/05/21/2303510.html#)?
**一、概述:**
?? ?數據庫可以被看成是SQL對象(數據庫對象)的命名集合,通常而言,每個數據庫對象(表、函數等)只屬于一個數據庫。不過對于部分系統表而言,如pg_database,是屬于整個集群的。更準確地說,數據庫是模式的集合,而模式包含表、函數等SQL對象。因此完整的對象層次應該是這樣的:服務器、數據庫、模式、表或其他類型的對象。
?? ?在與數據庫服務器建立連接時,該連接只能與一個數據庫形成關聯,不允許在一個會話中進行多個數據庫的訪問。如以postgres用戶登錄,該用戶可以訪問的缺省數據庫為postgres,在登錄后如果執行下面的SQL語句將會收到PostgreSQL給出的相關錯誤信息。
????*postgres=# SELECT * FROM MyTest."MyUser".testtables;*
?? ?ERROR:? cross-database references are not implemented: "otherdb.otheruser.sometable"
?? ?LINE 1: select * from otherdb.otheruser.sometable
??? 在PostgreSQL中,數據庫在物理上是相互隔離的,對它們的訪問控制也是在會話層次上進行的。然而模式只是邏輯上的對象管理結構,是否能訪問某個模式的對象是由權限系統來控制的。
?? ?執行下面的基于系統表的查詢語句可以列出現有的數據庫集合。
?? ?*SELECT datname FROM?**pg_database**;*
?? ?注:**psql**應用程序的**\l**元命令和**-l**命令行選項也可以用來列出當前服務器中已有的數據庫。?
?? ?
**二、創建數據庫:**
?? ?在PostgreSQL服務器上執行下面的SQL語句可以創建數據庫。
?? ?**CREATE DATABASE**?db_name;
?? ?在數據庫成功創建之后,當前登錄角色將自動成為此新數據庫的所有者。在刪除該數據庫時,也需要該用戶的特權。如果你想讓當前創建的數據庫的所有者為其它角色,可以執行下面的SQL語句。
?? ?**CREATE DATABASE**?db_name?**OWNER**?role_name;
**三、修改數據庫配置:**
?? ?PostgreSQL服務器提供了大量的運行時配置變量,我們可以根據自己的實際情況為某一數據庫的某一配置變量指定特殊值,通過執行下面的SQL命令可以使該數據庫的某一配置被設置為指定值,而不再使用缺省值。
???**?ALTER DATABASE**?db_name?**SET**?varname?**TO**?new_value;
?? ?這樣在之后基于該數據庫的會話中,被修改的配置值已經生效。如果要撤消這樣的設置并恢復為原有的缺省值,可以執行下面的SQL命令。
?? ?**ALTER DATABASE**?dbname?**RESET**?varname;
**四、刪除數據庫:**
?? ?只有數據庫的所有者和超級用戶可以刪除數據庫。刪除數據庫將會刪除數據庫中包括的所有對象,該操作是不可恢復的。見如下刪除SQL命令:
?? ?**DROP DATABASE**?db_name;
????
**五、表空間:**
?? ?在PostgreSQL中,表空間表示一組文件存放的目錄位置。在創建之后,就可以在該表空間上創建數據庫對象。通過使用表空間,管理員可以控制一個PostgreSQL服務器的磁盤布局。這樣管理員就可以根據數據庫對象的數據量和數據使用頻度等參照來規劃這些對象的存儲位置,以便減少IO等待,從而優化系統的整體運行性能。比如,將一個使用頻繁的索引放在非常可靠、高效的磁盤設備上,如固態硬盤。而將很少使用的數據庫對象存放在相對較慢的磁盤系統上。下面的SQL命令用于創建表空間。
???**?CREATE TABLESPACE**?fastspace?**LOCATION**?'/mnt/sda1/postgresql/data';
?? ?需要說明的是,表空間指定的位置必須是一個現有的空目錄,且屬于PostgreSQL系統用戶,如postgres。在成功創建之后,所有在該表空間上創建的對象都將被存放在這個目錄下的文件里。
??? 在PostgreSQL中只有超級用戶可以創建表空間,但是在成功創建之后,就可以允許普通數據庫用戶在其上創建數據庫對象了。要完成此操作,必須在表空間上給這些用戶授予CREATE權限。表、索引和整個數據庫都可以放在特定的表空間里。見如下SQL命令:
?? ?**CREATE TABLE**?foo(i int)?**TABLESPACE**?space1;
?? ?此外,我們還可以通過修改**default_tablespace**配置變量,以使指定的表空間成為缺省表空間,這樣在創建任何數據庫對象時,如果沒有顯示指定表空間,那么該對象將被創建在缺省表空間中,如:
?? ?SET default_tablespace = space1;
?? ?CREATE TABLE foo(i int);
??? 與數據庫相關聯的表空間用于存儲該數據庫的系統表,以及任何使用該數據庫的服務器進程創建的臨時文件。
?? ?要刪除一個空的表空間,可以直接使用**DROP TABLESPACE**命令,然而要刪除一個包含數據庫對象的表空間,則需要先將該表空間上的所有對象全部刪除后,才可以再在刪除該表空間。
?? ?要檢索當前系統中有哪些表空間,可以執行以下查詢,其中pg_tablespace為PostgreSQL中的系統表。
?? ?SELECT spcname FROM?**pg_tablespace**;
?? ?我們還可以通過**psql**程序的**\db**元命令列出現有的表空間。
分類:?[PostgreSQL](http://www.cnblogs.com/stephen-liu74/category/343171.html)
- 數據表
- 模式Schema
- 表的繼承和分區
- 常用數據類型
- 函數和操作符-一
- 函數和操作符-二
- 函數和操作符-三
- 索引
- 事物隔離
- 性能提升技巧
- 服務器配置
- 角色和權限
- 數據庫管理
- 數據庫維護
- 系統表
- 系統視圖
- SQL語言函數
- PL-pgSQL過程語言
- PostgreSQL 序列(SEQUENCE)
- PostgreSQL的時間-日期函數使用
- PostgreSQL 查看數據庫,索引,表,表空間大小
- 用以查詢某表的詳細 包含表字段的注釋信息
- PostgreSQL 系統表查看系統信息
- postgre存儲過程簡單實用方法
- PostgreSQL實用日常維護SQL
- PostgreSQL的時間函數使用整理
- 命令
- pg_ctl控制服務器
- initdb 初始化數據庫簇
- createdb創建數據庫
- dropdb 刪除數據庫
- createuser創建用戶
- dropuser 刪除用戶
- psql交互式工具
- psql命令手冊
- pg_dump 數據庫轉儲
- pg_restore恢復數據庫
- vacuumdb 清理優化數據庫
- reindexdb 數據庫重創索引
- createlang 安裝過程語言
- droplang 刪除過程語言
- pg_upgrade 升級數據庫簇
- 調試存儲過程
- 客戶端命令-一
- 客戶端命令-二
- 使用技巧
- PostgreSQL刪除重復數據
- postgresql 小技巧
- PostgreSQL的10進制與16進制互轉
- PostgreSQL的漢字轉拼音
- Postgres重復數據的更新一例
- PostgreSQL使用with一例
- PostgreSQL在函數內返回returning
- PostgreSQL中的group_concat使用
- PostgreSQL數據庫切割和組合字段函數
- postgresql重復數據的刪除
- PostgreSQL的遞歸查詢(with recursive)
- PostgreSQL函數如何返回數據集
- PostgreSQL分區表(Table Partitioning)應用 - David_Tang - 博客園
- PostgreSQL: function 返回結果集多列和單列的例子
- 利用pgAgent創建定時任務
- 淺談 PostgreSQL 類型轉換類似Oracle
- postgresql在windows(包括win7)下的安裝配置
- PostgreSQL簡介、安裝、用戶管理、啟動關閉、創建刪除數據庫 (2010-11-08 12-52-51)轉載▼標簽: 雜談分類: PostgreSQL
- PostgreSQL的generate_series函數應用
- PostgreSQL 8.3.1 全文檢索(Full Text Search)
- postgresql record 使用
- 備份恢復
- PostgreSQL基于時間點恢復(PITR)
- Postgresql基于時間點恢復PITR案例(二)
- Postgres邏輯備份腳本
- Postgres invalid command \N數據恢復處理