create view mysql | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: create view mysql

Thursday, April 9, 2026

create view mysql

🏠 Beranda Tutorial MySQL Artikel 25
🔴 Lanjutan 🗄️ Database MySQL ⏱️ 12 Menit Baca 📘 Artikel 25 dari 28

Membuat View: Menyimpan Query
sebagai Virtual Tabel

Kuasai CREATE VIEW MySQL dan jadikan query kompleksmu bisa dipanggil hanya dengan satu nama — sesimpel itu.

6
Perintah SQL
8
Contoh Query
12
Menit Baca

Bayangkan kamu bekerja di sebuah toko online. Setiap hari, atasan selalu minta laporan yang sama: "Tampilkan nama pelanggan, total pesanan, dan status pembayarannya." Kalau setiap hari kamu harus menulis ulang query panjang itu dari nol — query yang melibatkan JOIN tiga tabel — pasti capek banget, kan? Nah, di sinilah CREATE VIEW MySQL hadir sebagai penyelamatmu.

View adalah cara MySQL untuk "menyimpan" sebuah query SELECT menjadi sebuah virtual tabel. Bukan tabel sungguhan yang menyimpan data di disk, melainkan semacam "shortcut" bernama yang bisa kamu panggil kapan saja seolah-olah memanggil tabel biasa. Konsep ini sangat penting untuk dipahami, terutama saat database-mu mulai kompleks dengan banyak relasi tabel.

Ini adalah artikel ke-25 dari seri 28 artikel Belajar Query SQL MySQL. Di artikel ini, kamu akan belajar cara membuat, menggunakan, mengubah, dan menghapus View di MySQL menggunakan studi kasus toko online yang nyata. Siap? Ayo kita mulai!

💡
Fakta Menarik

Fitur VIEW sudah ada di MySQL sejak versi 5.0 (tahun 2005). Meski sudah lebih dari dua dekade, survei komunitas developer menunjukkan bahwa lebih dari 60% developer pemula masih jarang memanfaatkan View dalam proyek mereka — padahal fitur ini bisa memangkas jumlah kode SQL berulang hingga 70%!

Apa Itu View di MySQL? (dan Kenapa Kamu Butuh Ini)

Analoginya begini: kamu punya resep masakan favorit yang panjang banget — 20 langkah. Daripada menghafal ulang setiap kali masak, kamu tulis di selembar kertas dan kasih nama: "Resep Rendang Spesial". Kapan pun butuh, tinggal buka kertas itu. View di MySQL persis seperti itu.

Secara teknis, View adalah objek database yang berisi definisi query SELECT yang tersimpan. Ketika kamu memanggil View, MySQL akan menjalankan query yang tersimpan di dalamnya secara otomatis dan menampilkan hasilnya seolah-olah itu adalah tabel biasa.

-- Sintaks Dasar CREATE VIEW MySQL
CREATE VIEW nama_view
AS
SELECT kolom1, kolom2, ...
FROM nama_tabel
WHERE kondisi; -- opsional

Misalkan kita punya tabel produk, pelanggan, dan pesanan di database toko online. Berikut contoh sederhana membuat View dari tabel produk:

-- Membuat View: daftar produk aktif
CREATE VIEW v_produk_aktif AS
SELECT
  id_produk,
  nama_produk,
  harga,
  stok,
  kategori
FROM produk
WHERE status = 'aktif';

-- Memanggil View (semudah SELECT tabel biasa!)
SELECT * FROM v_produk_aktif;

📊 Output / Hasil Query:

id_produk nama_produk harga stok kategori
1 Laptop Gaming A 12.500.000 15 Elektronik
3 Mouse Wireless X 350.000 80 Aksesori
5 Headphone Pro Z 875.000 42 Elektronik
💎 TIP PRAKTIS

Biasakan memberi prefix v_ pada nama View (misal: v_produk_aktif). Ini memudahkan kamu membedakan antara tabel sungguhan dan View saat melihat daftar objek di database.

CREATE VIEW MySQL dengan JOIN: Studi Kasus Toko Online

Kekuatan sejati View terasa saat kamu menyimpan query yang melibatkan JOIN  beberapa tabel (Artikel22). Di toko online, sangat umum ingin melihat data pesanan lengkap — siapa yang pesan, produk apa, berapa total harga, status pembayaran. Query seperti ini biasanya panjang dan berulang.

Dengan CREATE VIEW MySQL, kamu cukup tulis sekali dan simpan. Selanjutnya, cukup panggil nama View-nya!

-- View: laporan pesanan lengkap
CREATE VIEW v_laporan_pesanan AS
SELECT
  ps.id_pesanan,
  pl.nama_pelanggan,
  pl.email,
  pr.nama_produk,
  ps.jumlah,
  (ps.jumlah * pr.harga) AS total_harga,
  ps.status_pembayaran,
  ps.tanggal_pesan
FROM pesanan ps
JOIN pelanggan pl ON ps.id_pelanggan = pl.id_pelanggan
JOIN produk pr ON ps.id_produk = pr.id_produk;

-- Sekarang panggil sesimple ini!
SELECT * FROM v_laporan_pesanan
WHERE status_pembayaran = 'lunas'
ORDER BY tanggal_pesan DESC;

📊 Output / Hasil Query:

id_pesanan nama_pelanggan nama_produk jumlah total_harga status_pembayaran
1021 Andi Pratama Laptop Gaming A 1 12.500.000 lunas
1019 Sari Dewi Headphone Pro Z 2 1.750.000 lunas
1015 Budi Santoso Mouse Wireless X 3 1.050.000 lunas
⚠️ PERINGATAN

View tidak menyimpan data. Setiap kali kamu memanggil View, MySQL menjalankan ulang query aslinya. Artinya, jika query di dalam View lambat (misal JOIN tabel besar tanpa index), pemanggilan View-pun akan lambat. Pastikan tabel yang direferensikan punya index yang tepat!

Mengelola View: Ubah, Cek, dan Hapus

Setelah membuat View, kamu pasti butuh mengelolanya — entah untuk mengubah definisi query-nya, mengecek daftar View yang ada, atau menghapus yang sudah tidak diperlukan. MySQL menyediakan perintah yang lengkap untuk semua itu.

-- 1. MENGUBAH VIEW (gunakan CREATE OR REPLACE)
CREATE OR REPLACE VIEW v_produk_aktif AS
SELECT id_produk, nama_produk, harga, stok, kategori, rating
FROM produk
WHERE status = 'aktif';

-- 2. MELIHAT DAFTAR SEMUA VIEW di database
SHOW FULL TABLES WHERE table_type = 'VIEW';

-- 3. MELIHAT DEFINISI sebuah View
SHOW CREATE VIEW v_laporan_pesanan;

-- 4. MENGHAPUS VIEW
DROP VIEW IF EXISTS v_produk_aktif;

📊 Output SHOW FULL TABLES WHERE table_type = 'VIEW':

Tables_in_toko_online Table_type
v_laporan_pesanan VIEW
v_produk_aktif VIEW
💎 TIP PRAKTIS

Selalu gunakan CREATE OR REPLACE VIEW daripada menghapus dulu lalu membuat ulang. Perintah ini lebih aman karena tidak merusak privilege/permission pengguna yang mungkin sudah diberikan ke View tersebut.

View dengan Agregasi: Statistik Penjualan Instan

View bukan hanya untuk menyederhanakan JOIN. Kamu juga bisa menyimpan query agregasi (detail pembahasan query agregasi pada arikel14) seperti SUM(), COUNT(), dan AVG() di dalamnya. Ini sangat berguna untuk dashboard atau laporan rutin.

-- View: statistik penjualan per pelanggan
CREATE VIEW v_statistik_pelanggan AS
SELECT
  pl.id_pelanggan,
  pl.nama_pelanggan,
  COUNT(ps.id_pesanan) AS total_pesanan,
  SUM(ps.jumlah * pr.harga) AS total_belanja,
  AVG(ps.jumlah * pr.harga) AS rata_rata_belanja
FROM pelanggan pl
LEFT JOIN pesanan ps ON pl.id_pelanggan = ps.id_pelanggan
LEFT JOIN produk pr ON ps.id_produk = pr.id_produk
GROUP BY pl.id_pelanggan, pl.nama_pelanggan;

-- Siapa pelanggan terbaik kita?
SELECT * FROM v_statistik_pelanggan
ORDER BY total_belanja DESC
LIMIT 5;

📊 Output / Hasil Query:

id_pelanggan nama_pelanggan total_pesanan total_belanja rata_rata_belanja
7 Andi Pratama 8 47.250.000 5.906.250
12 Sari Dewi 5 31.800.000 6.360.000
3 Budi Santoso 11 28.450.000 2.586.363

📋 Referensi Sintaks Lengkap CREATE VIEW MySQL

-- ============================================
-- SINTAKS LENGKAP (dengan keterangan)
-- ============================================

CREATE [OR REPLACE] -- OR REPLACE: timpa view lama jika ada
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
                           -- ALGORITHM: cara MySQL memproses view
VIEW nama_view [(daftar_kolom)]
                           -- nama_view: identitas view kamu
AS
  SELECT ... -- query yang ingin disimpan
[WITH [CASCADED | LOCAL] CHECK OPTION];
                           -- CHECK OPTION: validasi saat INSERT/UPDATE

🔬 Langkah Praktikum: Dari Nol Sampai Bisa

1
Siapkan Database dan Tabel

Buat database toko online dan tiga tabel utama: produk, pelanggan, pesanan.

CREATE DATABASE toko_online;
USE toko_online;

CREATE TABLE produk (
  id_produk INT PRIMARY KEY AUTO_INCREMENT,
  nama_produk VARCHAR(100),
  harga DECIMAL(12,2),
  stok INT,
  kategori VARCHAR(50),
  status ENUM('aktif','nonaktif') DEFAULT 'aktif'
);
2
Isi Data Sampel

Masukkan beberapa baris data ke setiap tabel agar View punya data untuk ditampilkan.

