Ana içeriğe atla

SQL Sorgu Örnekleri ve Eğitim

SQL’e başlamak istiyorsanız, doğru yerdesiniz. Bu SQL eğitiminde, bir veritabanında tutulan verilerle çalışmamızı sağlayan güçlü bir araç olan SQL sorgularını tanıtacağız.
Güncel 3 Eki 2026  · 15 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

SQL sorgusu nedir?

SQL, Structured Query Language ifadesinin kısaltmasıdır. Çoğu kişi bunu “S-Q-L” ya da “si-kıuıl (sequel)” olarak telaffuz eder. SQL, programlamada kullanılır ve bir veritabanında depolanan verileri SQL sorguları ile yönetmek üzere tasarlanmıştır. 

En yaygın veritabanı yönetim sistemi (DBMS) türü, ilişkisel veritabanı yönetim sistemidir (RDBMS). Bu yapıda, varlıklar ve değişkenler arasındaki ilişkileri içeren, yani yapılandırılmış verileri saklarız. Bu varlıklar ve değişkenler, sütun ve satırlardan oluşan tablolar kümesi olarak düzenlenir. En popüler RDBMS’lerden bazıları MYSQL, Oracle, IBM DB2 ve Microsoft SQL Server veritabanıdır.

RDBMS’te veriler, tablo adı verilen bir veritabanı nesnesinde saklanır. Bir veritabanı genellikle birden fazla tablo içerir. Her tablo benzersiz bir adla tanımlanır ve satır ve sütunlar halinde yapılandırılmış, ilişkili veri kayıtlarının bir koleksiyonunu içerir. 

Bir sütun dikey bir varlıktır; alan olarak adlandırılır ve bir tablodaki belirli bir alanla ilişkili tüm bilgileri içerir. Bir tablodaki her satır bir kayıt olarak bilinir; tablodaki yatay varlıktır.

Bir veritabanının yapısı Excel’e oldukça benzer gelebilir. Ancak genel olarak veritabanları, Excel e-tablolarından daha güçlüdür. Bunu söyleyebileceğiniz üç neden şunlardır: 

  1. Veritabanları birçok diğer programlama diliyle etkileşime girebilir — bu da programcıya verilerden bilgi yönetme ve alma konusunda daha fazla güç verir.
  2. Veritabanları, Excel e-tablolarından daha fazla veriyi işleyebilir. Excel en fazla 1 milyon satır veriyi kaldırabilirken bir veritabanı milyarlarca satırı işleyebilir.
  3. Veritabanları internete daha kolay bağlanabilir; bu sayede yüzlerce kullanıcı ve uygulama aynı anda erişebilir.

SQL’e başlamak için sabırsızlanıyor musunuz? DataCamp’in harika kaynakları var; SQL öğrenin sayfası, SQL becerilerinizi geliştirmeniz için takip edebileceğiniz patikaları öne çıkarır!

Şimdi SQL Sorgularına biraz daha derinlemesine dalalım… 

Bir SQL sorgusu, çeşitli SQL komutlarının bir araya getirilmesiyle oluşturulan bir ifadedir. Bu SQL komutları birlikte, bir veritabanında saklanan ve bir DBMS aracılığıyla yönetilen verilerinize erişmek, onları yönetmek, değiştirmek, güncellemek, denetlemek ve düzenlemek için belirli bir görevi yerine getirir. 

Neden SQL kullanılır?

SQL son derece çok yönlüdür ve veri bilimcilerden mühendislere, pazarlamacılardan insan kaynakları ekiplerine kadar herkes tarafından kullanılır — kısacası, daha veri okuryazarı olmak isteyen herkes tarafından!

Sadece teknoloji sektörlerinde ya da büyük şirketlerle sınırlı değildir. Her ölçekte çok sayıda sektör doğrudan veya dolaylı olarak kullanır. Örneğin, ürettikleri veri miktarı yüksek olduğundan finans ve sağlık sektörlerinde çalışan profesyoneller sıklıkla SQL kullanır. 

Veri yeni bir emtiadır ve büyük veriyi ele alma ve onunla çalışma söz konusu olduğunda SQL oldukça güçlü bir araçtır. SQL’den en iyi şekilde nasıl yararlanabileceğinizi merak ediyorsanız, DataCamp’in SQL ile neler yapabilirsiniz başlıklı eğitimine göz atın.

SQL sorguları nasıl yazılır

