MySQL de Sorgu Komutları -1-
Hepinize merhaba dostlarım :). Bu yazımda artık yavaş yavaş sql sorgularına giriş yapmaya başlayalım diyorum çünkü biliyorsunuz çağımız veri işleme çağı :). Sabırsızlandığınızı hissediyorum dostlarım :). Sözü fazla uzatmadan sql de sorgu nedir gelin onlara değinelim ve MySQL üzerinde sorguları inceleyerek ufak örnekler yapmaya başlayalım
Değinmeden önce Veri Tabanı ve Tablo Nedir , MYSQL de Veri Tipleri yazı linkimi bırakıyorum dostlarım. Okumayan dostlarımız varsa ve direk bu yazıya denk gelmişlerse aşağıdaki linklerden ulaşabilirler
1-) Veri Tabanı ve Tablo Nedir? : https://blog.mfsoftware.net/yazi/veri-tabani-ve-tablo-nedir 2-) MYSQL de Veri Tipleri : https://blog.mfsoftware.net/yazi/mysql-de-veri-tipleri
linklerinden ilerleyebilirsiniz :). Artık sql de sorgu nedir gelin onun tanımını mantıksal şekilde yapalım dostlarım :)
SQL de Sorgu Nedir
Dostlarım önceki yazılarımda veri tabanı ve tablo nedir diye bir yazı paylaşmıştım (okumak için buraya tıklayabilirsiniz). İşte orada ne diyordum verilerimizi bir arada tutuyor ilişkilendiriyor vs demiştim. Ama bu ilişkilendirme işlemini kenndi kendine yapacak hali yok :). Tamam verilerimizi bir arada tutuyor ama bu verilerin ilişkilendirilmesi olsun crud işlemleri (Ekleme ,Silme,Güncelleme,Listeleme) vs işlemleri yapabilmesi için bizim ona belirli komutlar göndermemiz gerekiyor dostlarım :). Kısaca bir programın işleyişi için komut vermek olarak aklınızda canlandırabilirsiniz mantığı tamamen bu şekilde işliyor dostlarım :).
Şimdi gelin dostlarım bu SQL komutlarını ve MySQL de kullanımlarından biraz bahsedelim :). Zor diye düşünüyorsanız dostlarım ben size şunu demek istiyorum
Hiçbir zorluğu yok. Olay tamamen istikrar ve pratik yapmaktan geçiyor :)
işte olay tamamen bu dostlarım. Bunu aşarsanız zaten her şeyde başarıyı yakalarsınız :). Çok konuştum özür diliyorum ve sorgu komutlarına girmek istiyorum dostlarım :)
1-) SELECT
İngilizce altyapınız birazcık varsa dostlarım zaten komutun mantığını da az çok anlamış oldunuz hemen :). Doğru bildiniz seçmek demek ama nasıl çalışır nasıl işler diye aklınızda soru işaretlerini de görüyorum dostlarım :). Gelin buna mantıksal bir şekilde değinelim dostlarım :)
Dostlarım SELECT komutu bizim veri tabanındaki tabloyu listelememizde büyük rol oynayan bir komuttur. Yeri geldi tablodaki tüm kayıtları çekmemiz gerekti, yeri geldi bayanları veya erkekleri, yeri geldi aktif ve pasif kullanıcılar (son verdiğim 2 örnekte koşul yazmamız gerekecek onları WHERE komutunda anlatacağım hiç kafanızı yormayın dostlarım) listelememiz gerekti. Direk tablo ismini yazarsak komut kısmına sql bize şunu der "Dostum ne yapıyorsun :)" işte bu listleme işlemlerinde SELECT komutu çok çok önemlidir dostlarım :).
Peki bunu nasıl kullanırız diye soruyorsanız dostlarım 2 türlü kullanabiliriz
- * (Bütün Kolonları Getir)
- Belirtilen kolonları getir
Şimdi gelin bunları açıklayalım dostlarım
* (Bütün Kolonları Getir)
Dostlarım verileri zaman zaman listeleme durumu ile karşılaşabiliriz. İşte bu durumlarda dostlarım tablomuzun tüm kolonlarını göstermek istediğimiz durumlarda * komutunu kullanabiliriz. Gelin bununla bir örnek yapalım.
Örneğin kullanıcılar isimli tablomuz olsun ve aşağıdaki bilgileri içersin
id | adsoyad | şifre | kayit_tarihi | |
1 | Zafer Yıldız | zafer@a.com | ***** | 2020-02-18 |
2 | Arda Demir | arda@b.com | ***** | 2020-02-18 |
3 | Emrullah Tanıma | emrullah@c.com | ***** | 2020-02-18 |
4 | Veli Pınar | veli@d.com | ***** | 2020-02-18 |
5 | Rahmi Yılmaz | rahmi@e.com | ***** | 2020-02-18 |
bu şekilde tablomuz olsun dostlarım veri tabanında. Verilerimizin hepsini getirmek istersek yazacağımız SQL Kodu
SELECT * FROM kullanıcılar
yukarıdaki yazdığımız kodda sql diyor ki tabloya dostlarım "Sen kullanıcılar tablosuna git (FROM işleminin amacı) hepsini seç (SELECT *)"
bu yukarıda belirttiğim kodu yazınca dostlarım yukarıdaki tablonun aynısı veriliyor bize.
Belirtilen Kolonları Getir
Dostlarım bu kısımda ise bizim tablomuzda her alanların getirilmesinden ziyade istediğimiz kolonların getirilmesini sağlamamıza yarıyor. Mesela bir kişiler tablosu olsun kullanıcı adsoyad ve email adresleri getirilsin diyelim. Düşünsenize iki kolona ihtiyacımız varken * yazıp da hepsini getirmenin ne anlamı var :). İşte dostlarım bu sebepten dolayı biz belirli kolonları belirtip sadece o kolonların gelmesi işlemini gerçekleştiriyoruz :). Nasıl mı ? Gelin hep beraber bir örnek yapalım
Tablodan sadece id,adsoyad ve email kolonlarını çekelim dostlarım :). Bunu yapmak için ise dostlarım yazacağımız kod
SELECT id,adsoyad,email FROM kullanıcılar
yukarıdaki kodda sql tablosuna atılan sorguda şunlar diyor "Sen kullanıcılar tablosuna git, tablodan id,adsoyad,email kolonlarını çek" diyor dostlarım. Daha sonrasında da alttaki gibi çıktı veriyor
id | adsoyad | |
1 | Zafer Yıldız | zafer@a.com |
2 | Arda Demir | arda@b.com |
3 | Emrullah Tanıma | emrullah@c.com |
4 | Veli Pınar | veli@d.com |
5 | Rahmi Yılmaz | rahmi@e.com |
şekilde gördüğünüz gibi dostlarım sadece 3 kolonu alıp ekranımıza bastırdık :). SQL in faydalarını yavaş yavaş görüyoruz. Gelelim diğer sorgu komutuna
2-) ORDER BY
Dostlarım order by komutu ise İngilizce'de düzen yani sıralama anlamına gelmektedir. SQL işlemlerinde de örnek vermek gerekirse slider listeleme işlemlerinde olsun veya sayfaların header kısmında gösterilmesi olsun zaman zaman kullanılan bir yöntemdir.
Komutun amacı dostlarım bizim belirttiiğimiz kolonu bizim belirttiğimiz şekilde artan veya azalan şekilde sıralıyor (integer ise 0 dan başlayıp artan veya azalan, text ise ascii kodlarına göre artan veya azalan şekilde sıralama şeklinde) dostlarım. Dediğim gibi sıkça kullanılır ve öğrenmekte de faydası var dostlarım :). Gelin bununla da bir örnek yapalım
Örneğin slaytlar isimli bir tablomuz olsun dostlarım. Burada da 3 kaydımız olsun
id | resim | durum | eklenme_tarihi |
1 | a.png | 1 | 2021-02-18 |
2 | b.png | 1 | 2021-02-18 |
3 | c.png | 1 | 2021-02-18 |
şeklinde 3 kaydımız var. Biz bu kayıtları tersten sıralamak için aşağıdaki kodu kullanırız dostlarım
SELECT * FROM slaytlar ORDER BY id DESC
şeklinde kodumuzu yazıyoruz. Kod burada diyor ki "Sen slaytlar tablosuna git, id alanını büyükten küçüğe sırala ve bütün kolonları getir :)". Daha sonra da aşağıdaki gibi bir çıktı bizi bekliyor
id | resim | durum | eklenme_tarihi |
3 | c.png | 1 | 2021-02-18 |
2 | b.png | 1 | 2021-02-18 |
1 | a.png | 1 | 2021-02-18 |
şeklinde karşımıza geliyor dostlarım :). Peki bizim sql tablomuzda bu şekilde kayıtlı olsaydı biz nasıl düz yani artan şekilde sıralayacaktık diye soruyorsanız dostlarım DESC yerini ASC yapmamız gerekirdi :). Gelin onun kodunu da yazalım
SELECT * FROM slaytlar ORDER BY id ASC
şeklinde ayarlıyoruz dostlarım :). Bu kod da diyor ki "Sen slaytlar tablosuna git, id alanını küçükten büyüğe sırala ve bütün kolonları getir :)". Ve aşağıdaki sonuç geliyor bize
id | resim | durum | eklenme_tarihi |
1 | a.png | 1 | 2021-02-18 |
2 | b.png | 1 | 2021-02-18 |
3 | c.png | 1 | 2021-02-18 |
şeklinde bir çıktı geliyor :).
Ek olarak bunların haricinde bir kullanım yeri daha var :). Bu da random şekilde sıralama dostlarım :). Özellikle e-ticaret sitelerinin vazgeçilmez dediği ve sürekli kullandığı sql içerisinde bir kullanımdır. Gelin bunun kodunu da yazalım dostlarım. Kullanımı basit böyle zor imkansız gibi düşünmeyin dostlarım :).
SELECT * FROM slaytlar ORDER BY RAND()
işte dostlarım değişen tek kısım id ASC veya id DESC yerine RAND() yazmamız bize bütün kayıtları random şekilde sıralanmış olarak getirmeye yaradı :). Örnek olarak da aşağıdaki gibi bir sonuç geldi (Dikkat edelim dostlarım :) Örnek dedim yani her zaman bu şekilde sıralamaz ben burada size örnek açısından random bir sıralama yapacağım)
id | resim | durum | eklenme_tarihi |
1 | a.png | 1 | 2021-02-18 |
3 | c.png | 1 | 2021-02-18 |
2 | b.png | 1 | 2021-02-18 |
şeklindeki gibi sıralama yapar ama her zamanki gibi bu sonucu vermez mesela bir sonraki deneyişimizde 3 - 1 - 2 olarak sıralayabilir. Yani random olarak sıralaması sisteme bağlı :). Gelelim bir diğer komutumuza dostlarım
3-) LIMIT
Dostlarım direk anladınız bu sql komutunu :). Limit yani sınır olarak geçiyor sql işleminde de :). Kullanımı basit hiç zor değil öncelikle onu belirtebilirim. İki farklı kullanımı var gelin bunları inceleyip birer örnek yapalım dostlarım
- Tek Parametreli
- Çift Parametreli
gördüğünüz gibi 2 farklı kullanımı var dostlarım. Gelin sözü daha fazla uzatmadan başlayalım
3.1 Tek Parametreli
Dostlarım limitin tek parametreli kullanımındaki amaç şudur dostlarım :). Tabloyu çekme işlemi yapıyoruz diyelim. Burada maksimum kaç satır çekileceğini belirtmek istediğimizde tek parametreli limit kullanırız. Buna da yazılar diye bir tablo açalım.
id | baslik | icerik | kategori | kayit_tarihi |
1 | yazi-1 | yazi icerik 1 | genel | 2020-02-18 |
2 | yazi-2 | yazi icerik 2 | genel | 2020-02-18 |
3 | yazi-3 | yazi icerik 3 | genel | 2020-02-18 |
4 | yazi-4 | yazi icerik 4 | genel | 2020-02-18 |
5 | yazi-5 | yazi icerik 5 | genel | 2020-02-18 |
şeklinde tablomuzu oluşturalım dostlarım. Şimdi ilk 3 satırı yazdırmak için gelin aşağıdaki sql kodunu yazalım
SELECT * FROM yazilar LIMIT 3
bu kodu yazdık dostlarım :). Kod burada diyor ki "Yazılar tablosuna git ve baştan 3 kayıt listele". Buradan da gelen sonuç aşağıdaki gibidir
id | baslik | icerik | kategori | kayit_tarihi |
1 | yazi-1 | yazi icerik 1 | genel | 2020-02-18 |
2 | yazi-2 | yazi icerik 2 | genel | 2020-02-18 |
3 | yazi-3 | yazi icerik 3 | genel | 2020-02-18 |
şeklinde bir çıktı karşımıza gelecektir dostlarım :). İşte tek parametreli limit kodu bu şekilde çalışıyor dostlarım :). Şimdi gelelim çift parametreli limit koduna :)
3.2 Çift Parametreli
Dostlarım çift parametreli limit kullanımı tek parametreli limit kullanımına benzer lakin birtakım farklılık var. Tek parametreli limit kısmında belirttiğmiz satır kadar yazarken çift parametreli limit kullanımında belirtilen kayıt sayısından sonra belirlediğimiz kayıda kadar almamıza yarar.
Gelin bunu yazılar tablomuzda uygulayalım dostlarım. 3. kayıttan sonra gelen 2 kaydı listeleyelim. Gelin bunun kodunu yazalım
SELECT * FROM yazılar LIMIT 3,2
kodunu yazalım dostlarım :). Burada kod diyor ki "Yazılar tablosuna git, 3. satırı bul ama 3. satırdan sonra gelen 2 satırı al listele". Bu kodun çıktısı da dostlarım aşağıdaki gibi oluyor
id | baslik | icerik | kategori | kayit_tarihi |
4 | yazi-4 | yazi icerik 4 | genel | 2020-02-18 |
5 | yazi-5 | yazi icerik 5 | genel | 2020-02-18 |
şekilde gördüğünüz gibi dostlarım 3. kayıttan sonra gelen 2 kaydı aldı listeledi :). Dostlarım sql sorgularındaki komutlara bu yazımızda ufak bir başlangıç yapmış oldum. Devamı diğer yazılarımda gelecektir dostlarım. Elimden geldiğince yalın bir anlatımla ve eğlendirirken öğretme amaçlı anlatmaya çalıştım. Umarım faydalı olabilmişimdir. Takıldığınız yerler olabilir anlıyorum çünkü aynı yollardan geçtim ben de. Yapmanız gereken tek şey her yazımın sonunda belirttiğim gibi "İstikrarlı bir çalışma, Azimli olmak ve bol pratik yapmak". Bu 3 şeyi uyguladığınız taktirde başarınız kaçınılmaz olacaktır dostlarım :).
Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :)
Yazar Hakkında
Kendi Halinde Bir Backend Developer