Tavsiye, 2024

Editörün Seçimi

SQL'de Nerede ve Hangi Maddeye Sahip Olma Arasındaki Fark

NEREDE ve HAVING yan tümcesi temel olarak SQL sorgularının ifadesinde kullanılır, bunlar belirli bir yüklem kullanarak sonuç ilişkisindeki birleşimi kısıtlamamızı sağlar. WHERE ve HAVING arasındaki en büyük fark, WHERE yan tümcesinin, gerektiğinde birleştirme koşulları da dahil olmak üzere ilişkilerden tekilleri (satırları) seçme koşullarını belirlemesidir. Öte yandan, HAVING yan tümcesi, tek tek tekillerden ziyade seçilen gruplar için bir şart belirtir.

SQL, Yapısal Sorgu Dili'nin kısaltmasıdır; Veritabanlarından verilere erişmek için kullanılan kapsamlı ya da bildirimsel bir veritabanı dilidir.

Karşılaştırma Tablosu

Karşılaştırma için temelNEREDEHAVING
TemelSatır işlemlerinde uygulanır.Sütun işlemlerinde uygulanır.
UygulananTek sıraÖzetlenen satır veya gruplar.
Veri almaYalnızca duruma göre belirli verileri belirli satırlardan alır.İlk başta, tam veri alınır ve sonra duruma göre ayrılır.
Toplama İşlevleriWHERE yan tümcesinde görünemez.HAVING yan tümcesinde görünebilir.
İle kullanılanSELECT ve UPDATE, DELETE veya bunlardan biri gibi diğer ifadeler.SELECT ifadesi olmadan kullanılamaz.
Gibi davranÖn filtrePost-filtre
GRUP TARAFINDANNEREDE sonra geliyor.HAVING sonra geliyor.

Nerede cümlenin tanımı

SQL WHERE deyimi, verileri tek bir tablodan alma sırasındaki veya birden çok tabloyla birleştirerek bir durumu tanımlamak için kullanılır. Belirtilen koşul yerine getirildiğinde, yalnızca belirli bir değeri tablodan döndürür. WHERE yan tümcesi, kayıtları nüfuz etmek ve yalnızca gerekli kayıtları almak için kullanılır.

SQL ayrıca mantıksal bağlaçları da uygular ve ya da Boole koşulu olarak da bilinen WHERE deyiminde değildir ; Koşulların, tülleri geri almak için doğru olması gerekir. Mantıksal bağlayıcı ifadelerin işlenenleri, <, <=, >, > =, = ve gibi karşılaştırma işleçlerini içerir. . Bu karşılaştırma operatörleri dizeleri ve aritmetik ifadeleri karşılaştırır. SELECT deyiminde ve ayrıca UPDATE, DELETE deyimlerinde kullanılabilir.

Bir örnek alalım. Aşağıda ' Satış ' tablosu adı altında gösterilen tablo, ' Ürün ' ve ' Satış_amatı ' özelliklerinden oluşur.

Telefon ve konuşmacıların toplam sayısını hesaplamak için aşağıdaki sorgu yazılmalıdır.

 SELECT Ürün, toplam (Sales_amount) AS Total_sales Satıştan itibaren ('Telefon', 'Hoparlörler') GROUP BY Ürün; 

Çıktıyı takiben, satırların ilk önce filtrelendiği, telefon ve hoparlör sıralarının alındığı ve ardından toplama işlevinin gerçekleştirildiği sonuç çıktıdır.

Cümleye Sahip Olmanın Tanımı

SQL, GROUP BY deyimiyle birlikte kullanılabilecek HAVING deyimini sağlar. Bu HAVING maddesi, belirli şartları yerine getiren grupların değerlerini almaya yardımcı olur. WHERE yan tümcesi seçim sırasında HAVING yan tümcesiyle birlikte de kullanılabilir, WHERE yan tümcesi ayrı satırı filtreler. Daha sonra sıralar gruplandırılır ve toplam hesaplamalar yapılır, sonunda HAVING yan tümcesi grupları filtreler.

GROUP BY anahtar sözcüğü kullanılmadığında, NEREDE ile aynı şekilde hareket eder. Min, max, avg, sum ve count gibi grup fonksiyonları sadece iki maddede görünebilir: SELECT ve HAVING yan tümcesi. Öznitelik grubundaki her bir değere karşılık gelen perdelerde bir koşul sağlar. Durumu sağlayan tek kayıt kümesi sonuç olarak gösterilecektir.

Burada ayrıca WHERE deyimi ile aynı örneği alıyor ve aynı ' Satışlar ' tablosunu düşünüyoruz. HAVING yan tümcesini kullanarak telefon ve konuşmacıların toplam sayısını hesaplamak istediğimizde, aşağıdaki sorguyu yazacağız.

 SELECT Ürün, toplam (Sales_amount) AS Total_sales Satış Grubundaki Ürüne Göre ('telefon', 'Hoparlörler'); 

Sorgu, ürünlerin önce alındığı aşağıdaki çıktıyı üretir, daha sonra toplama işlevi (toplamı) gerçekleştirilir ve son gruplarda WHERE yan tümcesinden farklı olarak süzülür.

Yalnızca Total_sales değerinin 1000'den büyük olduğu ürünleri bulmak istediğimizde. Sorgu şu şekilde yazılabilir:

 SELECT Ürün, toplam (Sales_amount) AS Total_sales Satış Grubundan FROM HAVAN toplamı (Sales_amount)> 1000; 

Üretilen çıktı:

Bu, HAVING'e rağmen WHERE deyimi kullanılarak gerçekleştirilemez ve WHERE deyimi toplu işlevlerle kullanılamadığından bir hata mesajı oluşturur.

Nerede ve Maddeye Sahip Olma Arasındaki Temel Farklılıklar

  1. WHERE deyimi satır işlemlerinde kullanılır ve tek bir satırda uygulanır, HAVING deyimi sütun işlemlerinde kullanılır ve özetlenen satırlara veya gruplara uygulanabilir.
  2. WHERE yan tümcesinde istenen veriler uygulanan duruma göre alınır. Aksine, HAVING deyimi tüm verileri alır ve sonra duruma göre ayırma yapılır.
  3. Min, sum, max, avg gibi toplama işlevleri, WHERE yan tümcesinde hiçbir zaman görünmeyebilir. Karşıt olarak, bu işlevler HAVING yan tümcesinde görünebilir.
  4. HAVING yan tümcesi bir SELECT ifadesi olmadan kullanılamaz. Tersine, NEREDE SELECT, UPDATE, DELETE, vb. İle kullanılabilir.
  5. WHERE deyimi bir ön filtre görevi görür, HAVING deyimi bir süzgeç işlevi görür.
  6. GROUP BY ile birlikte kullanıldığında NEREDE deyimi, GROUP BY'den önce gelir. Bu, WHERE filtresinin, toplu hesaplamalar gerçekleştirilmeden önceki satırları gösterir. Öte yandan, HAVING GROUP BY'den sonra gelir, yani toplam hesaplamalar yapıldıktan sonra filtreler.

Sonuç

NEREDE ve HAVING yan tümcesi, HAVING yan tümcesinin popüler olduğu ek özellik dışında aynı şekilde çalışır. HAVING yan tümcesi toplama işlevleriyle etkin bir şekilde çalışabilir, WHERE toplama işlevleriyle çalıştırılamaz.

Top