Sorgu formülasyonunun kendisine geçmeden önce şu soruyu düşünelim: “SQL sorgumu nerede yazar ve çalıştırırım?” 

DataCamp’in SQL Öğrenin merkezi, Mac veya Windows’ta SQL ile çalışmaya başlamanıza yardımcı olacak iyi bir başlangıç noktasıdır.

Ama eğer sadece veritabanlarının yerel dili olan SQL’i öğrenmeye başlamak istiyorsanız, DataCamp’in SQL’e Giriş kursu ile başlayabilirsiniz. Bu kurs, PostgreSQL, MySQL, SQL Server ve Oracle gibi pek çok veritabanında ortak olan SQL söz dizimini öğretir. DataCamp’in yerleşik SQL arayüzüyle çalışacak ve bir RDBMS’in ilk kurulum zahmetleriyle uğraşmayacaksınız. 

DataCamp’in ayrıca kendi not defterlerinizi oluşturabileceğiniz harika bir not defteri aracı var: DataLab. DataLab, verileri analiz etmenize, ekibinizle işbirliği yapmanıza ve içgörüleri paylaşmanıza olanak tanıyan bulut tabanlı bir işbirlikçi not defteridir. DataLab, veri bilimi öğreniminden veri bilimi yapmaya geçmeniz için tasarlanmıştır. Yerleşik veri kümeleriyle, dakikalar içinde veri analizine başlayabilirsiniz.

Şimdi bu eğitimde çalışacağımız veri kümesine bir göz atalım. 

‘films’ ile başlayacağız — 10 filmin verilerini tutan bir SQL tablosu. Bu veriler, az önce bahsettiğimiz DataCamp’in SQL’e Giriş kursunda kullanılan IMDb Film veri kümesinin yalnızca küçük bir alt kümesidir.

 

title

release_year

budget

gross

imdb_score

1

The Godfather

1972

6000000

134821952

9.2

2

The Dark Knight

2008

185000000

533316061

9

3

The Godfather: Part II

1974

13000000

57300000

9

4

Schindler's List

1993

22000000

96067179

8.9

5

Pulp Fiction

1994

8000000

107930000

8.9

6

The Lord of the Rings: The Return of the King

2003

94000000

377019252

8.9

7

Fight Club

1999

63000000

37023395

8.8

8

Inception

2010

160000000

292568851

8.8

9

Star Wars: Episode V - The Empire Strikes Back

1980

18000000

290158751

8.8

10

The Shawshank Redemption

1994

25000000

28341469

9.3

‘films’ tablosunda on kayıt vardır — film adları 10 satıra dağıtılmıştır. Alanlar, filmle ilgili bilgileri tutan tablodaki beş sütundur. 

  • ‘title’ filmin adıdır
  • ‘release_year’ filmin vizyona girdiği yıldır
  • ‘budget’ filmin Amerikan doları cinsinden yapım maliyetidir
  • ‘gross’ filmin Amerikan doları cinsinden ne kadar hasılat elde ettiğidir. 
  • ‘imdb_score’  IMDb kullanıcılarının gönderdiği oylardan üretilen, film eleştirmenlerinden gelmeyen puanları gösterir. 

Yukarıdaki ‘films’ tablosunu keşfetmek için bazı temel SQL komutlarıyla egzersize başlayalım. Çözüm sorgularını hemen çalıştırmanızı beklemiyoruz… bunun yerine bazı temel kavramları öğrenmek için bir temel olarak kullanın. Bu nedenle, sorguları hangi platformda çalıştıracağınıza henüz karar vermediyseniz endişelenmeyin.

Temel SQL sorguları

SQL anahtar sözcüklerinin veya komutlarının büyük/küçük harfe duyarlı olmadığını unutmayın; ‘select’ yazmak ‘SELECT’ yazmakla aynıdır. 

Yazdığımız her SQL ifadesinin sonuna noktalı virgül koyacağız. Bu, bazı veritabanı sistemlerinde bir standarttır ve her SQL ifadesini ayırmak, böylece sunucuya aynı çağrıda yürütülebilmelerini sağlamak için yapılır. 

Bir soruyla başlayalım. S1: Tabloda hangi filmler saklanıyor?

SELECT - FROM

SELECT ifadesi, veritabanı tablosundan görmek istediğiniz alanları seçmek için kullanılır. S1 için ‘title’ alanını istiyorsunuz.

