SQL Sorgularını Okumak ve Anlamak İçin Adım Adım Kılavuz - KDnuggets

SQL Sorgularını Okumak ve Anlamak İçin Adım Adım Kılavuz – KDnuggets

Kaynak Düğüm: 3091384

SQL Sorgularını Okumak ve Anlamak İçin Adım Adım Kılavuz
Image Freepik
 

SQL veya Standart Sorgu Dili, ilişkisel bir veritabanı yönetim sistemi (RDBMS) içindeki verileri yönetmek ve değiştirmek için kullanılan bir programlama dilidir. İşletmelerin verilere sorunsuz bir şekilde erişmesine yardımcı olmak için birçok şirkette kullanılan standart bir dildir. Yaygın olarak kullanıldığı için, istihdam genellikle SQL'i gerekli becerilerden biri olarak gösterir. Bu yüzden SQL öğrenmek çok önemlidir.

İnsanların SQL öğrenirken karşılaştığı yaygın sorunlardan biri, özellikle başka bir kişinin yazdığı sorguları anlamaktır. Şirketlerde ekip olarak çalışırdık ve çoğu zaman onların SQL sorgularını okuyup anlamamız gerekirdi. Bu nedenle, SQL sorgularının yapısını bozma alıştırması yapmamız ve bunları anlamamız gerekiyor.

Bu makalede, SQL sorgularını okumak ve anlamak için adım adım bir süreç anlatılacaktır. Bunu nasıl yaparız? Hadi konuya girelim.

Bir SQL sorgusu ile karşılaştığımızda yapmamız gereken ilk şey, SQL sorgularının genel amacını anlamaktır. Genel niyet, sorgunun yapısı hakkında tamamen bilgi sahibi olduğumuz anlamına gelmez; daha çok genel akışlarla ilgilidir.

Genel SQL sorgusunu anlamak için standart SQL sorgularını anlamamız gerekir. Çoğu SQL sorgusu şununla başlar: SEÇİN maddesini takip edin ve DAN cümle. Buradan devam edersek, sorguların ardından çoğunlukla şu gelir: JOIN, NEREDE, GROUP BY, TARAFINDAN SİPARİŞ, ve HAVING maddeleri.

Yukarıdaki cümleler anlamamız gereken SQL sorgularında standarttır. Her cümlenin işlevleri şunlardır:

  1. SEÇİN: Tablodan hangi sütunlar alınacak?
  2. DAN: Verilerin hangi tablodan geldiği
  3. JOIN: Tabloları belirtilen tanımlayıcıyla birleştirin
  4. NEREDE: Koşula dayalı veri filtresi
  5. GROUP BY: Verileri sütunun değerine göre düzenleyin ve toplama işlevinin gerçekleştirilmesine izin verin.
  6. TARAFINDAN SİPARİŞ: Veri sonucu sırasını belirli bir sütuna göre düzenleyin
  7. HAVING: Toplama işlevi için belirtilemeyen filtre koşulu NEREDE

Bunlar standart cümlelerdir ve genel SQL sorgu yapısını anlarken başlangıçta bulmanız gerekenlerdir. Daha fazla bilgi edinmek için örnek kodu kullanalım.

SELECT 
  customers.name, 
  purchases.product, 
  SUM(price) as total_price 
FROM 
  purchases 
  JOIN customers ON purchases.cust_id = customers.id 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  customers.name, 
  purchases.product 
HAVING 
  total_price > 10000 
ORDER BY 
  total_price DESC;

 

Yukarıdaki sorguya baktığınızda standart cümleleri belirlemeye çalışın. Madde size hangi verilerin seçildiğine dair bir anlayış sağlayacaktır (SEÇİN), nereden geldiği (DAN ve JOIN) ve durum (NEREDE, GROUP BY, TARAFINDAN SİPARİŞ, ve HAVING). 

Örneğin yukarıdaki sorguyu okumak aşağıdakileri anlamanızı sağlayacaktır:

  1. üç farklı türde veri elde etmeye çalışırız: Müşteriler adlı tablodan Ad, satın almalar adı verilen tablodan Ürün ve tablonun nereden geldiğini belirlemeyen fiyat sütunlarının toplam_fiyat takma adı ile toplanması (Cümleden bilgi) SEÇİN). 
  1. Genel veriler, satın almalardan cust_id sütunu ve müşteri tablosundan id sütunu kullanılarak bir araya getirilen satın almalar ve müşteri tablolarından gelecektir (Bilgiler cümleciğinden) İTİBAREN) ve JOIN). 
  1. Yalnızca satın almalar tablosundaki kategori sütunu değerine sahip verileri 'mutfak' olarak seçerdik (Maddeden bilgi NEREDE), 
  1. toplama işlevi için ilgili tablodan gelen ad ve ürün sütunuyla grup (Cümleden gelen bilgiler) GROUP BY), 
  1. total_price'ın 10000'den fazla olduğu toplama işlevi sonuç toplamından da filtrelenmiştir (maddeden bilgi HAVING), Ve 
  1. verileri total_price'a göre azalan şekilde sıralayın (maddedeki bilgiler TARAFINDAN SİPARİŞ).

Bilmeniz ve tanımlamanız gereken genel SQL sorgu yapısı budur. Buradan gelişmiş sorgudan daha fazlasını keşfedebiliriz. Bir sonraki adıma geçelim.

