MySql veri tabanında temel sorgu işlemlerinin yanı sıra JOIN işlemleri de kullanarak veri tabanındaki verilerinizi daha da işlevsel hale getirebilirsiniz INNER JOIN işlemi, iki tabloyu eşleştiren en temel ve sık kullanılan JOIN işlemidir LEFT JOIN ise soldaki tablodaki tüm verileri getirir ve sağdaki tablodaki eşleşen verileri de getirir RIGHT JOIN ise tam tersi, sağdaki tablodaki tüm verileri alır ve sol taraftaki tablodaki eşleşen verileri döndürür Bu işlemlerle verilerinizi daha iyi bir şekilde analiz edebilirsiniz

MySql veri tabanında en temel sorgu işlemleri olan SELECT, FROM ve WHERE sorgularını öğrenmek diğer tüm sorguların temelidir. SELECT sorgusu ile sorgu sonucunda gösterilecek alanlar belirlenir, FROM sorgusu ile sorgunun hangi tablodan yapılacağı belirlenirken WHERE sorgusu ile de sorgu sonucunda döndürülecek veriler filtrelenir. Bu sorgular bir arada kullanılarak daha detaylı ve işlevsel sorgular elde edilebilir.
Örneğin "SELECT name, age, email FROM users WHERE age > 18" sorgusu ile "users" tablosundaki isim, yaş ve e-mail alanları filtrelenerek sadece 18 yaşından büyük kullanıcıların bilgileri döndürülür.
Bu temel sorguların doğru bir şekilde kullanımı ile veri tabanınızdan istediğiniz bilgileri hızlı ve kolay bir şekilde elde edebilirsiniz.
Temel Sorgu İşlemleri
MySql veri tabanı, web uygulamalarının vazgeçilmez bir parçasıdır. Veri tabanı işlemleri, uygulamaların verileri saklamasını ve işlemesini sağlamaktadır. Temel sorgulama işlemleri SELECT, FROM ve WHERE, MySql veri tabanında en sık kullanılan işlemlerdir. SELECT, veritabanındaki bir tablodan veri seçmek için kullanılır. FROM, hangi tablodan veri seçileceğini belirlemek için kullanılır. WHERE ise belirli bir koşulu sağlayan verilerin seçilmesini sağlar.
SELECT sorgusu, belirtilen tablodan belirli bir veri seti seçmek için kullanılır. Örneğin, "SELECT * FROM employees" sorgusu employees tablosunun tüm kayıtlarını döndürür. FROM sorgusu, veri seçilecek olan tabloyu belirler. Örneğin, "SELECT * FROM customers" sorgusu customers tablosundan tüm verileri döndürür. WHERE sorgusu ise, belirli bir koşula uyan verilerin seçilmesini sağlar. Örneğin, "SELECT * FROM customers WHERE Country='Turkey'" sorgusu, Türkiye'den olan tüm müşterilerin verilerini döndürür.
Temel sorgulama işlemleri, MySql veri tabanındaki sorgulama işlemlerinin temelidir ve MySql'in daha gelişmiş sorguları için bir temel oluştururlar.
JOIN İşlemleri
MySql veri tabanı işlemleri sırasında iki veya daha fazla tabloyu birleştirmek için JOIN işlemleri kullanılır. Bu işlem ile verileri doğrudan ihtiyacınız olan şekle dönüştürebilirsiniz. Burada birkaç JOIN türü hakkında bilgi vereceğiz ve nasıl kullanabileceğinizi örneklerle açıklayacağız.
INNER JOIN, iki tabloda ortak olan verileri birleştiren ve sadece ortak verileri getiren bir join türüdür. Bu JOIN türü, iki tablonun çok büyük olmadığı durumlarda iyi çalışır.
Örneğin, iki tablonuz var: 'yazarlar' ve 'kitaplar'. Her iki tabloda da 'yazar_id' adlı bir sütun var. 'yazarlar' tablosunda bir yazarın adı ve 'yazar_id' sütunu varken, 'kitaplar' tablosunda kitap adı ve 'yazar_id' sütunu var. Bir INNER JOIN kullanarak, kitapların yazar adlarını göstermek isteyebilirsiniz:
SELECT yazarlar.ad, kitaplar.adFROM yazarlarINNER JOIN kitaplarON yazarlar.yazar_id = kitaplar.yazar_id;
Bu sorgu, 'yazarlar' ve 'kitaplar' tablolarındaki tüm verileri birleştirir ve sadece ortak verileri getirir. Yani bir kitabın yazarı olmayan bir yazar veya bir yazarın hiç kitabı yoksa, bu sorguda gösterilmeyeceklerdir.
LEFT JOIN, soldaki tablodaki tüm verileri alır ve eşleşen verileri sağdaki tablodan getirir. Eşleşen verileri alırken kullanılan aynı koşulu INNER JOIN ile kullanılır. Bu JOIN türü, sol taraftaki tabloda tüm verilerin gösterilmesini sağlamak için kullanılabilir.
Örneğin, yazarların adlarını ve yazdıkları kitapların adlarını içeren bir sorgu yapmak istiyoruz, ancak bazı yazarların hiç kitabı olmadığını biliyoruz ve yine de yazar listesinde gösterilmesini istiyoruz. Sol tarafta 'yazarlar' tablosunu ve sağ tarafta 'kitaplar' tablosunu birleştirerek, üç yazarımızın hiç kitabı olmadığını gösteren bir sorgu yapabiliriz:
SELECT yazarlar.ad, kitaplar.adFROM yazarlarLEFT JOIN kitaplarON yazarlar.yazar_id = kitaplar.yazar_id;
Bu sorgu, sol taraftaki 'yazarlar' tablosundaki tüm yazarları gösterir ve sağ taraftaki 'kitaplar' tablosundan yazar_id'leri eşleşen kitaplarla birleştirir. Yine, INNER JOIN kullanıldığında olduğu gibi, her iki tabloda aynı 'yazar_id' sütunu kullanılır.
RIGHT JOIN, LEFT JOIN ile aynıdır, ancak bu sefer sağ taraftaki tablodaki tüm verileri alır ve eşleşmeyi sol taraftaki tablodan getirir. Bu JOIN türü, bazı durumlarda faydalı olabilir, ancak genellikle sol taraftaki tablodaki tüm veriler gösterilmek istenir.
'LEFT JOIN' ve 'INNER JOIN' örneklerinde verilen tablolarla aynı tabloları kullanarak bir örnek yapabiliriz. Ancak, sağ taraftaki tablo olarak 'kitaplar' tablosunun yerine 'yayınevleri' tablosunu kullanalım. Bu durumda, birkaç yayınevi var ve bunların sadece birkaçı, herhangi bir kitaba sahip:
SELECT yayınevleri.ad, kitaplar.adFROM kitaplarRIGHT JOIN yayınevleriON kitaplar.yayınevi_id = yayınevleri.yayınevi_id;
Bu sorgu, tüm yayınevlerini gösterir, ancak yalnızca kitabı olan yayınevlerini gösterir. Yani, üç yayınevimiz var ve 'X Yayınevi', 'Y Yayınevi' ve 'Z Yayınevi' kitapları mevcut değilken, diğer yayınevlerinin kitapları vardır.
INNER JOIN
INNER JOIN işlemi, bir veri tabanındaki iki veya daha fazla tabloyu birleştirmek için kullanılır. Bu işlem, "join" işleminin en temel ve sık kullanılan türüdür. INNER JOIN işlemi, birleştirilecek iki tablonun birbirleriyle eşleşen verilerini gösterir.
Örneğin, bir "müşteriler" tablosu ve bir "siparişler" tablosu varsa, bu iki tabloyu birleştirmek için INNER JOIN işlemi kullanılabilir. İki tabloyu birleştirdikten sonra, müşterilerin hangi siparişleri verdiği gibi bilgiler elde edilebilir.
INNER JOIN işlemi ayrıca "ON" koşulu ile de kullanılabilir. ON koşulu, iki tabloyu birleştirirken eşleşen verileri belirlemek için kullanılır. Örneğin, "müşteriler" tablosunda her müşteriye benzersiz bir "müşteri ID" numarası atanmış olabilir. "Siparişler" tablosunda da her sipariş için benzersiz bir "sipariş ID" numarası verilmiş olabilir. Bu durumda, INNER JOIN işlemi şu şekilde yazılabilir:
SELECT *FROM müşterilerINNER JOIN siparişlerON müşteriler.müşteri_ID = siparişler.müşteri_ID
Bu örnek, "müşteriler" tablosundaki her müşteri için ilgili siparişleri gösterir. ON koşulu, "müşteri ID" numaralarının eşleştiğini belirtir.
INNER JOIN işlemi, verilerin doğru şekilde birleştirilmesini sağlar ve veri tabanlarının kullanımını optimize eder. Bu nedenle, INNER JOIN işlemi sıkça kullanılan bir veri sorgulama işlemidir.
LEFT JOIN
LEFT JOIN, veritabanındaki iki tabloyu birleştirmek için kullanılan bir JOIN işlemidir. Sol taraftaki tablodaki tüm verileri göstererek, sağ taraftaki tablodaki sadece eşleşen verileri gösterir. Bu işlem, özellikle bir tablodaki tüm verilerin önemli olduğu durumlarda kullanışlıdır.
Örneğin, bir kitap mağazası veritabanında, kitaplar ve yazarları iki ayrı tabloda saklanabilir. Sol taraftaki tabloda, kitaplara ait veriler, sağ taraftaki tabloda ise yazarlara ait veriler bulunur. LEFT JOIN kullanarak, mağaza sahibi tüm kitapların ve bunların yazarlarının bir listesini görebilir. Eğer bir yazarın birden fazla kitabı varsa, yazarın ismi yalnızca bir kez gösterilir ve kitapların isimleri alt alta listelenir.
Bu işlemi gerçekleştirmek için, LEFT JOIN kullanırken JOIN anahtar kelimesinden sonra ilk olarak sol taraftaki tablo belirtilir, sonra ON anahtar kelimesi ile birlikte eşleştirilecek sütunlar belirtilir. Örneğin, aşağıdaki sorgu kitap ve yazar tablolarını birleştirerek tüm kitaplar ve yazarlarından oluşan bir listeyi gösterir:
SELECT Books.Title, Authors.NameFROM BooksLEFT JOIN Authors ON Books.AuthorID = Authors.AuthorID
Burada Books tablosu sol tarafta olduğu için, LEFT JOIN anahtar kelimesinin solunda belirtilmiştir. ON anahtar kelimesinin sağında ise eşleştirilecek sütunlar belirtilmiştir. Bu sorgu sonucunda, kitap isimleri ve yazar isimleri birlikte liste halinde gösterilecektir.
LEFT JOİN işleminin kullanımına dair örnekler vererek detaylandırarak yazıda açıklamalar yaptık. Bu şekilde MySQL veri tabanını kullanırken verimli bir şekilde sorgulama işlemlerimizi daha hızlı ve daha doğru bir şekilde gerçekleştirebiliriz.
RIGHT JOIN
RIGHT JOIN işlemi, INNER JOIN işlemine benzer şekilde çalışır ancak farkı sağ taraftaki tablodaki tüm verileri döndürür. LEFT JOIN işlemi ile benzerlik gösterse de LEFT JOIN sol taraftaki tablodaki verileri döndürürken RIGHT JOIN ise sağ taraftaki tablodaki verileri döndürür.
Örnek olarak, bir şirketin çalışanları ve departmanlarıyla ilgili veritabanı düşünün. Bir departmanın tüm çalışanlarını ve o departmanda hiç çalışan olmayan departmanları göstermek için RIGHT JOIN kullanabilirsiniz.
Örneğin, aşağıdaki sorgu ile çalışanların departman adları ve departmanı olmayan çalışanların adları ve "No Department" olarak belirtilen bir alan döndürülür:
```SELECT employees.name, departments.department_name FROM employees RIGHT JOIN departments ON employees.department_id = departments.id;```
Bu sorgu, tüm departmanlara ait çalışanların adları ile birlikte, hiçbir çalışana sahip olmayan bölümlerini de gösterir.
RIGHT JOIN'in kullanımı, bazı durumlarda daha yararlıdır. Örneğin, bir şirketin tüm çalışanlarını ve çalışanların hangi departmanda olmadığını göstermek isteyebilirsiniz. Bu durumda RIGHT JOIN ile tüm departmanları döndürerek hangi çalışanın hangi departmanda olmadığımızı kolayca anlayabilirsiniz.
GROUP BY ve HAVING İşlemleri
GROUP BY ve HAVING işlemleri, verileri gruplandırmak ve belirli koşulların sağlandığı grupları filtrelemek için kullanılır. GROUP BY işlemi, SELECT sorgusunda belirtilen sütunlardan bir veya birkaçına göre gruplama yapar. Örneğin, bir müşteri veritabanında müşterilerin çeşitli özellikleri kaydedilir. GROUP BY işlemi ile müşterilerin hangi şehirlerde yaşadığına göre gruplayabilirsiniz. Bu sayede, hangi şehirde kaç tane müşteriniz olduğunu görebilirsiniz.
HAVING işlemi ise GROUP BY işlemi sonrasında, gruplama koşullarına göre filtreleme yapmak için kullanılır. Örneğin, yukarıdaki müşteri veritabanındaki örneği ele alırsak, GROUP BY ile şehirlere göre gruplayıp, HAVING ile müşteri sayısı 2 ve daha fazla olan şehirleri görebilirsiniz. Bu sayede, hangi şehirlerde daha fazla müşteriniz olduğunu görerek, pazarlama stratejilerinizi buna göre oluşturabilirsiniz.
Aşağıda bir örnek sorgu ile GROUP BY ve HAVING işlemlerinin nasıl kullanıldığını görebilirsiniz:
SELECT sehir, COUNT(*) FROM musterilerGROUP BY sehirHAVING COUNT(*) >= 2;
Bu sorgu, müşteri veritabanındaki şehirlere göre gruplama yapar ve sadece en az 2 müşterisi olan şehirleri gösterir.
ORDER BY İşlemi
ORDER BY işlemi, MySql veri tabanındaki sorgu sonucundaki verilerin belirtilen bir sıraya göre sıralanması için kullanılan özel bir işlemdir. Bu işlem, sorgu sonucundaki verilerin belirli bir sıraya göre listelenmesini ve böylece daha anlamlı ve kullanılabilir hale gelmesini sağlar.
ORDER BY işlemi, sorgudaki SELECT ifadesinden sonra kullanılır ve belirtilen sütuna göre sıralama yapılmasını sağlar. Örneğin, "SELECT * FROM müşteriler ORDER BY ad ASC" sorgusu, müşteriler tablosundaki ad sütununa göre alfabetik olarak sıralama yapar.
Bunun yanı sıra, ORDER BY işlemi ile sıralama yönü de belirlenebilir. "ASC" (artan) veya "DESC" (azalan) parametreleri kullanılarak, verilerin sıralama yönü ayarlanabilir. Örneğin, "SELECT * FROM müşteriler ORDER BY ad DESC" sorgusu, müşteriler tablosundaki ad sütununa göre z-a şeklinde sıralama yapar.
Index Kullanımı
Index kullanımı, veri tabanındaki sorgulama işlemlerinin hızlandırılması için oldukça önemlidir. Index, bir veri tabanı nesnesi üzerinde tanımlanan ve verileri hızlı bir şekilde erişilebilir hale getiren bir yapıdır.
Index kullanımı ile sorgu işlemleri daha hızlı gerçekleştirilir ve veriler daha kısa sürede elde edilir. Index kullanımı yapmak için veritabanında sık sık kullanılan sorguları analiz etmek ve bu sorguların hangi alanlar üzerinde yapıldığını belirlemek gerekmektedir.
Index kullanımı için dikkat edilmesi gereken bir diğer husus da index yapısının doğru bir şekilde tasarlanmasıdır. Yanlış tasarlanmış indexler, sorgu yapısını yavaşlatabilir ve veri tabanı boyutunu artırabilir. Bu nedenle index yapısı, veri tabanının boyutuna, veri yapısına ve kullanılan sorgulara göre tasarlanmalıdır.
Bir diğer önemli nokta ise indexlerin gereksiz yere fazla oluşturulmamasıdır. Fazla index oluşturmak, veri tabanı performansını olumsuz etkileyebilir ve gereksiz alan kullanımına sebep olabilir. Bu nedenle index yapısının oluşturulması, veri tabanındaki sorguların analizi sonucu belirlenmelidir.
Veri Sınırlandırma İşlemleri
Veri sınırlandırma işlemleri, sorgu sonucunda döndürülen verilerin sayısını sınırlamak için kullanılır. LIMIT işlemi ile belirli bir sayıda sonuç döndürmek mümkündür. Örneğin, "SELECT * FROM tablo_adı LIMIT 10" komutu ile tablo_adı'ndaki ilk 10 kaydı getirebilirsiniz.
Bunun yanı sıra, OFFSET işlemi ile de belirli bir başlangıç noktasından sonra sonuçları döndürmek mümkündür. Örneğin, "SELECT * FROM tablo_adı LIMIT 5 OFFSET 10" komutu ile tablo_adı'ndaki 11. kayıttan başlayarak 5 kayıt getirilebilir.
Ayrıca, sınırlandırma işleminde kullanılabilecek başka bir komut da TOP'dur. Özellikle Microsoft SQL Server'da kullanılan TOP komutu ile sorgu sonucunda ilk belirtilen sayıda kayıt getirilebilir. Örneğin, "SELECT TOP 5 * FROM tablo_adı" komutu ile tablo_adı'ndaki ilk 5 kayıt getirilebilir.
Sonuç olarak, veri sınırlandırma işlemleri sorgu sonucunda büyük miktarda veri getirmek yerine yalnızca belirli bir sayıda veri getirmek için kullanışlıdır. Bu sayede sorgu işlemi daha hızlı ve verimli hale gelir.