FROM komutu/anahtar sözcüğü, verileri hangi veritabanı tablosundan çekeceğinizi belirtir. Unutmayın, bir veritabanı birden çok tablodan oluşabilir.

Sözdizimi: SELECT column1, column2, … FROM table_name;

SQL sorgusu: SELECT title FROM films;

Sonuç: 

 

title

1

The Godfather

2

The Dark Knight

3

The Godfather: Part II

4

Schindler's List

5

Pulp Fiction

6

The Lord of the Rings: The Return of the King

7

Fight Club

8

Inception

9

Star Wars: Episode V - The Empire Strikes Back

10

The Shawshank Redemption

Şunu merak ediyor olabilirsiniz: Ya yukarıdaki tabloyu hiç görmemiş olsaydınız ve SELECT ifadesinde belirteceğiniz sütunların adlarını bilmiyor olsaydınız? Güzel soru! Eğitimde daha sonra sihirli ‘*’ (yıldız işareti) hakkında öğreneceğiz. 

WHERE

S2: 2010 yılında vizyona girecek filmler hangileri?

Bu soru için, şu koşulu sağlayan film adlarına sahip olacak şekilde filmleri “filtrelemek” istersiniz: ‘release_year’ 2010’dur. 

Belirtilen bir koşulu sağlayan kayıtları yalnızca ‘WHERE’ koşuluyla çekebilirsiniz.

Sözdizimi: SELECT column1, column2, … FROM table_name WHERE condition; 

SQL sorgusu: SELECT title, release_year FROM films WHERE release_year = 2010;

Sonuç: 

 

title

release_year

1

Inception

2010

WHERE Koşulunda Operatörler

WHERE koşulu içinde aşağıdaki operatörler kullanılabilir:

Operatör

Açıklama

=

Eşittir

>

Büyüktür

<

Küçüktür

>=

Büyük veya eşit

<=

Küçük veya eşit

<> veya !=

Eşit değil. 

BETWEEN

Belirli bir aralık içinde

LIKE

Belirtilen deseni eşleyen bir kalıbı arar

IN

Birden fazla olası değeri belirtir 

SQL’de Aritmetik

SQL’de +, -, *, / gibi matematiksel sembollerle basit aritmetik işlemleri yapabilirsiniz. Ancak bu sembollerle yalnızca sütunlar arasında işlemler yapabilirsiniz. İşlem sırasını yönetmek için parantez de kullanabilirsiniz.

Ama endişelenmeyin; daha karmaşık işlemler için SQL’de aynı satır içinde işlemler yapmanızı sağlayan toplulaştırma işlevleri vardır. Bu konuya eğitimde daha sonra değineceğiz.

S3: ‘films’ tablosundaki her filmin elde ettiği kârı hesaplayın. 

İpucu: Gross - Budget işlemini yapın ve sonucu AS kullanarak ‘movie_profit’ adlı bir sütunda kaydedin

SQL sorgusu: SELECT title, (gross - budget) AS movie_profit FROM films

Sonuç: 

 

title

movie_profit

1

The Godfather

128821952

2

The Dark Knight

348316061

3

The Godfather: Part II

44300000

4

Schindler's List

74067179

5

Pulp Fiction

99930000

6

The Lord of the Rings: The Return of the King

283019252

7

Fight Club

-25976605

8

Inception

132568851

9

Star Wars: Episode V - The Empire Strikes Back

272158751

10

The Shawshank Redemption

3341469

Uyarı: Sıkı sinemaseverler Fight Club için negatif kârdan rahatsız olabilir. Kullanılan formül ((gross - budget) AS movie_profit) çok basittir ve gerçekten de formül ve veriler göz önüne alındığında sonuç doğrudur. 

Ancak yukarıdaki örnek, veri toplama sürecine dikkat etmeniz gerektiğini hatırlatmak içindir! Basit veri keşfi bile, veri toplama veya veri depolama sürecindeki bir hatadan (veri türü değişimi vb.) kaynaklanabilecek veri hatalarını ortaya çıkarabilir — bu, kullanılan veri kümesi oluşturulurken yaşanmış olabilir. 

Çalıştığınız verilere daima dikkat edin!

AND, OR, NOT

WHERE koşulu, AND, OR ve NOT operatörleriyle diğer koşullu ifadelerle birleştirilebilir. AND ve OR operatörleri, birden fazla koşula göre kayıtları filtrelemek için kullanılırken NOT operatörü bir koşulu olumsuzlamak için kullanılır. 

Kullanımlarını örneklerle görelim:

S4: 2010 yılında vizyona giren ve puanı 9’un üzerinde olan filmler hangileri?

Sözdizimi: SELECT column1, column2, … FROM table_name WHERE condition1 AND condition2 AND condition3 AND condition4…..;

SQL sorgusu: SELECT title, release_year, imdb_score FROM films WHERE release_year = 2010 AND imdb_score >= 9;

AND operatörü, AND ile ayrılan tüm koşullar doğruysa bir kaydı gösterir.

‘films’ tablosunda ‘Inception’ filmi var. release_year = 2010 koşulu için doğrudur, ancak imdb_score >= 9 için yanlıştır; dolayısıyla her iki AND koşulunu da karşılamaz. Bu nedenle sorgu boş bir sonuç kümesi döndürür.

S5: 2010 yılında vizyona giren veya puanı 9’un üzerinde olan filmler hangileri?

Sözdizimi: SELECT column1, column2, … FROM table_name WHERE condition1 OR condition2 OR condition3 OR condition4…..;

SQL sorgusu: SELECT title, release_year, imdb_score FROM films WHERE release_year = 2010 OR imdb_score >= 9;

Sonuç: 

 

title

release_year

imdb_score

1

The Godfather

1972

9.2

2

The Dark Knight

2008

9

3

The Godfather: Part II

1974

9

4

Inception

2010

8.8

5

The Shawshank Redemption

1994

9.3

OR operatörü, OR ile ayrılan koşullardan herhangi biri DOĞRU ise bir kaydı gösterir.

The Godfather, The Dark Knight, The Godfather: Part II, The Shawshank Redemption filmleri imdb_score >= 9 koşulunu sağlarken, Inception release_year = 2010 koşulunu sağlar ve böylece OR koşulu için listeye girerler.

S6: 2010 dışında bir vizyon yılına sahip filmler hangileri?

Sözdizimi: SELECT column1, column2, … FROM table_name WHERE NOT condition1;

SQL sorgusu: SELECT title, release_year FROM films WHERE NOT release_year = 2010;

Sonuç: 

 

title

release_year

1

The Godfather

1972

2

The Dark Knight

2008

3

The Godfather: Part II

1974

4

Schindler's List

1993

5

Pulp Fiction

1994

6

The Lord of the Rings: The Return of the King

2003

7

Fight Club

1999

8

Star Wars: Episode V - The Empire Strikes Back

1980

9

The Shawshank Redemption

1994

Şöyle de yazabilirsiniz: SELECT title, release_year FROM films WHERE release_year != 2010;

Bu da yukarıdakiyle aynı sonucu verir. SQL’de aynı sonuca ulaşmanın birden fazla yolu olabilir. Ancak bazı sorgular diğerlerinden daha performanslı olabilir. Performans; veri miktarı, sorguda kullanılan komutlar, veritabanının yapısı, veri türü vb. birçok faktöre bağlı olabilir. Bu, bu SQL sorgu eğitiminde ele almayacağımız biraz daha karmaşık ve ileri bir konudur. 

Yine de ilginizi çekiyorsa, DataCamp’in Veritabanı Tasarımı kursu bu konulara daha derinlemesine girer.

ORDER BY

ORDER BY anahtar sözcüğü, sonucu artan (ASC anahtar sözcüğü) veya azalan düzende (DESC anahtar sözcüğü) sıralamak için kullanılır. Varsayılan olarak artan düzende sıralanır.

S7: Tabloda saklanan filmler hangileri? Sonucu release_year’a göre azalan düzende sıralayın.

Sözdizimi: SELECT column1, column2, … FROM table_name ORDER BY column1, column2, ... ASC|DESC;

SQL sorgusu: SELECT title, release_year FROM films ORDER BY release_year DESC;

Sonuç: 

 

title

release_year

1

Inception

2010

2

The Dark Knight

2008

3

The Lord of the Rings: The Return of the King

2003

4

Fight Club

1999

5

Pulp Fiction

1994

6

The Shawshank Redemption

1994

7

Schindler's List

1993

8

Star Wars: Episode V - The Empire Strikes Back

1980

9

The Godfather: Part II

1974

10

The Godfather

1972

LIMIT

Bazen veritabanının sorgunuzu çalıştırması uzun sürebilir; özellikle veritabanında depolanan veri miktarı çok büyükse. 