INSERT INTO produk (nama_produk, harga, stok, kategori, status) VALUES
('Laptop Gaming A', 12500000, 15, 'Elektronik', 'aktif'),
('Mouse Wireless X', 350000, 80, 'Aksesori', 'aktif'),
('Headphone Pro Z', 875000, 42, 'Elektronik', 'aktif'),
('Kabel HDMI Lama', 75000, 0, 'Aksesori', 'nonaktif');
3
Buat View Pertamamu

Jalankan perintah CREATE VIEW untuk menyimpan query produk aktif.

CREATE VIEW v_produk_aktif AS
SELECT id_produk, nama_produk, harga, stok, kategori
FROM produk
WHERE status = 'aktif';

-- Verifikasi: Query view
SELECT * FROM v_produk_aktif;
4
Buat View dengan JOIN

Buat View laporan pesanan yang menggabungkan tiga tabel sekaligus.

CREATE VIEW v_laporan_pesanan AS
SELECT ps.id_pesanan, pl.nama_pelanggan,
  pr.nama_produk, ps.jumlah,
  (ps.jumlah * pr.harga) AS total_harga,
  ps.status_pembayaran
FROM pesanan ps
JOIN pelanggan pl ON ps.id_pelanggan = pl.id_pelanggan
JOIN produk pr ON ps.id_produk = pr.id_produk;
5
Uji Coba dan Eksplorasi

Panggil View dengan berbagai filter dan ORDER BY untuk membuktikan fleksibilitasnya.

-- Filter View seperti tabel biasa
SELECT * FROM v_laporan_pesanan
WHERE total_harga > 5000000;

-- Kombinasikan dengan fungsi agregat
SELECT nama_pelanggan, SUM(total_harga)
FROM v_laporan_pesanan
GROUP BY nama_pelanggan;

📊 Tabel Perbandingan: Tabel Biasa vs View

Aspek Tabel Biasa View
Penyimpanan Data ✅ Menyimpan data di disk ❌ Tidak menyimpan data (virtual)
Pembuatan CREATE TABLE CREATE VIEW
INSERT / UPDATE / DELETE ✅ Selalu bisa ⚠️ Terbatas (hanya View sederhana)
Performa ✅ Lebih cepat (data sudah tersimpan) ⚠️ Bergantung pada query di dalamnya
Kegunaan Utama Menyimpan data utama Menyederhanakan query kompleks
Abstraksi Keamanan ❌ Semua kolom terekspos ✅ Bisa sembunyikan kolom sensitif
Pembaruan Data Manual (INSERT/UPDATE) ✅ Otomatis (mencerminkan data terbaru)
🎯
Tips dari Trainer Lapangan

Gunakan View sebagai "lapisan keamanan" di aplikasimu. Misalnya, buat View yang hanya menampilkan kolom nama dan email pelanggan (tanpa nomor telepon atau alamat), lalu berikan akses SELECT ke View ini ke user aplikasi. Data sensitif tetap aman di tabel aslinya!

🚀
Insight: View dalam Tim Development

Di tim development nyata, View sering digunakan untuk standarisasi query. Satu orang database admin membuat View yang sudah dioptimasi, dan seluruh tim frontend/backend cukup memanggil View tersebut. Ini mencegah setiap developer menulis query JOIN yang mungkin berbeda-beda dan berpotensi salah. Satu sumber kebenaran, banyak pengguna!

🎓 Kesimpulan

  • CREATE VIEW MySQL memungkinkan kamu menyimpan query SELECT sebagai virtual tabel yang bisa dipanggil berulang kali.
  • View tidak menyimpan data — ia selalu mencerminkan data terkini dari tabel sumber.
  • Gunakan CREATE OR REPLACE VIEW untuk memperbarui View tanpa menghapusnya terlebih dahulu.
  • View bisa menggabungkan JOIN, agregasi, filter — query apapun yang valid bisa dijadikan View.
  • View berguna untuk menyederhanakan query kompleks, keamanan data, dan standarisasi di dalam tim.
  • Hapus View yang tidak diperlukan dengan DROP VIEW IF EXISTS.

View bukan fitur mewah yang hanya dipakai developer senior. Justru ini adalah salah satu alat paling praktis yang akan membuat hidupmu sebagai developer jauh lebih mudah setiap hari. Mulai sekarang, setiap kali kamu nulis query yang sama lebih dari dua kali — jadikan View!


📚
Navigasi Seri Artikel · MySQL Mastery
← Artikel Sebelumnya

Artikel 24/28: UNION dan UNION ALL

Menggabungkan hasil dua SELECT menjadi satu — perbedaan UNION (hapus duplikat) vs UNION ALL (tampilkan semua).

Artikel Selanjutnya →

Artikel 26/28: CREATE INDEX — Mempercepat Query MySQL

Membuat indeks untuk mempercepat pencarian di tabel besar — kritis untuk performa aplikasi nyata.

Artikel 25 dari 28 dalam seri ini 89% selesai
#MySQL #SQL #Database #Query #Tutorial #CREATE VIEW MySQL #BelajarSQL

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux