PostgreSQL Data Types — Database

Tipe Data Unik PostgreSQL PostgreSQL memiliki tipe data yang lebih kaya dibandingkan database lain. Fitur-fitur ini membuatnya sangat powerful. JSONB Menyimpan

Tipe Data Unik PostgreSQL

PostgreSQL memiliki tipe data yang lebih kaya dibandingkan database lain. Fitur-fitur ini membuatnya sangat powerful.

JSONB

Menyimpan JSON dalam format binary yang efisien dan bisa di-index.

CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(200),
    metadata JSONB
);

INSERT INTO products (name, metadata) VALUES
('Laptop', '{"brand": "Asus", "ram": 16, "storage": "512GB SSD"}');

-- Query ke dalam JSON
SELECT name, metadata->>'brand' AS brand
FROM products
WHERE metadata->>'ram' = '16';

-- Index pada JSONB
CREATE INDEX idx_products_metadata ON products USING GIN(metadata);

Array

CREATE TABLE posts (
    id SERIAL PRIMARY KEY,
    title VARCHAR(200),
    tags TEXT[]  -- array of text
);

INSERT INTO posts (title, tags) VALUES
('Tutorial SQL', ARRAY['sql', 'database', 'tutorial']);

-- Query array
SELECT * FROM posts WHERE 'sql' = ANY(tags);
SELECT * FROM posts WHERE tags @> ARRAY['sql', 'database'];

UUID

CREATE TABLE orders (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    total DECIMAL(10,2)
);
-- Tidak bisa ditebak, cocok untuk public-facing ID

ENUM

CREATE TYPE order_status AS ENUM ('pending', 'paid', 'shipped', 'delivered');

CREATE TABLE orders (
    id SERIAL PRIMARY KEY,
    status order_status DEFAULT 'pending'
);

Range Types

-- Untuk booking, scheduling
CREATE TABLE reservations (
    id SERIAL PRIMARY KEY,
    room_id INT,
    during TSTZRANGE,
    EXCLUDE USING GIST (room_id WITH =, during WITH &&)
    -- Otomatis mencegah booking yang overlap!
);

Kapan Menggunakan Fitur Khusus PostgreSQL?

Yang akan kamu pelajari