Bir sorguyu hızlıca test etmenin veya dönen sonucun türünden örneklemenin kolay bir yolu LIMIT işlevini kullanmaktır. LIMIT, alacağınız sonuçların sayısını sınırlandırmanızı sağlar.

S8: Tabloda saklanan en yeni 5 film hangileri? 

İpucu: Sonuç kümesini release_year’a göre azalan sırada sıralayın ve ardından LIMIT kullanın.

Sözdizimi: SELECT column1, column2, … FROM table_name LIMIT x;

SQL sorgusu: SELECT title, release_year FROM films ORDER BY release_year DESC LIMIT 5;

Sonuç: 

 

title

release_year

1

Inception

2010

2

The Dark Knight

2008

3

The Lord of the Rings: The Return of the King

2003

4

Fight Club

1999

5

Pulp Fiction

1994

INSERT INTO

INSERT INTO, bir veritabanı tablosuna yeni kayıtlar eklemek için kullanılır. INSERT INTO ifadesini iki şekilde yazabilirsiniz: 

  • Hem sütun adlarını hem de karşılık gelen değerleri belirtin

Sözdizimi: INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

  • Tablonun TÜM sütunları için değer ekliyorsanız, sorguda sütun adlarını belirtmeniz gerekmez. Bu yöntemi kullanırken dikkatli olun ve değerlerin sırasının tablodaki sütunların sırasıyla aynı olduğundan emin olun. 

Sözdizimi: INSERT INTO table_name VALUES (value1, value2, value3, ...);

S9: ‘The Godfather: Part III’ için tabloya şu ayrıntılarla bir kayıt ekleyin: (‘The Godfather: Part III’, 1990, 54000000, 136900000, 7.6)

Sözdizimi: SELECT column1, column2, … FROM table_name ORDER BY column1, column2,... ASC|DESC;

SQL sorgusu: INSERT INTO films (title, release_year, budget, gross, imdb_score)

VALUES (‘The Godfather: Part III’, 1970, 54000000, 136900000, 7.6);

Ortaya çıkan tablo: 

 

title

release_year

budget

gross

imdb_score

1

The Godfather

1972

6000000

134821952

9.2

2

The Dark Knight

2008

185000000

533316061

9

3

The Godfather: Part II

1974

13000000

57300000

9

4

Schindler's List

1993

22000000

96067179

8.9

5

Pulp Fiction

1994

8000000

107930000

8.9

6

The Lord of the Rings: The Return of the King

2003

94000000

377019252

8.9

7

Fight Club

1999

63000000

37023395

8.8

8

Inception

2010

160000000

292568851

8.8

9

Star Wars: Episode V - The Empire Strikes Back

1980

18000000

290158751

8.8

10

The Shawshank Redemption

1994

25000000

28341469

9.3

11

The Godfather: Part III

1970

54000000

136900000

7.6

UPDATE

UPDATE ifadesini, bir tablodaki mevcut kayıtları değiştirmek için kullanırız. 

S10: ‘The Godfather: Part III’ için release_year değerini 1970 yerine 1990 olarak düzeltin

Sözdizimi: UPDATE table_name SET column1 = value1, column2 = value2, ...WHERE condition;

SQL sorgusu: UPDATE films SET release_year = 1990 WHERE title = ‘The Godfather: Part III’;

Ortaya çıkan tablo: 

 

title

release_year

budget

gross

imdb_score

1

The Godfather

1972

6000000

134821952

9.2

2

The Dark Knight

2008

185000000

533316061

9

3

The Godfather: Part II

1974

13000000

57300000

9

4

Schindler's List

1993

22000000

96067179

8.9

5

Pulp Fiction

1994

8000000

107930000

8.9

6

The Lord of the Rings: The Return of the King

2003

94000000

377019252

8.9

7

Fight Club

1999

63000000

37023395

8.8

8

Inception

2010

160000000

292568851

8.8

9

Star Wars: Episode V - The Empire Strikes Back

1980

18000000

290158751

8.8

10

The Shawshank Redemption

1994

25000000

28341469

9.3

11

The Godfather: Part III

1990

54000000

136900000

7.6

DELETE

DELETE ifadesi, bir tablodaki mevcut bir kaydı silmek için kullanılır. 

S11: ‘films’ tablosundan ‘The Godfather: Part III’ kaydını silin.

Sözdizimi: DELETE FROM table_name WHERE condition;

SQL sorgusu: DELETE FROM films WHERE title = ‘The Godfather: Part III’;

Ortaya çıkan tablo: Başlangıçtaki orijinal tabloyla aynı, toplam 10 kayıt.

İleri seviye SQL sorguları

Q1’in sonunda sihirli ‘*’ karakterini sonraya bırakmıştık, hatırlıyor musunuz? * bir yıldız işaretidir. Bunu ‘tümü’ olarak okuyabileceğimiz kapsayıcı bir karakterdir. 

Q1’e geri dönelim: Tabloda hangi filmler saklanıyor?

SELECT - FROM kullandık ve Sözdizimi: SELECT column1, column2, … FROM table_name;

Şu sorguyu kullandık: SELECT title FROM films;

Peki ‘title’ın ‘films’ tablosunda bir alan olduğunu bilmiyor olsaydınız? Ya da tablodaki herhangi bir alanın adını? Ya da veriyi tanımak için tablodaki tüm alanları isteseydiniz? İşte burada * çok işe yarar.

Sorguyu şöyle yeniden yazabiliriz: SELECT * FROM films; 

Bu, tablodaki mevcut tüm alanları getirir.

SQL Joker (Wildcard) Karakterleri

LIKE

LIKE operatörü, bir sütunda belirtilen bir deseni aramak için WHERE koşulunda kullanılır. 

S12: ‘The’ ile başlayan tüm film adlarını getirin

Sözdizimi: SELECT column1, column2, … FROM table_name WHERE column1 LIKE patternToMatch;

SQL sorgusu: Select * FROM films WHERE title LIKE ‘The%’;

Ortaya çıkan tablo:

 

title

release_year

budget

gross

imdb_score

1

The Godfather

1972

6000000

134821952

9.2

2

The Dark Knight

2008

185000000

533316061

9

3

The Godfather: Part II

1974

13000000

57300000

9

4

The Lord of the Rings: The Return of the King

2003

94000000

377019252

8.9

5

The Shawshank Redemption

1994

25000000

28341469

9.3

Joker Karakter

Açıklama

Kullanım: Örnek

% (Yüzde)

Sıfır veya daha fazla karakteri temsil eder

The%: The, The Godfather, Theodore

_ (Alt çizgi)

Tek bir karakteri temsil eder

T_e: The, Tie

[ ] (Köşeli parantez)

Parantez içindeki herhangi bir tek karakteri temsil eder

C[ao]t: Cat, Cot ancak Coat değil

^ (Şapka)

Parantez içinde olmayan herhangi bir karakteri temsil eder

Ca[^r]: Cat, Cab, Can ancak Car değil

- (Tire)

Belirtilen aralıktaki herhangi bir tek karakteri temsil eder

C[a-o]: Can, Cab ancak Car, Cat değil

Güzel olan, joker karakterleri kombinasyon halinde kullanabilmemizdir! Böylece LIKE ile birlikte joker karakterleri kullanarak oldukça karmaşık eşleşme ifadeleri oluşturabilirsiniz.

Toplulaştırma İşlevleri

SQL, Excel’deki pivot tabloda yapacağınız türden toplulaştırmalarda mükemmeldir. Toplulaştırma işlevleri, iki sütun arasında değil, bir sütun içinde—yani aynı sütundaki tüm veya bazı satırlarla—hesaplama yapabilir. 

SQL’deki toplulaştırma işlevleri şunlardır: 

İşlev

Açıklama

COUNT

Belirli bir sütundaki kayıt sayısını sayar

SUM

Belirli bir sütundaki tüm değerleri toplar

MIN

Belirli bir sütundaki en düşük değeri döndürür

MAX

Belirli bir sütundaki en yüksek değeri döndürür

AVG

Seçilen bir grup için ortalama değeri döndürür 

S13: Tabloda saklanan en yeni film hangisidir?

SQL sorgusu: SELECT title AS latest_movie, MAX(release_year) AS released_in FROM films;

Sonuç: 

 

latest_movie

released_in

1

Inception

2010

GROUP BY

SQL toplulaştırma işlevleri tüm bir sütun üzerinde toplulaştırma yapar. Peki ya bir sütunun yalnızca bir bölümünü toplulaştırmak isterseniz? Örneğin, bir yılda vizyona giren film sayısını saymak isteyebilirsiniz.

İşte burada GROUP BY ifadesine ihtiyaç duyarsınız. GROUP BY, verileri gruplara ayırmanıza olanak tanır ve bu gruplar birbirinden bağımsız olarak toplulaştırılabilir.

S13: Bir yılda vizyona giren film sayısını sayın.

