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:
- SEÇİN: Tablodan hangi sütunlar alınacak?
- DAN: Verilerin hangi tablodan geldiği
- JOIN: Tabloları belirtilen tanımlayıcıyla birleştirin
- NEREDE: Koşula dayalı veri filtresi
- GROUP BY: Verileri sütunun değerine göre düzenleyin ve toplama işlevinin gerçekleştirilmesine izin verin.
- TARAFINDAN SİPARİŞ: Veri sonucu sırasını belirli bir sütuna göre düzenleyin
- 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:
- üç 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).
- 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).
- Yalnızca satın almalar tablosundaki kategori sütunu değerine sahip verileri 'mutfak' olarak seçerdik (Maddeden bilgi NEREDE),
- toplama işlevi için ilgili tablodan gelen ad ve ürün sütunuyla grup (Cümleden gelen bilgiler) GROUP BY),
- total_price'ın 10000'den fazla olduğu toplama işlevi sonuç toplamından da filtrelenmiştir (maddeden bilgi HAVING), Ve
- 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:
- Genel SQL Sorgu Yapısını Anlayın
- Son Seçimi Anlayın
- Nihai Koşullar Maddesini Anlayın
- Son Birleştirmeyi Anlayın
- 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.
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- PlatoData.Network Dikey Üretken Yapay Zeka. Kendine güç ver. Buradan Erişin.
- PlatoAiStream. Web3 Zekası. Bilgi Genişletildi. Buradan Erişin.
- PlatoESG. karbon, temiz teknoloji, Enerji, Çevre, Güneş, Atık Yönetimi. Buradan Erişin.
- PlatoSağlık. Biyoteknoloji ve Klinik Araştırmalar Zekası. Buradan Erişin.
- Kaynak: https://www.kdnuggets.com/a-step-by-step-guide-to-reading-and-understanding-sql-queries?utm_source=rss&utm_medium=rss&utm_campaign=a-step-by-step-guide-to-reading-and-understanding-sql-queries
- :dır-dir
- :olumsuzluk
- :Neresi
- $UP
- 12
- 17
- 9
- a
- Hakkımızda
- yukarıdaki
- erişim
- Göre
- ileri
- Sonra
- toplanma
- Allianz
- izin vermek
- an
- ve
- Başka
- ARE
- göre
- AS
- belirlemek
- Asistan
- At
- yazar
- merkezli
- BE
- Çünkü
- Başlangıç
- altında
- Daha iyi
- mola
- işletmeler
- fakat
- by
- denilen
- geldi
- CAN
- yapamam
- dava
- Kategoriler
- Açıkça
- yakın
- kod
- Sütun
- Sütunlar
- birleştirmek
- nasıl
- geliyor
- gelecek
- ortak
- Şirketler
- şirket
- karmaşık
- koşul
- koşullar
- devam eden
- kontrollü
- cs
- müşteri
- Müşteriler
- veri
- veri bilimi
- veritabanı
- Fırsatlar
- ayrıntılar
- farklı
- do
- Değil
- Dont
- aşağı
- her
- iş
- karşılaşma
- karşılaşma
- Baştan sona
- çağ
- özellikle
- gerekli
- Her
- herkes
- örnek
- mevcut
- deneyim
- keşfetmek
- filtre
- son
- bulmak
- Ad
- akış
- Akışları
- odak
- takip et
- takip
- takip etme
- İçin
- itibaren
- işlev
- fonksiyonlar
- daha fazla
- genel
- almak
- Vermek
- grup
- rehberlik
- Var
- sahip olan
- he
- yardım et
- okuyun
- tarih
- Ne kadar
- HTTPS
- ID
- tanımlayıcı
- belirlemek
- if
- in
- dahil
- Dahil olmak üzere
- Endonezya
- bilgi
- ilk
- kavrama
- yerine
- Niyet
- etkileşim
- içine
- IT
- kaydol
- jpg
- KDNuggets
- anahtar
- çeşitleri
- Bilmek
- dil
- sonra
- ÖĞRENİN
- öğrenme
- en az
- sevmek
- uzun
- Bakın
- seviyor
- ağırlıklı olarak
- yönetim
- Yönetim Sistemi
- müdür
- yönetme
- manipulasyon
- çok
- ortalama
- anlamına geliyor
- medya
- Modern
- Daha
- çoğu
- hareket
- hareketli
- isim
- gerekli
- gerek
- sonraki
- şimdi
- of
- sık sık
- on
- ONE
- olanlar
- bir tek
- or
- sipariş
- bizim
- çıktı
- tüm
- Bölüm
- İnsanlar
- yapılan
- kişi
- Platon
- Plato Veri Zekası
- PlatoVeri
- uygulama
- önceki
- fiyat
- sorunlar
- süreç
- üretmek
- PLATFORM
- Programlama
- sağlamak
- satın alma
- alımları
- Python
- sorgular
- sorgu
- Okumak
- Okuma
- tekrar et
- bu
- sonuç
- ters
- s
- aynı
- Bilim
- görmek
- görünüyor
- seçmek
- seçilmiş
- paylaş
- meli
- Gösteriler
- önemli
- beceri
- becerileri
- düzgünce
- So
- Sosyal Medya
- sosyal medya
- biraz
- Kaynak
- kaynaklar
- özel
- Belirtilen
- Harcama
- SQL
- standart
- başlama
- adım
- Basamaklar
- yapı
- yapılandırılmış
- yapılar
- toplam
- sistem
- tablo
- alınan
- takım
- göre
- o
- The
- Kaynak
- ve bazı Asya
- Onları
- Orada.
- onlar
- şey
- Re-Tweet
- düşünce
- üç
- İçinden
- zaman
- ipuçları
- için
- birlikte
- Toplam
- iz
- denemek
- Iki kere
- anlamak
- anlayış
- us
- kullanım
- Kullanılmış
- kullanma
- genellikle
- değer
- üzerinden
- yürümek
- istiyor
- we
- İYİ
- Ne
- ne zaman
- hangi
- süre
- neden
- geniş ölçüde
- irade
- ile
- içinde
- İş
- çalışma
- olur
- verirdi
- yazar
- yazı yazıyor
- sen
- zefirnet