Ana içeriğe geç
Modül 9 · Ders 4 ders 4Kurstaki 36/57~12 min
Modül dersleri (4/4)

Görünümler ve veri soyutlama

Derslerimiz boyunca sorguların (özellikle karmaşık JOIN'lar veya GROUP BY gibi toplamalar) uzamaya ve kurallar ve hesaplamalarla dolmaya başladığını fark edeceksiniz.

Ya **tamamlanan sorguyu zihinsel olarak kaydetmenin ve onu görünümden gizlemenin, o andan itibaren tüm niyet ve amaçlar açısından DB'nin normal bir "tablosu" gibi davranarak onu gizlemenin bir yolu olsaydı?

Görünümler dünyasına hoş geldiniz.

GÖRÜNÜM OLUŞTUR

Bir görünüm aslında kalıcı, adlandırılmış bir SQL sorgusudur, ancak tıpkı bir "sanal" tablo gibi davranır!

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;

Tamamlamak! Artık JOIN ve GROUP BY işlemlerini her zaman yeniden yapmak zorunda kalmak yerine, yalnızca tamamen normal sorgular yazmanız gerekir:

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

Görünümler ve "gerçek zamanlı veriler"

Çok yaygın bir efsane, Views'ın verileri aldığı, fiyatlar veya sıralamalar gibi toplamları hesapladığı ve fotoğraf gibi hüzünlü, kalıcı bir anlık görüntü ürettiği düşüncesidir. Yanlış (neredeyse her zaman)! Varsayılan olarak, Görünümler sanaldır: SELECT'inize bir Görünümün adını her girdiğinizde, Postgres sahne arkasında, veritabanının tam o milisaniyedeki durumuna dayalı gerçek zamanlı bir hesaplama çalıştırarak isteğinizi birleştirir. Böylece hiçbir zaman eski verileri okumayacaksınız.

Bunlar ne için?

  • Basitlik: görünümler harici uygulamaları değişikliklerden korur. Eğer ön uç ekibi verileri top_selling görünümünden okuması gerektiğini biliyorsa, yarın en çok satanları ortaya çıkarmak için üç ara ilişki ekleyerek veritabanını değiştirirsek endişelenmelerine gerek kalmaz!
  • Güvenlik ve ayırma: Büyük veri tabanlarında, bir görünüm kullanıcı verilerinin bir kısmını önceden seçip harici geliştiricilerden gizleyebilir ve onlara (örneğin) yalnızca gerçek adlardan arındırılmış analizlerin bir alt görünümüne erişim izni verebilir.

Görünümü Bırakma

Tıpkı tablolarda olduğu gibi, artık ihtiyacınız olmadığında DROP komutuyla devam edersiniz:

SQL
DROP VIEW user_spending;

Deneyin

Egzersiz#sql.m9.l4.e1
Denemeler: 0Yükleniyor…

'High_value_products' adında bir görünüm (GÖRÜNÜM) oluşturun. 'Ürünler' tablosundan 3 temel alanın tümünü ("kimlik", "isim", "fiyat") seçen bir kap gibi davranmalıdır, FAKAT yalnızca ve her zaman 'fiyatı' 50,00'den büyük olan ürünler için.

Düzenleyici yükleniyor…
İpucu göster

SELECT ... FROM ... WHERE ... OLARAK CREATE VIEW view_name yazın.

3 denemeden sonra çözüm mevcut

Bir Görünümü Çağırma

Egzersiz#sql.m9.l4.e2
Denemeler: 0Yükleniyor…

Platformdaki her alıştırma izole (ve temiz) bir ortamda çalıştırıldığından, bu adımda önceki görünüm artık mevcut değildir. 'High_value_products' görünümünü yeniden oluşturun (hala fiyatı > 50 olan ürünlerle) ve ardından hemen sonraki satırda, çalıştığını doğrulamak için azalan fiyata (DESC) göre sıralanmış tüm içeriğin bir SEÇİMİNİ çalıştırın.

Düzenleyici yükleniyor…
İpucu göster

Şunu unutmayın; SQL ifadeleri arasında (ilk satırın sonuna koyun)! Bu, Postgres'in 2 görevi sırayla yürütmesine olanak tanır.

3 denemeden sonra çözüm mevcut