SQL sorgusu: SELECT release_year, COUNT(*) AS number_of_movies FROM films GROUP BY release_year;

Sonuç: 

 

release_year

number_of_movies

1

1972

1

2

2008

1

3

1974

1

4

1993

1

5

1994

2

6

2003

1

7

1999

1

8

2010

1

9

1980

1

Birden çok tablodan SQL Sorgu Örnekleri

Şimdiye kadar her seferinde yalnızca bir tabloyla çalıştık. Ancak veritabanlarının ve SQL’in gerçek gücü, birden çok tablodaki verilerle çalışabilme becerisinden gelir. 

RDBMS’teki "ilişkisel veritabanı" terimi, veritabanındaki tabloların birbirleriyle ilişkili olmasından gelir. Birden çok tablodan verilerin kolayca birleştirilmesini sağlayan ortak tanımlayıcılar vardır. İşte burada SQL tablo BİRLEŞTİRMELERİNİ (JOIN) kullanırız.

Kendimizi JOIN sözdizimine alıştırmak ve mümkün olan farklı JOIN türleri hakkında biraz bilgi edinmek için basit bir örnek görelim.

‘films’ tablosunda bulunan bazı filmlerin yönetmen adını tutan ‘movieDirectors’ adlı başka bir tablo düşünelim. 

 

title

director

1

The Godfather

Francis Ford Coppola

2

The Godfather: Part II

Francis Ford Coppola

3

The Godfather: Part III

Francis Ford Coppola

4

Schindler's List

Steven Spielberg

5

The Dark Knight Rises

Christopher Nolan

Bu iki tablodaki verileri ‘title’ adlı ortak bir tanımlayıcı kullanarak birleştirebiliriz.

S14: ‘films’ tablosuna bir sütun ekleyin ve bunu ‘movieDirectors’ tablosundan yönetmen adıyla doldurun.

Sözdizimi: SELECT leftTable.column1, rightTable.column1, leftTable.column2…. FROM leftTable INNER JOIN rightTable ON leftTable.commonIdentifier = rightTable.commonIdentifier;

SQL Sorgusu: Select films.title, films.release_year, movieDirectors.director FROM films INNER JOIN movieDirectors ON films.title = movieDirectors.title

Sonuç: 

 

title

release_year

director

1

The Godfather

1972

Francis Ford Coppola

2

The Godfather: Part II

1974

Francis Ford Coppola

3

Schindler's List

1993

Steven Spielberg

Farklı SQL Join Türleri

JOIN

Açıklama

Diyagram

Inner Join

Her iki tabloda da eşleşen değerlere sahip olan kayıtları döndürür

Inner Join

Left (Outer) Join

Sol tablodaki tüm kayıtları ve sağ tablodan eşleşen kayıtları döndürür

Left (outer) join

Right (Outer) Join

Sağ tablodaki tüm kayıtları ve sol tablodan eşleşen kayıtları döndürür

Right (outer) join

Full (Outer) Join

Sol veya sağ tabloda eşleşme olduğunda tüm kayıtları döndürür

Full (outer) join

Yukarıdaki örnek sorguda ‘films’ sol tablo, ‘movieDirectors’ sağ tablodur. Gerçekleştirdiğimiz INNER JOIN ile yalnızca her iki tabloda da bulunan filmleri geri aldık. Sonuç kümesi iki tablonun kesişimiydi.

SQL UNION

SQL JOIN’ler iki veri kümesini yan yana birleştirmenize olanak tanır. Ancak SQL UNION ile bir veri kümesini diğerinin üstüne yığabilirsiniz. UNION operatörü, aşağıdaki “kurallar” sağlandığında iki veya daha fazla SELECT ifadesinin sonuç kümelerini birleştirmek için kullanılır: 

  1. Her SELECT ifadesi aynı sayıda sütuna sahip olmalıdır.
  2. Sütunların veri türleri de benzer olmalıdır.
  3. SELECT ifadelerinde kullanılan sütunlar aynı sırada olmalıdır.

Sözdizimi: SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2;

‘movies_2000s’ tablosunu ele alalım:

 

title

release_year

budget

gross

imdb_score

1

Inception

2010

160000000

292568851

8.8

2

The Trial of the Chicago 7 

2020

35000000

 

7.7

Şimdi iki tabloyu birleştirecek olursak…

SQL Sorgusu: SELECT title FROM films UNION SELECT title FROM movies_2000s;

