Lompati ke konten utama
Modul 9 · Pelajaran 4 dari 436/57 dalam kursus~12 min
Pelajaran modul (4/4)

Tampilan dan abstraksi data

Sepanjang pelajaran kami, Anda akan memperhatikan bahwa kueri (terutama JOIN yang kompleks atau agregasi seperti GROUP BY) mulai menjadi panjang dan penuh dengan aturan dan perhitungan.

Bagaimana jika ada cara untuk menyimpan secara mental kueri yang telah selesai dan menyembunyikannya dari pandangan, dengan berpura-pura bahwa kueri tersebut, untuk semua maksud dan tujuan, merupakan "tabel" normal dari DB?

Selamat datang di dunia Tampilan.

BUAT TAMPILAN

Tampilan pada dasarnya adalah kueri SQL bernama persisten, namun berperilaku seperti tabel "virtual"!

SQL
CREATE VIEW user_spending AS
SELECT
  c.id,
  c.first_name,
  SUM(o.amount) as total_spent
FROM customers c
JOIN orders o ON c.id = o.customer_id
GROUP BY c.id;

Selesai! Sekarang, daripada harus selalu mengulang JOIN dan GROUP BY, Anda hanya perlu menulis kueri normal:

SQL
SELECT * FROM user_spending WHERE total_spent > 100;
-- Postgres dietro le quinte richiamerà automaticamente la grande formula.

Tampilan dan "data waktu nyata"

Mitos yang sangat umum adalah berpikir bahwa Views mengambil data, menghitung jumlah seperti harga atau peringkat, dan menghasilkan cuplikan yang menyedihkan, seperti foto. Salah (hampir selalu)! Secara default, Tampilan bersifat virtual: setiap kali Anda memasukkan nama Tampilan di SELECT Anda, Postgres di belakang layar menggabungkan permintaan Anda dengan menjalankan komputasi real-time berdasarkan status DB tepat pada milidetik tersebut. Jadi Anda tidak akan pernah membaca data basi.

Untuk apa itu?

  • Kesederhanaan: tampilan melindungi aplikasi eksternal dari perubahan. Jika tim frontend mengetahui bahwa mereka harus membaca data dari tampilan top_selling, mereka tidak perlu khawatir jika besok kita memodifikasi database dengan menambahkan tiga relasi perantara untuk mengeluarkan yang terlaris!
  • Keamanan dan segregasi: di DB berukuran besar, tampilan dapat memilih terlebih dahulu dan menyembunyikan sebagian data pengguna dari pengembang eksternal, sehingga memberi mereka akses (misalnya) hanya ke sub-tampilan analitik yang dihapus dari nama asli.

Menjatuhkan Pandangan

Sama seperti tabel, bila tidak diperlukan lagi Anda lanjutkan dengan perintah DROP:

SQL
DROP VIEW user_spending;

Cobalah

Latihan#sql.m9.l4.e1
Upaya: 0Memuat…

Buat tampilan (LIHAT) yang disebut 'produk_bernilai tinggi'. Itu harus berperilaku sebagai wadah yang memilih ketiga bidang penting (`id`, `nama`, `harga`) dari tabel 'produk', TETAPI hanya dan selalu untuk produk yang memiliki 'harga' lebih besar dari 50,00.

Memuat editor…
Tunjukkan petunjuk

Tulis CREATE VIEW view_name AS SELECT...FROM...WHERE...

Solusi tersedia setelah 3 upaya

Memanggil Tampilan

Latihan#sql.m9.l4.e2
Upaya: 0Memuat…

Karena setiap latihan di platform dijalankan di lingkungan yang terisolasi (dan bersih), tampilan sebelumnya tidak ada lagi pada langkah ini. Buat kembali tampilan 'produk_bernilai tinggi' (masih dengan produk yang memiliki harga > 50) dan kemudian, pada baris berikutnya, jalankan SELECT dari semua kontennya yang diurutkan berdasarkan harga menurun (DESC) untuk memverifikasi bahwa itu berfungsi.

Memuat editor…
Tunjukkan petunjuk

Jangan lupa; di antara pernyataan SQL (letakkan di akhir baris pertama)! Ini memungkinkan Postgres menjalankan 2 tugas secara berurutan.

Solusi tersedia setelah 3 upaya