PostgreSQL快速入門

1、PostgreSQL是什麼?

PostgreSQL是一個功能強大的開源對象關係數據庫管理系統(ORDBMS)。 用於安全地存儲數據; 支持最佳作法,並容許在處理請求時檢索它們。html

PostgreSQL(也稱爲Post-gress-Q-L)由PostgreSQL全球開發集團(全球志願者團隊)開發。 它不受任何公司或其餘私人實體控制。 它是開源的,其源代碼是免費提供的。mysql

PostgreSQL是跨平臺的,能夠在許多操做系統上運行,如Linux,OS X和Microsoft Windows等。sql

 

2、PostgreSQL特色

  1. 跨平臺
  2. 支持文本、圖像、視頻、聲音等
  3. 並提供C/C++、Java、Perl、Python、Ruby放數據庫鏈接(ODBC)的編程接口。
  4. 支持SQL的許多功能,例如複雜的SQL查詢,子查詢,外鍵,觸發器,視圖,視圖,多進程併發控制(MVCC)、異步複製。
  5. 在PostgreSQL中,表能夠設置爲從「父」表繼承其特徵。

PostgreSQL是第一個實現多版本併發控制(MVCC)功能的數據庫管理系統,甚至在Oracle以前。MVCC功能在Oracle中稱爲快照隔離。shell

PostgreSQL是一個通用的對象 - 關係數據庫管理系統。它容許您添加使用不一樣編程語言(如C / C ++,Java等)開發的自定義函數。數據庫

PostgreSQL旨在實現可擴展性。在PostgreSQL中,您能夠定義本身的數據類型,索引類型,函數語言等。若是您不喜歡系統的任何部分,您能夠隨時開發自定義插件以加強它以知足您的要求,例如,添加新的優化。編程

若是您須要任何支持,可使用活躍的社區來提供幫助。您能夠隨時找到PostgreSQL社區的答案,以瞭解使用PostgreSQL時可能遇到的問題。許多公司在您須要時提供商業支持服務。安全

3、PostgreSQL工具

  1. psql:命令行工具,也是管理PostgreSQL的主要工具
  2. pgAdmin:是PostgreSQL免費開源的圖形化界面管理工具

4、PostgreSQL安裝

Linux 下安裝、建立用戶和數據庫教程: http://www.javashuo.com/article/p-dseatofr-gq.html服務器

官方下載地址:併發

https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

驗證安裝

有幾種方法能夠驗證安裝。您能夠嘗試從任何客戶端應用程序(例如psql和pgAdmin)鏈接到PostgreSQL數據庫服務器 異步

驗證安裝的快速方法是經過pgAdmin應用程序。

首先,打開SQL shell(psql)

 

5、PostgreSQL數據庫命令

1.打開SQL shell(psql),執行如下建立語句

create database mydb;

2.刪除數據庫命令:

drop database mydb;

這個動做將在物理上把全部與該數據庫相關的文件都刪除而且不可取消, 所以作這中操做以前必定要考慮清楚。

4.訪問數據庫

 運行PostgreSQL的交互式終端程序,它被稱爲psql, 它容許你交互地輸入、編輯和執行SQL命令。

psql mydb; -- 用下面的命令爲mydb數據庫激活它

5.查看數據庫

postgres=# \l   -- l是L的小寫

6.選擇數據庫,若是建立表的話,前提是在哪一個數據庫中:

\c mydb; -- 選擇mydb數據庫,注意\c是小寫

7.若是要退出psql的話,輸入

mydb=> \q

6、建立一個新表

 經過指定表的名字、全部列的名字以及其數據類型來建立新的表:

CREATE TABLE weather (
    city            varchar(80),
    temp_lo         int,           -- 最低溫度
    temp_hi         int,           -- 最高溫度
    prcp            real,          -- 溼度
    date            date
);

和mysql命令終端相似,psql能夠識別該命令直到分號結束。SQL 是對關鍵字和標識符大小寫不敏感的語言,只有在標識符用雙引號包圍時才能保留它們的大小寫。兩個中橫線(--)表示註釋。

PostgreSQL支持標準的SQL類型intsmallintrealdouble precisionchar(N)varchar(N)datetimetimestampinterval,還支持其餘的通用功能的類型和豐富的幾何類型。PostgreSQL中能夠定製任意數量的用戶定義數據類型。於是類型名並非語法關鍵字,除了SQL標準要求支持的特例外。

