VIEW: Menyimpan Query Favoritmu Sebagai "Tabel Virtual"

Membuat VIEW agar query laporan yang panjang bisa dipakai ulang seperti tabel, menyembunyikan kolom sensitif, dan mengetahui batas-batasnya.

Part 33 dari 38 ± 35 menit Gratis

Query laporan yang itu-itu lagi

Ingat query laporan di bab JOIN yang panjang itu? Bayangkan tim keuangan, tim marketing, dan aplikasi dashboard semuanya membutuhkannya. Menyalin query sepanjang 10 baris ke mana-mana berbahaya: jika ada yang diubah, harus mengedit di banyak tempat. VIEW menyelesaikannya.

View adalah query yang disimpan dengan sebuah nama. Setelah dibuat, kamu memakainya persis seperti tabel:

CREATE VIEW v_laporan_pesanan AS
SELECT p.id AS no_pesanan,
       pl.nama AS pelanggan,
       p.tanggal,
       p.status,
       SUM(d.jumlah * pr.harga) AS total
FROM pesanan p
JOIN pelanggan pl ON pl.id = p.pelanggan_id
JOIN detail_pesanan d ON d.pesanan_id = p.id
JOIN produk pr ON pr.id = d.produk_id
GROUP BY p.id, pl.nama, p.tanggal, p.status;

-- memakainya semudah ini:
SELECT * FROM v_laporan_pesanan WHERE status = 'lunas' AND total >= 60000;

Analogi: view seperti shortcut di desktop atau jendela kaca ke tabel aslinya. Datanya tidak disalin; setiap kali dipakai, MySQL menjalankan query di dalamnya dan mengembalikan data terbaru.

Manfaat view

  • Menyederhanakan: query rumit ditulis sekali, dipakai di mana-mana.
  • Konsisten: definisi "total pesanan" satu versi saja, bukan tiga versi berbeda di tiga laporan.
  • Keamanan: berikan hak akses ke view yang hanya menampilkan kolom tertentu, bukan ke tabel aslinya. Misalnya view pelanggan tanpa kolom email dan alamat.
  • Menjaga kompatibilitas: struktur tabel berubah, cukup perbarui view, aplikasi tetap bekerja.

Mengelola view

CREATE OR REPLACE VIEW v_laporan_pesanan AS SELECT ...;  -- mengubah definisi
DROP VIEW v_laporan_pesanan;                             -- menghapus view (data tabel aman)
SHOW FULL TABLES WHERE Table_type = 'VIEW';              -- daftar view

Batasan yang perlu diketahui

  • View biasa tidak menyimpan data sehingga tidak otomatis lebih cepat; ia hanya menyingkat penulisan. View di atas tabel raksasa dengan JOIN berat tetap berat.
  • View sederhana (satu tabel, tanpa GROUP BY) umumnya bisa di-INSERT/UPDATE/DELETE; view dengan JOIN/agregat umumnya hanya untuk dibaca.
  • Jika tabel dasar diubah (kolom dihapus), view yang bergantung padanya bisa error.
  • MySQL tidak punya materialized view bawaan (view yang benar-benar menyimpan hasil); biasanya ditiru dengan tabel ringkasan yang diperbarui terjadwal.

Konvensi: awali nama view dengan v_ (atau vw_) supaya mudah dibedakan dari tabel di daftar objek database.

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