Membuat Tabel & Memilih Tipe Data PostgreSQL

CREATE TABLE, kolom auto-increment (SERIAL/IDENTITY), dan memilih tipe data yang tepat: teks, angka, uang, tanggal, boolean, serta kenalan dengan JSONB dan array.

Part 3 dari 25 ± 40 menit Gratis

Analogi: Memilih tipe data itu seperti memilih wadah penyimpanan. Uang dan gula tidak boleh disimpan di wadah yang sama dengan air: NUMERIC seperti timbangan presisi untuk uang, TEXT seperti kardus untuk tulisan, DATE seperti kalender, BOOLEAN seperti saklar ya/tidak. Salah wadah, isinya tumpah atau rusak.

Membuat tabel: CREATE TABLE

Sebelum menyimpan data, kamu perlu "membuat rak"-nya: tabel dengan kolom-kolom beserta tipe datanya.

CREATE TABLE penerbit (
  id          SERIAL PRIMARY KEY,
  nama        VARCHAR(100) NOT NULL,
  kota        VARCHAR(50),
  tgl_berdiri DATE,
  aktif       BOOLEAN
);

Setiap baris di dalam kurung adalah satu kolom: nama_kolom TIPE_DATA aturan-tambahan, dipisah koma. Kolom terakhir tidak diakhiri koma.

Tipe data yang paling sering dipakai

KebutuhanTipeContoh
Bilangan bulatINTEGER (INT), BIGINT, SMALLINTstok, umur, jumlah
Uang & desimal tepatNUMERIC(10,2)harga, saldo (10 digit, 2 di belakang koma)
Desimal perkiraanREAL, DOUBLE PRECISIONsuhu, koordinat (boleh sedikit tidak presisi)
Teks pendek dibatasiVARCHAR(n)nama, kota
Teks bebasTEXTdeskripsi, isi artikel
Ya / tidakBOOLEANaktif, sudah_bayar
TanggalDATEtgl_lahir
Tanggal + jamTIMESTAMP, TIMESTAMPTZdibuat_pada
Data JSONJSONBpengaturan, atribut tambahan
Identitas unikUUIDid publik yang sulit ditebak

Jangan simpan uang dengan FLOAT/REAL! Bilangan desimal perkiraan bisa menghasilkan selisih kecil (0.1 + 0.2 tidak persis 0.3). Untuk uang gunakan NUMERIC atau simpan dalam satuan terkecil sebagai INTEGER (misalnya rupiah utuh).

VARCHAR vs TEXT: mana yang dipilih?

Di PostgreSQL, TEXT dan VARCHAR performanya sama. Pilih VARCHAR(n) bila memang ada batas wajar (nama maksimal 100 karakter), dan TEXT bila panjangnya bebas. Banyak developer Postgres cukup memakai TEXT di mana-mana, ditambah aturan CHECK bila perlu.

Nomor urut otomatis: SERIAL dan IDENTITY

Kolom id sebaiknya terisi otomatis. Ada dua cara:

id SERIAL PRIMARY KEY                                  -- cara klasik, paling umum
id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY    -- cara modern sesuai standar SQL

SERIAL sebenarnya adalah jalan pintas: Postgres membuat sequence (penghitung) di belakang layar lalu memakainya sebagai nilai bawaan kolom. Hasilnya sama: 1, 2, 3, ... otomatis.

Sekilas tipe khas PostgreSQL

CREATE TABLE contoh (
  id       UUID,
  tag      TEXT[],        -- array teks: {'novel','best-seller'}
  atribut  JSONB          -- data JSON yang bisa dicari dan diindeks
);

Tipe seperti array dan JSONB membuat Postgres fleksibel: kamu bisa menyimpan data semi-terstruktur tanpa meninggalkan dunia relasional.

Menghapus dan mengganti tabel

DROP TABLE penerbit;               -- hapus tabel (data ikut hilang!)
DROP TABLE IF EXISTS penerbit;     -- tidak error bila tabel belum ada

Kasus nyata: rancangan tabel pelanggan toko online

Tim BukuKita merancang tabel pelanggan. Setiap kolom dipilih berdasarkan kebutuhan nyata:

CREATE TABLE pelanggan (
  id         SERIAL PRIMARY KEY,
  nama       VARCHAR(80) NOT NULL,
  email      VARCHAR(100),
  saldo_poin INTEGER DEFAULT 0,
  aktif      BOOLEAN DEFAULT TRUE,
  tgl_daftar DATE NOT NULL
);

Perhatikan: poin memakai INTEGER (bilangan bulat), status memakai BOOLEAN bukan teks "ya"/"tidak", dan tanggal memakai DATE supaya bisa dihitung selisih harinya.

Kesalahan yang sering terjadi

  • Menyimpan tanggal sebagai teks '12/10/2026'. Hasilnya tidak bisa diurutkan atau dihitung dengan benar.
  • Memakai REAL/FLOAT untuk uang. Gunakan NUMERIC(12,2) atau simpan dalam rupiah bulat dengan INTEGER/BIGINT.
  • Membuat VARCHAR(10) untuk nomor telepon lalu data gagal masuk karena ada awalan +62. Beri ruang secukupnya, atau pakai TEXT.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X