Skip to main content

แนะนำการใช้ PostgreSQL

PostgreSQL คืออะไร ?

Ref: https://www.postgresql.org/

PostgreSQL คือ open-source object-relational database system มาพร้อมกับ feature ที่ support reliability, data integrity และ performance ที่ดี

Feature สำคัญโดดเด่นของ PostgreSQL

  • Object-Relational Database คือการ support object-oriented features ทำให้ support data type ที่หลากหลายกว่า relational database ทั่วๆไป
Data Types
- Primitives: Integer, Numeric, String, Boolean
- Structured: Date/Time, Array, Range / Multirange, UUID
- Document: JSON/JSONB, XML, Key-value (Hstore)
- Geometry: Point, Line, Circle, Polygon
- Customizations: Composite, Custom Types
  • SQL Compliance and Extensions เพิ่มความสามารถ SQL ให้สามารถใช้ feature อย่าง user-defined types, operators, functions ที่ช่วยอำนวยความสะดวกในการ query ในแต่ละเคสมากขึ้น
-- Selecting data from a JSONB column
SELECT
info->'customer' AS customer,
info->>'order' AS order_id
FROM orders
WHERE info->'items' @> '[{"product":"Widget"}]';


-- Querying an array column
SELECT *
FROM products
WHERE tags @> ARRAY['electronics','sale'];

-- Full-text search
SELECT title, ts_rank_cd(textsearch, query) AS rank
FROM articles, to_tsquery('english', 'PostgreSQL | SQL') query
WHERE query @@ textsearch
ORDER BY rank DESC;
  • Data Types and Indexing support การทำ index technique อย่าง B-tree, hash, and GIST
-- Create a B-tree index on the 'email' column of the 'users' table
CREATE INDEX idx_users_email ON users (email);
  • Cross-Platform and Language Support สามารถ run บน OS หลากหลายและหลากหลายภาษาได้

Install PostgreSQL

Ref: https://www.postgresql.org/download/

สามารถลงได้ทั้ง 2 แบบคือ

  1. ลงที่เครื่องเลย
  2. ลงผ่าน docker

ในทีนี้เพื่อให้สามารถ run ได้ทุก Platform เราจะขอใช้ docker-compose.yml ในการ run

version: '3.8'

services:
postgres:
image: postgres:latest
container_name: postgres
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
restart: unless-stopped

pgadmin:
image: dpage/pgadmin4:latest
container_name: pgadmin
environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com
PGADMIN_DEFAULT_PASSWORD: admin
ports:
- "5050:80"
depends_on:
- postgres
restart: unless-stopped

volumes:
postgres_data:

run ด้วย

docker-compose up -d

เมื่อลองเปิดด้วย localhost:5050 แล้ว login ด้วย user, pass ตาม config จะเจอหน้าจอประมาณนี้ออกมาได้

postgresql-01

หลังจากนั้นใส่ config เพื่อต่อเข้ากับ PostgreSQL

postgresql-02

เมื่อลองกดต่อเข้าไปก็จะเจอหน้า Host ของ database

  • ลองกดขยายดู หากเจอ mydatabase (ตาม config docker-compose) = ถือว่าสร้างได้แล้วเรียบร้อย

postgresql-03

รู้จัก pgAdmin

Ref: https://www.pgadmin.org/

เริ่มต้นสร้าง table products ขึ้นมา

postgresql-04

postgresql-05

postgresql-06

postgresql-07

เมื่อสร้างเรียบร้อยจะได้ตารางออกมา

postgresql-08

ลอง insert, query ข้อมูล

  • insert ข้อมูลเข้า

postgresql-09

postgresql-10

  • query ดึงข้อมูล

postgresql-11

postgresql-12