前言
PostgreSql常被稱為Postgres
,簡稱PG
,後文中以PG稱呼。是當今非常流行的一種資料庫。
為什麼使用PG
在分析這個問題之前,我認為有必要說一說Oracle和MySql這兩家資料庫。
Oracle
Oracle作為佔有率最高的資料庫,由Oracle公司開發,提供商業支援,其流行的原因在於其強大的效能和較為完善的資料庫設計,然而,Oracle是一家商業公司,使用其產品是有一定風險的,更何況是資料庫這麼重要的東西。
目前很多公司都有去Oracle的趨勢。
MySql
MySql是商業開源的,但是MySql前兩年就已經被Oracle收購。現在依然非常流行。由於被Oracle收購,其創始人開發了分支版本MariaDB,以GPL2.0協議開源。
https://github.com/MariaDB/server
PG
- 開源,商業友好協議
PG使用的開源協議接近於BSD協議,是對商業使用非常友好的一種協議。
https://github.com/postgres/postgres
PG不僅開源,還擁有一個非常強大的社群。使用商業友好的開源協議意味著風險更低,不會有哪天掐著你的脖子要錢。
- 廣泛的資料型別
我印象最深刻的是陣列型別,因為MySql中是不支援陣列的,只能透過存json來模擬陣列。
JSONB,在存放json時以二進位制方式儲存,提高效能。
全文搜尋型別,允許你在文字欄位上執行復雜的搜尋查詢
- 併發效能更強
使用
登入
-U指定使用者,-d指定資料庫名稱
psql -U postgres -d postgres
列出全部資料庫
\l
列出當前資料庫所有表
\dt
檢視某個表的表結構
\d xxx
增刪改查
和其他資料庫基本一致,沒什麼不同。
退出登入
\q
備份資料庫
這個是用命令,不是psql內。
下面是powershell終端,執行非path內的命令時不能省略./
powershell可以使用正斜槓和反斜槓來作為路徑分隔符。
# cd到pg的bin目錄
cd 'C:\Program Files\PostgreSQL\16\bin'
./pg_dump -U postgres -d postgres -f C:/Users/acer/Desktop/backup.sql
恢復資料庫
我們進入psql,刪除資料庫
重建資料庫
create database postgres;
到命令頁面(不是psql內部)執行psql命令恢復資料庫
./psql -U postgres -d postgres -f C:/Users/acer/Desktop/backup.sql
資料庫回來了
注意
- psql內部使用sql命令,必須以;結尾,如果沒有分號,則沒有任何提示(而oracle中不以;結尾是可以執行的)。我查了半天為什麼沒反應。
- 如果有一個無效的命令(不以\開頭),psql裡面不會報錯,只是什麼反應都沒有。