postgresql學習筆記1---安裝和psql基本操做

本文是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

1. 安裝:

====html

ubuntu下安裝很簡單:sql

sudo apt-get install postgresql

安裝完成後哦系統自動建立了一個系統用戶,也是postgresql的超級用戶,無需密碼便可登陸到數據庫.數據庫

若是還想安裝圖形管理界面:ubuntu

sudo apt-get install pgadmin3

能夠很清楚看到所建立的數據庫和表,就像這樣:
圖片描述函數

2. 添加新用戶和新數據庫

如今進入系統用戶postgres下:工具

sudo su - postgres

而後鏈接到數據庫:post

$psql

若是想建立一個新的數據庫用戶能夠這樣作:學習

  1. sudo adduser dbuser
    在系統中建立一個新用戶.
  2. sudo su - postgres
    要切換到postgres用戶下爲這個新用戶dbuser建立數據庫.
  3. $psql
    若是一切正常,系統提示符會變爲」postgres=#」,表示這時已經進入了數據庫控制檯。如下的命令都在控制檯內完成。

在這裏建立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退出控制檯

3. 登陸數據庫

在建立了某個系統用戶的某個數據庫用戶的某個數據庫以後.咱們如今要登陸她;

使用如下命令:

psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432

我試過了在ubuntu的不一樣系統下均可以經過這種方式,登陸一個數據庫.
固然若是你要登陸的額數據庫就在你如今系統下,能夠簡單使用psql exampledb登陸.
更簡單的若是在你的用戶名叫作dbuser,數據庫也叫dbuser,那麼在dbuser用戶下就使用psql就能夠一步登陸dbuser數據庫.

這樣幾個包含關係用文字描述不太清楚,以後用圖表來表示一下,先放在這裏.

4. psql工具的使用介紹:

============
使用psql能夠容許你交互地輸入SQL命令,相似與ORACLE裏的sqlplus同樣.

4.1 psql的簡單使用


  • 在dbuser用戶下進入example數據庫.
sudo su - dbuser
    psql exampledb

效果以下:
圖片描述

  • 查看數據庫信息
psql -l

圖片描述

固然也能夠在psql命令行地下使用\l查看

$psql exampledb
exampledb=>\l
  • 使用\d能夠查看該數據庫下表的信息:
exampledb=>\d

圖片描述

  • 建立數據庫:

目測建立一個數據庫是超級用戶的權限,其餘數據庫用戶沒有這個權限.
因此先返回postgres系統用戶下:

$su - postgres

進入數據庫用戶postgres:

$psql
#CREATE DATABAE testdb OWNER dbuser;

4.2 psql經常使用命令:

先列出來:
\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命令(還沒用過)

  • 若是隻想顯示匹配的表,可使用
    dt命令;
  • 若是想只顯示索引,可使用\di命令;
  • 若是想只顯示序列,可使用\ds命令;
  • 若是想只顯示視圖,可使用\df命令;
  • 若是想只顯示函數,可使用\df命令;

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鍵

圖片描述

相關文章
相關標籤/搜索