Sonuç: 

 

title

1

The Godfather

2

The Dark Knight

3

The Godfather: Part II

4

Schindler's List

5

Pulp Fiction

6

The Lord of the Rings: The Return of the King

7

Fight Club

8

Inception

9

Star Wars: Episode V - The Empire Strikes Back

10

The Shawshank Redemption

12

The Trial of the Chicago 7 

‘Inception’ın sonuç kümesinde yalnızca bir kez göründüğünü fark etmiş olabilirsiniz. Bunun nedeni, UNION’ın yalnızca benzersiz değerleri seçmesidir; tüm değerleri istiyorsanız UNION ALL kullanabilirsiniz.

İÇ İÇE (NESTED) SQL Sorguları

SQL, verilerle harikalar yaratma kapasitesine sahiptir. İç içe sorgular, SQL’i bilmeye değer kılan bir başka araçtır. İç içe sorgu, bir sorgunun içinde yer alan başka bir sorgudan ibarettir (Inception’daki rüyalar gibi!).

İç içe sorgularla, okunabilirliği ve anlaşılabilirliği koruyarak, çok adımda çok karmaşık işlemler gerçekleştirebilirsiniz.

S15: ‘films’ tablosundaki filmlerin ortalama kârlılığını belirleyin.

İpucu: Kârlılığı daha önce S3 ile hesaplamıştınız. Şimdi bu sorgunun sonucunu alın ve buna AVG işlevini uygulayın.

SQL İç İçe Sorgu: 

SELECT AVG(*) AS average_profit FROM 

(SELECT title, (gross - budget) AS movie_profit FROM films where gross > budget);

İçteki SQL sorgusuna gross > budget ekleyerek, hesaplamadan ‘Fight Club’ın negatif değerini çıkardık. 

Yukarıdaki iç içe sorguda önce iç sorgu çalıştırılır, ardından bu sonuç kümesi, dış sorgunun sorgulayıp veri aldığı geçici bir tablo olarak kullanılır. 

İç içe SQL sorgusu konusuna fazla derin inmeyeceğiz. Ancak SQL sorgularında ustalaşmak için DataCamp’in Orta Seviye SQL kursunu takip etmenizi önemle tavsiye ederiz. Bu sırada Avrupa Futbol Veritabanı ile oynarken iç içe sorgular hakkında daha fazla bilgi edineceksiniz. Ayrıca bu SQL sorgu eğitiminde ele alamadığımız CASE ifadeleri ve pencere işlevleri hakkında da bilgi edineceksiniz. 

Son düşünceler

SQL sorguları hakkında çok şey öğrendiniz ve SQL ile gerçek dünyadaki problemleri çözmeye başlamak için harika bir konumdasınız. Bu SQL sorgu eğitiminde, SQL sorgusunun ne olduğunu ve SQL sorgularının nasıl yazılacağını öğrendiniz. 

Sorgu sözdizimini gördünüz ve yol boyunca bazı soruları yanıtladınız. SELECT - FROM - WHERE ifadelerini kullanarak basit SQL sorgu örnekleriyle başladık ve birleşimler, union ve iç içe sorgular kullanarak biraz daha karmaşık SQL sorgularına ilerledik. 

Eğitimde çok şey ele aldık, ancak bu basit ve ileri düzey SQL sorgularının tüm olası örneklerinin KAPSAMLI bir listesi değildir — daha fazlası var. Daha derin ve kapsamlı bir SQL anlayışı için DataCamp’in SQL Temelleri patikasını takip etmenizi önemle tavsiye ederiz. 

Unutmayın, herhangi bir beceride ustalaşmanın anahtarı pratiktir; SQL de bir istisna değildir! Pratik, SQL becerilerinizi başlangıç seviyesinden ileri seviyeye taşıyacaktır.

Öyleyse, hemen başlayın ve bol sorgulu günler!

Konular
SQL
Veri Bilimi

SQL için Kurslar

{count, plural, one {Kurs} other {Kurs}}

SQL ile İş Verilerini Analiz Etme

{hours} sa
48.5K
İşletmelerin performansı ölçmek için kullandığı temel metrikleri hesaplamak üzere SQL sorguları yazmayı öğrenin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

{count, plural, one {blog} other {blog}}

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

{count, plural, one {blog} other {blog}}

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

{count, plural, one {Eğitim} other {Eğitim}}

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

{count, plural, one {Eğitim} other {Eğitim}}

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör