CREATE TABLE your_table_name (
id SERIAL PRIMARY KEY, -- Secara otomatis membuat sequence
regional VARCHAR(255) NOT NULL,
branch VARCHAR(255) NOT NULL,
site_id VARCHAR(255) NOT NULL,
sow_accurate TEXT NOT NULL,
capex_name VARCHAR(255) NOT NULL,
connected_date TIMESTAMP NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_your_table_name_id ON your_table_name (id);
CREATE INDEX idx_your_table_name_site_id ON your_table_name (site_id);
sequence (urutan) di PostgreSQL digunakan untuk menghasilkan nilai numerik yang berurutan
Menggunakan Sequence yang Sudah Ada
Jika Anda sudah membuat sequence (seperti `broadcasts_id_seq`), Anda bisa menggunakannya di tabel dengan:
Membuat Sequence Langsung di Tabel (Cara Paling Umum)
PostgreSQL menyediakan cara singkat dengan tipe data `SERIAL`:
CREATE TABLE nama_tabel (
id SERIAL PRIMARY KEY, -- Secara otomatis membuat sequence
kolom_lain1 VARCHAR(100),
kolom_lain2 INT
-- kolom lainnya
);
ini setara dengan
CREATE SEQUENCE nama_tabel_id_seq;
CREATE TABLE nama_tabel (
id INTEGER NOT NULL DEFAULT nextval('nama_tabel_id_seq'),
kolom_lain1 VARCHAR(100),
kolom_lain2 INT,
PRIMARY KEY (id)
);
ALTER SEQUENCE nama_tabel_id_seq OWNED BY nama_tabel.id;
Menambahkan Sequence ke Tabel yang Sudah Ada
Jika tabel sudah ada tanpa sequence:
CREATE SEQUENCE nama_sequence
[INCREMENT BY n] -- Nilai kenaikan (default: +1)
[MINVALUE n] -- Nilai minimum (default: 1)
[MAXVALUE n] -- Nilai maksimum (default: 2^63-1)
[START WITH n] -- Nilai awal (default: MINVALUE)
[CYCLE | NO CYCLE] -- Apakah sequence diulang setelah mencapai MAXVALUE?
[CACHE n]; -- Jumlah nilai yang di-cache untuk performa (opsional)
-- Langkah 1: Buat sequence
CREATE SEQUENCE nama_tabel_id_seq;
-- Langkah 2: Set kolom untuk menggunakan sequence
ALTER TABLE nama_tabel
ALTER COLUMN id SET DEFAULT nextval('nama_tabel_id_seq');
-- Langkah 3: Set nilai sequence ke nilai maksimum yang ada
SELECT setval('nama_tabel_id_seq', (SELECT MAX(id) FROM nama_tabel));
contoh :
-- Membuat sequence terpisah
CREATE SEQUENCE broadcasts_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
-- Membuat tabel yang menggunakan sequence
CREATE TABLE broadcasts (
id BIGINT NOT NULL DEFAULT nextval('broadcasts_id_seq'),
title VARCHAR(255) NOT NULL,
schedule TIMESTAMP NOT NULL,
is_active BOOLEAN DEFAULT true,
PRIMARY KEY (id)
);
-- Mengaitkan sequence dengan tabel
ALTER SEQUENCE broadcasts_id_seq OWNED BY broadcasts.id;
mengubah/ngereset sebuah sequence yang sudah ada sehingga nilai berikutnya yang dihasilkan akan dimulai kembali dari 1
ALTER SEQUENCE user_id_seq RESTART WITH 1;
mengubah increment +5
ALTER SEQUENCE user_id_seq INCREMENT BY 5;
hapus sequence
DROP SEQUENCE user_id_seq;
ALTER TABLE public.a4_npac_5g_site_weekly RENAME TO a4_npac_5g_site_weekly_old;
ALTER TABLE nama_tabel
ADD COLUMN nama_kolom tipe_data [constraint];
menambah satu kolom baru
ALTER TABLE users
ADD COLUMN email VARCHAR(255);
menambah lebih dari satu kolom baru
ALTER TABLE users
ADD COLUMN phone VARCHAR(15),
ADD COLUMN address TEXT;
Menambahkan Kolom dengan Constraint
menambahkan kolom dengan constraint seperti NOT NULL, DEFAULT, atau UNIQUE
ALTER TABLE users
ADD COLUMN age INT NOT NULL;
ALTER TABLE users
ADD COLUMN created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
ALTER TABLE users
ADD COLUMN username VARCHAR(50) UNIQUE;
menghapus semua data dari tabel
TRUNCATE TABLE nama_tabel;
menghapus semua data dari tabel dengan opsi RESTART IDENTITY untuk mereset sequence secara otomatis mulai dari 1
TRUNCATE TABLE nama_tabel RESTART IDENTITY;
DROP TABLE nama_tabel;