Pek çok şeyin olduğu karmaşık bir sorguyla karşılaşacağınız bir zaman olurdu. SEÇİN aynı sorguda tümceler mevcut. Bu durumda sorgunun nihai sonucunu veya son (ilk) sonucunu anlamamız gerekir. SEÇİN sorguda görüyorsunuz. Anahtar, sorgu çıktısının ne olmak istediğini bilmektir.

Aşağıdaki gibi daha karmaşık bir kod kullanalım.

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
) 
SELECT 
  c.name, 
  pd.product, 
  pd.total_product_price, 
  cs.total_spending 
FROM 
  (
    SELECT 
      purchases.cust_id, 
      purchases.product, 
      SUM(purchases.price) as total_product_price 
    FROM 
      purchases 
    WHERE 
      purchases.category = 'kitchen' 
    GROUP BY 
      purchases.cust_id, 
      purchases.product 
    HAVING 
      SUM(purchases.price) > 10000
  ) AS pd 
  JOIN customers c ON pd.cust_id = c.id 
  JOIN customerspending cs ON c.id = cs.id 
ORDER BY 
  pd.total_product_price DESC;

 

Sorgu artık daha karmaşık ve daha uzun görünüyor, ancak ilk odak noktası sonuncusu olmalıdır. SEÇME, müşterinin toplam harcama ve satın alma geçmişini üretmeye çalışıyor gibi görünüyor. Nihai sonucun ne olmak istediğini değerlendirmeye çalışın ve onu oradan ayırın.

Sonucun sorgulardan olması gerektiğine dair içgörüye sahibiz. Bir sonraki bölümde final koşullarının neler olduğunu göreceğiz. SEÇİN öyle. Koşullar maddesi dahil NEREDE, GROUP BY, TARAFINDAN SİPARİŞ, ve HAVING genel veri sonucunu kontrol edenler onlardı. 

Sorgumuzun koşullarını okuyup anlamaya çalışın; sorgumuzun nihai sonucunu daha iyi anlayacağız. Örneğin, önceki SQL sorgumuzda son koşul yalnızca TARAFINDAN SİPARİŞ. Bu, nihai sonucun toplam ürün fiyatına göre azalan sırada sıralanacağı anlamına gelir. 

Son koşulları bilmek, sorgunun önemli bir bölümünü ve genel sorgu amacını anlamanıza yardımcı olacaktır.

Son olarak verinin nereden geldiğini anlamamız gerekiyor. Seçilecek verileri ve bunları elde etme koşullarını öğrendikten sonra kaynağı anlamamız gerekir. Son JOIN cümlesi bize tabloların nasıl etkileşime girdiğini ve veri akışını anlamamızı sağlar.

Örneğin, önceki karmaşık sorgu, Birleştirme işlemini iki kez gerçekleştirdiğimizi gösteriyor. Bu, nihai sonuç için en az üç veri kaynağı kullandığımız anlamına gelir. Bu bilgi, özellikle veri kaynağı alt sorgudan geldiğinde, her bir veri kaynağının nasıl geldiğini daha iyi anlamak için sonraki adımlarda gerekli olacaktır.

Nihai sonucun nasıl olması gerektiğini ve nereden geldiğini anladıktan sonra ayrıntılara daha yakından bakmamız gerekiyor. Buradan her bir alt sorguyu geriye doğru takip edip neden bu şekilde yapılandırıldıklarını anlayacağız.

Ancak biz bunlara yukarıdan aşağıya yapılanlarda bakmaya çalışmıyoruz. Bunun yerine nihai sonuca daha yakın olan alt sorgulara bakmaya çalışmalı ve nihai sonuçtan en uzak olana doğru ilerlemeliyiz. Yukarıdaki kod örneğinden öncelikle bu kodu anlamaya çalışmalıyız:

SELECT 
  purchases.cust_id, 
  purchases.product, 
  SUM(purchases.price) as total_product_price 
FROM 
  purchases 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  purchases.cust_id, 
  purchases.product 
HAVING 
  SUM(purchases.price) > 10000

 

Daha sonra en uzak kod olan bu koda geçiyoruz:

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
)

 

Her alt sorguyu sonuca en yakın olandan en uzağa doğru parçaladığımızda yazarın düşünce sürecini net bir şekilde takip edebiliriz. 

Her bir alt sorguyu anlama konusunda yardıma ihtiyacınız varsa yukarıdaki işlemi tekrarlamayı deneyin. Biraz pratik yaparak sorguyu okuma ve anlama konusunda daha iyi bir deneyime sahip olacaksınız.

SQL sorgularını okumak ve anlamak, her şirketin bunlarla ilgilendiği modern çağda herkesin sahip olması gereken bir beceridir. Aşağıdaki adım adım kılavuzu kullanarak karmaşık SQL sorgularını daha iyi anlayabilirsiniz. Adımlar şunları içerir:

  1. Genel SQL Sorgu Yapısını Anlayın
  2. Son Seçimi Anlayın
  3. Nihai Koşullar Maddesini Anlayın
  4. Son Birleştirmeyi Anlayın
  5. Ters Sıralı Okuma ve Tekrarlama

 
 

Cornellius Yudha Wijaya bir veri bilimi müdür yardımcısı ve veri yazarıdır. Allianz Endonezya'da tam zamanlı çalışırken, sosyal medya ve yazılı medya aracılığıyla Python ve Veri ipuçlarını paylaşmayı seviyor.

Zaman Damgası:

Den fazla KDNuggets