第二個例子將保存城市和它們相關的地理位置:

CREATE TABLE cities (
    name            varchar(80),
    location        point
);

類型point就是一種PostgreSQL特有數據類型的例子。

刪除一張表:

drop table tablename; -- 刪除數據表

7、添加記錄

insert語句用於向表中添加行:

INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');

須要注意的是:那些不是簡單數字的值,一般使用單引號包裹,date類型實際上對可接收的格式至關靈活,不過咱們應該堅持使用這種清晰的格式。

point類型要求一個座標對做爲輸入,以下:

INSERT INTO cities VALUES ('San Francisco', '(-194.0, 53.0)');

另外一種方式是列出全部的列,一個可選的語法容許你明確地列出列:

INSERT INTO weather (city, temp_lo, temp_hi, prcp, date) VALUES ('San Francisco', 43, 57, 0.0, '1994-11-29');

你能夠用另一個順序列出列或者是忽略某些列, 好比說,咱們不知道降水量:

INSERT INTO weather (date, city, temp_hi, temp_lo) VALUES ('1994-11-29', 'Hayward', 54, 37);

你還可使用COPY從文本文件中裝載大量數據。這種方式一般更快,由於COPY命令就是爲這類應用優化的, 只是比 INSERT少一些靈活性。好比:

COPY weather FROM '/home/user/weather.txt';

8、查詢數據

  •  使用DISTINCT運算符選擇不一樣的行
  • 使用where進行過濾
  • 使用order by進行排序
  • 根據between,in,like選擇不一樣的行
  • 使用group by進行分組
  • 使用hving子句爲 組應用條件
  • 使用inner join、left join、full outer join、cross join進行連表查詢

postgresql的select例子

SELECT語法:

SELECT
 column_1,
 column_2,
 ...
FROM
 table_name;

首先,指定要在select子句中查詢數據表的列,多個列使用逗號分隔,若是要查詢全部列,使用星號(*)做爲簡寫;其次,在From以後指出表名。

使用星號(*)不是一個好習慣:

-- 在SELECT語句中使用星號(*)不是一個好習慣  。想象一下,你有一個包含許多列的大表,SELECT帶有星號(*)的語句將從整列中檢索全部數據,這可能不是必需的。此外,從表中檢索沒必要要的數據會增長數據庫服務器和應用程序之間的流量。所以,您的應用程序將變得緩慢且可擴展性下降。所以,最好在SELECT子句中明確指定列名,以便只從表中獲取所需的數據。
使用星號(*)不是一個好習慣

LIMIT:PostgreSQL 中limit是select語句可選的子句,它獲取查詢返回的全部行的子集。

LIMIT語法:

SELECT * FROM table_name LIMIT n;

若是要在返回行以前跳過m行,請使用offset子句:

SELECT *FROM table LIMIT n OFFSET m;

因爲數據庫錶行的順序是不可預測的,所以在使用limit子句的時候,應始終使用該order by子句來控制行的順序。

咱們常用LIMIT子句來獲取表中最高或最低項的數據,例如,要得到最貴的前十名電影,您能夠按照售價按降序排序,並使用LIMIT條款得到前10部電影:

select * from film order by rental_rate desc limit 10;

ORDER BY:如何對查詢返回的結果集進行排序

當你從表中查詢數據,PostgreSQL按照他們插入的順序返回行,須要對結果集進行排序,須要使用select的order by子句

select column_1,column_2 from table_name order by column_1 ASC,column_2 DESC;

首先,在order by子句中指定要排序的列,若是基於多個列對結果集進行排序,使用逗號分隔。

使用ASC表示升序,DESC按照降序,若是省略,默認按照ASC。

DISTINCT:刪除結果集中重複行的子句

使用distinct語句能夠從結果集中刪除重複的行,該distinct子句爲每組重複項保留一行

select distinct column_1 from table_name; -- column_1列中的值用於評估重複項
select distinct column_1,column_2 from table_name; -- column_1列和column_2二者的結合用於評估重複項

9、過濾數據

  • where:根據指定的條件過濾行
  • limit:從查詢結果集中獲取子集
  • fetch:限制返回的行數
  • in:選擇與值列表中的任何值匹配的數據。
  • between:選擇一系列值的數據
  • like:根據模式匹配過濾結果集
  • is null:檢查值是否爲null

(2019年1月8日 繼續完善...)

相關文章
相關標籤/搜索