初識PostgreSql

魂祈梦發表於2024-05-12

前言

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

  1. 開源,商業友好協議
    PG使用的開源協議接近於BSD協議,是對商業使用非常友好的一種協議。
    https://github.com/postgres/postgres

PG不僅開源,還擁有一個非常強大的社群。使用商業友好的開源協議意味著風險更低,不會有哪天掐著你的脖子要錢。

  1. 廣泛的資料型別
    我印象最深刻的是陣列型別,因為MySql中是不支援陣列的,只能透過存json來模擬陣列。
    JSONB,在存放json時以二進位制方式儲存,提高效能。

全文搜尋型別,允許你在文字欄位上執行復雜的搜尋查詢

  1. 併發效能更強

使用

登入

-U指定使用者,-d指定資料庫名稱

psql -U postgres -d postgres

列出全部資料庫

\l

image

列出當前資料庫所有表

\dt

image

檢視某個表的表結構

\d xxx

image

增刪改查

和其他資料庫基本一致,沒什麼不同。

退出登入

\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,刪除資料庫

image
重建資料庫

create database postgres;

到命令頁面(不是psql內部)執行psql命令恢復資料庫

./psql -U postgres -d postgres -f C:/Users/acer/Desktop/backup.sql

資料庫回來了
image

注意

  1. psql內部使用sql命令,必須以;結尾,如果沒有分號,則沒有任何提示(而oracle中不以;結尾是可以執行的)。我查了半天為什麼沒反應。
  2. 如果有一個無效的命令(不以\開頭),psql裡面不會報錯,只是什麼反應都沒有。