本文是PostgreSQL修煉之道這本書的學習筆記,記錄下疑惑或不解的地方.
這裏也列一些資源:
官方文檔:http://www.postgresql.org/files/documentation/pdf/9.4/postgresql-9.4-A...
中文文檔:http://www.php100.com/manual/PostgreSQL8/
阮一峯的博客:http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql...php
====html
ubuntu下安裝很簡單:sql
sudo apt-get install postgresql
安裝完成後哦系統自動建立了一個系統用戶,也是postgresql的超級用戶,無需密碼便可登陸到數據庫.數據庫
若是還想安裝圖形管理界面:ubuntu
sudo apt-get install pgadmin3
能夠很清楚看到所建立的數據庫和表,就像這樣:函數
如今進入系統用戶postgres下:工具
sudo su - postgres
而後鏈接到數據庫:post
$psql
若是想建立一個新的數據庫用戶能夠這樣作:學習
sudo adduser dbuser
sudo su - postgres
$psql
在這裏建立dbuser數據庫用戶編碼
CREATE USER dbuser WITH PASSWORD 'password';
注意結尾必定要加封號';'
而後建立dbuser數據庫用戶的一個數據庫,這裏爲exampledb,並指定全部者爲dbuser.
CREATE DATABASE exampledb OWNER dbuser;
最後是將exampledb的全部權限都賦予dbuser,不然dbuser只能登陸控制檯沒有任何數據庫操做權限.
GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;
最後使用\q
退出控制檯
在建立了某個系統用戶的某個數據庫用戶的某個數據庫以後.咱們如今要登陸她;
使用如下命令:
psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432
我試過了在ubuntu的不一樣系統下均可以經過這種方式,登陸一個數據庫.
固然若是你要登陸的額數據庫就在你如今系統下,能夠簡單使用psql exampledb
登陸.
更簡單的若是在你的用戶名叫作dbuser,數據庫也叫dbuser,那麼在dbuser用戶下就使用psql就能夠一步登陸dbuser數據庫.
這樣幾個包含關係用文字描述不太清楚,以後用圖表來表示一下,先放在這裏.
============
使用psql能夠容許你交互地輸入SQL命令,相似與ORACLE裏的sqlplus同樣.
sudo su - dbuser psql exampledb
效果以下:
psql -l
固然也能夠在psql命令行地下使用\l
查看
$psql exampledb exampledb=>\l
exampledb=>\d
目測建立一個數據庫是超級用戶的權限,其餘數據庫用戶沒有這個權限.
因此先返回postgres系統用戶下:
$su - postgres
進入數據庫用戶postgres:
$psql #CREATE DATABAE testdb OWNER dbuser;
先列出來:
\d
\dn
\db
\dg
\du
\dp
\encoding
\pset
\x
\echo
\?
4.2.1.\d命令
若是什麼都不帶,\d列出當前數據庫中的全部表;
例如在postgres數據庫中:
postgres=#\d
2.\d後面加表名
\d score
3.\d也能夠顯示索引信息
\d t_pkey
4.\d後面加通配符?和*
\d score* \d score?
5.\d+顯示比\d更多的信息,除了以前的那些,還有與表列一切相關連的註釋,以及表中出現的OID.
\d+ score
6.匹配不一樣對象類型的\d命令(還沒用過)
7.若是想顯示SQL已執行的時間,能夠用\timing命令,實例:
#\timing on #select count(*) from score;
8.列出全部schema可使用\dn
#\dn
9.顯示全部表空間能夠用\db命令
#\db`請輸入代碼`
10.列出數據庫的所喲角色或用戶
#\du或#\dg
11.顯示錶的權限分配
#\dp或\z
4.2.2指定字符集編譯的命令
當客戶端的字符編碼與服務其的不同是,可能會顯示亂碼,可使用\encoding 指定客戶端的字符編碼,如\encoding gbk;\encoding utf-8;
4.2.3\pset命令
\pset命令用於設置輸出的格式 \pset border 0:輸出內容無
4.2.4\x命令
把表中的每一行數據都拆分爲單行展現
#\x
4.2.5執行儲存在外部文件中的SQL命令
/i<文件名>執行存儲在外部文件中的sql語句或命令.以下:
#\i getrunsql
發現該書中的一個錯誤.
4.2.6顯示信息的命令:
\echo hello world #hello world
這個命令一般在使用.sh腳本的文件中輸出一些提示信息.
好比,某一個文件a.sql有一下內容:
\echo=======================
select * from xl;
\echo=======================
4.2.7更多命令
\?能夠用來查詢其餘全部命令:
#\?
4.2.8psql的使用技巧和注意事項
歷史命令補全:
連按兩個Tab鍵
#\d <-----這裏連按兩個Tab鍵