SQL nedir?
Yapılandırılmış Sorgu Dili olarak da bilinen SQL, veritabanlarındaki büyük miktardaki veride arama yapmak ve analiz için belirli bilgileri döndürmek üzere kullanılan güçlü bir araçtır. SQL öğrenmek, iş analisti, veri analisti, veri bilimci veya veri mühendisi rollerine girmek isteyen herkes için temel bir gerekliliktir.
Bu eğitimde, veritabanıyla ilgili görevlerinizin çoğu için yeterli olacak en yaygın 25 SQL komutunu öğreneceksiniz.
Örneklerle SQL Komutları
Örnek tablo
Bu eğitim boyunca films ve soundtracks tablolarını kullanacağız.
|
films |
|||||
|
movie_name |
director |
revenue |
date |
genre |
language |
|
Avengers: Age of Ultron |
J. Whedon |
1400000000 |
2015 |
Aksiyon |
İngilizce |
|
Amelie |
Jean-Pierre Jeunet |
174000000 |
2002 |
Dram |
Fransızca |
|
soundtracks |
||
|
soundtrack |
composer |
date |
|
Inception: Music from the Motion Picture |
Hans Zimmer |
2010 |
|
Le Fabuleux Destin D’Amelie Poulain |
Yann Tiersen |
2001 |
1. SELECT
SELECT deyimi, sonuçta hangi veritabanı tablosu sütunlarının yer alacağını belirtmek için kullanılır.
Bu örnek yalnızca movie_name ve director sütunlarını seçer; diğer sütunlar döndürülmez.
SELECT movie_name, director
FROM films;
Bir tablodaki tüm sütunları seçmek için SELECT * ("yıldız" olarak okunur) çalıştırabilirsiniz. Bu örnek films tablosundaki tüm sütunları seçer.
SELECT *
FROM films;
2. LIMIT
Bir tablodan döndürülen satır sayısını sınırlamak, sorgu süresini hızlandırmak için faydalı bir yöntemdir. Satır sayısını sınırlamak için LIMIT komutunu kullanabilirsiniz. Bu örnek films tablosundaki tüm sütunları seçer ve sonuçları ilk on satırla sınırlar.
SELECT *
FROM films
LIMIT 10;
3. AS
Sonuçları döndürürken bir sütunu veya tabloyu yeniden adlandırmak için AS komutunu kullanarak çıktılara bir takma ad atayabilirsiniz. Bu örnek movie_name sütununu seçer ve ona movie_title takma adını verir.
SELECT movie_name AS movie_title
FROM films;
4. SELECT DISTINCT
Veri kümelerinde sıklıkla yinelenen satırlar veya bir sütunda yinelenen değerler bulunur. SELECT ile DISTINCT birleştirildiğinde mükerrerler kaldırılır. Bu örnek director sütunundaki benzersiz değerleri döndürür.
SELECT DISTINCT director
FROM films;
5. COUNT
COUNT(), bir tabloda veya grupta bulunan satır sayısını döndürür. Bu örnek films tablosundaki satır sayısını döndürür ve sonucu number_of_films olarak yeniden adlandırır.
SELECT COUNT(*) AS number_of_films
FROM films;SQL’i Ücretsiz Öğrenmeye Başlayın
Data Manipulation in SQL
6. MIN
MIN(), sayısal bir sütundaki en küçük değeri döndürür. Metin sütunlarında MIN() alfabetik olarak ilk değeri döndürür. Bu örnek, en düşük gelire sahip filmi döndürür.
SELECT MIN(revenue) AS minimum_revenue,
FROM films;
7. MAX
MAX(), sayısal bir sütundaki en büyük değeri döndürür. Metin sütunlarında MAX() alfabetik olarak son değeri döndürür. Bu örnek, en yüksek gelire sahip filmi döndürür.
SELECT MAX(revenue) AS maximum_revenue,
FROM films;
8. SUM
SUM(), sayısal değerlerin toplamını döndürür. Bu örnek, films tablosunda listelenen tüm filmlerin toplam gelirini döndürür.
SELECT SUM(revenue) AS total_revenue
FROM films;
9. AVERAGE
AVERAGE, bir sütunun aritmetik ortalamasını hesaplar. Bu örnek, films tablosunda listelenen tüm filmlerin ortalama gelirini döndürür.
SELECT AVERAGE(revenue) AS average_earned
FROM films;
10. WHERE
WHERE koşulu, belirli bir durumu karşılayan satırları filtreler. Örneğin, aşağıda 500 milyon dolardan fazla kazanan filmleri filtreliyoruz.
SELECT revenue
FROM films
WHERE revenue > 500000000;
Filtreleme için <, >, =>, <=, == (eşittir), != (eşit değildir) gibi diğer koşullu operatörler de kullanılabilir.
11. HAVING
HAVING koşulu, WHERE koşuluna benzer ancak yalnızca toplu (aggregate) fonksiyonlarla kullanılabilir; WHERE ile kullanılamaz. Örneğin, aşağıdaki sorguda kategorisinde en az 50 film bulunan tüm film türlerini seçiyoruz:
SELECT movie_name, director, date, COUNT(genre)
FROM films
GROUP BY genre
HAVING COUNT(genre) >= 50;
Aşağıda, filmleri yaş derecesine göre gruplandıran ve ortalama geliri 100 milyonun üzerinde olan derecelendirmeleri seçen bir başka örnek yer alıyor:
SELECT movie_name, director, date, revenue
FROM films
GROUP BY age_rating
HAVING AVERAGE(genre) >= 100;
12. AND
AND operatörü, birden fazla koşulu sağlayan satırları filtrelemek için kullanılır. Aşağıdaki örnekte, 500 milyon dolardan fazla hasılat yapan İngilizce filmleri filtreleyeceğiz.
SELECT *
FROM films
WHERE revenue > 500000000 AND
language == "English";
13. OR
OR, OR ile ayrılmış koşullardan herhangi biri doğruysa satırları alt kümeye ayırmanıza olanak tanıyan bir başka koşullu operatördür. Bu örnek, 100 milyon dolardan az kazanan İngilizce filmleri veya 500 milyon dolardan fazla kazanan Fransızca filmleri döndürür.
SELECT *
FROM films
WHERE (revenue < 100000000 AND language == "English") OR
(revenue > 500000000 AND language == “French”);
14. BETWEEN
BETWEEN, belirli bir aralık içindeki satırları alt kümeye ayırmanıza olanak tanır; bu da WHERE koşullarını daha basit ve okunaklı hale getirir. Aşağıdaki örnekte 2020 ile 2022 arasında yayımlanan tüm filmleri seçiyoruz.
SELECT *
FROM films
WHERE date BETWEEN 2020 AND 2022;
15. IN
IN operatörü, birden çok OR ifadesi için kısayoldur. Bu örnek, şu yıllardan herhangi birinde yayımlanan tüm filmleri döndürür: 1998, 1966, 2001 ve 2012.
SELECT movie_name, date, revenue
FROM films
WHERE date IN (1998, 1966, 2001, 2012);
16. LIKE
LIKE operatörü, joker karakterler olarak adlandırılan özel dizeleri kullanarak bir metin sütununda desen aramanıza olanak tanır. Joker karakterler, belirli bir desene uyan metin dizelerini bulmanızı sağlar. Örneğin, yönetmen sütununda “A% W%” jokerini kullanmak, adı A ile başlayan ve soyadı W ile başlayan tüm yönetmenleri bulur.
SELECT *
FROM films
WHERE director LIKE "A% W%";
17. GROUP BY
GROUP BY, satırları sütun değerlerine göre gruplamanızı sağlar. GROUP BY genellikle COUNT, MIN, MAX, AVERAGE gibi toplu fonksiyonlarla birlikte kullanılır. Aşağıdaki örnekte her film türünün ortalama gelirini buluyoruz.
SELECT AVERAGE(revenue), movie_name, director, date
FROM films
GROUP BY genre;
Her tür için en düşük, en yüksek geliri veya film sayısını bulmak üzere MIN, MAX veya COUNT(revenue) de kullanabilirdik. GROUP BY ifadesinin, bir toplu fonksiyonla birlikte kullanılmıyorsa pratikte sorguyu etkilemediğine dikkat edin.
18. ORDER BY
ORDER BY, satırları bir sütun değerine göre sıralamanızı sağlar. ASC veya DESC ekleyerek artan (varsayılan) ya da azalan düzende sıralayabilirsiniz. Bu örnek geliri artan düzende sıralar.
SELECT *
FROM films
ORDER BY revenue ASC;
19. UPDATE
UPDATE, mevcut bir tablodaki tekil hücrelerin değerlerini değiştirmek için kullanılır. SET anahtar sözcüğü ile birlikte kullanılır. Bu örnek yönetmeni “J. Whedon” olanları “Joss Whedon” olarak günceller.
UPDATE films
SET director = "Joss Whedon"
WHERE director = "J. Whedon"
UPDATE ifadeleri yazarken WHERE koşulu kritik öneme sahiptir. Olmadan yazılsaydı, yukarıdaki sorgu tüm filmleri Joss Whedon tarafından yönetilmiş gibi yapardı.
20. ALTER TABLE
ALTER TABLE ifadesini, tablonun ve sütunlarının özelliklerini değiştirmek için kullanabilirsiniz (hücre değerlerini değil). Örneğin, sütun adlarını değiştirmek, yeni sütun eklemek, kaldırmak veya veri türlerini değiştirmek. Aşağıdaki örneklerde date sütununu kaldırmayı ve age_rating sütununu eklemeyi gösteriyoruz.
ALTER TABLE films
DROP COLUMN date;
ALTER TABLE films
ADD COLUMN age_rating;
21. CREATE TABLE
CREATE TABLE, bir veritabanında yeni bir tablo oluşturur. Aşağıda dört sütunlu bir “libraries” tablosu oluşturuyoruz: id adlı tamsayı sütunu, name adlı karakter sütunu, version adlı karakter sütunu ve num_downloads adlı tamsayı sütunu.
CREATE TABLE libraries (
lib_id int,
name varchar(100),
version varchar(100),
num_downloads int
)
22. INSERT INTO
INSERT INTO ifadesi, bir tabloya yeni satırlar eklemek için kullanılabilir. Bu örnekte films tablosuna “Doctor Strange” filmini ekliyoruz.
INSERT INTO films (movie_name, director, revenue, date, genre, language)
VALUES ("Doctor Strange 2", “Sam Raimi”, 409000000, 2022, “Action”, “English”)
23. INNER JOIN
INNER JOIN komutu, her iki tabloda da eşleşen değerlere sahip satırları seçer. Örneğin, aşağıdaki sorguda, aynı yıllarda yayımlanan filmleri ve film müziklerini döndürmek için films ve soundtracks tablolarını ortak date sütununda birleştiriyoruz.
SELECT *
FROM films
INNER JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;
24. LEFT JOIN
LEFT JOIN, sol tablodaki orijinal kayıtların tümünü korur ve birleştirme alanının eşleşme bulamadığı durumlarda sağ tablodaki sütunlar için eksik değerler döndürür.
SELECT *
FROM films
LEFT JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;
25. RIGHT JOIN
RIGHT JOIN, sağ tablodaki orijinal kayıtların tümünü korur ve birleştirme alanının eşleşme bulamadığı durumlarda sol tablodaki sütunlar için eksik değerler döndürür.
SELECT *
FROM films
LEFT JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;
SQL Komutları El İlanı
SQL hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara göz attığınızdan emin olun: