SQL 2 : Yararlı ve Bilinmesi Gereken SQL Komutları

SQL‘e giriş yaptıktan sonra, bu yazımda aşağıdaki SQL komutlarını açıklamayarak SQL kaynağı oluşturmaya devam edeceğim ;

  • AS ile isimlendirme
  • DISTINCT ile veri tekrarını önleme
  • ORDER BY ile sıralama
  • AND ve OR operatörleri
  • TOP ile istenilen sayıda kayda ulaşma
  • NULL tipi değerlerin kontrolü
  • UNION ve UNION ALL ile sorgu birleştirme
  • SELECT INTO ile sonuçları farklı bir tabloda gösterme

Öncelikle üzerinde çalışma yapabileceğimiz bir tablo oluşturalım ;

Film_No Ad Tarih IMDB_Puan
1 The Shawshank Redemption 1994 9,2
2 The Dark Knight 2008 8,8
3 Fight Club 1999 8,8
4 Forrest Gump 1994 8,6
5 Leon 1994 8,6
6 V For Vandetta 2006 8,1
7 A Beautiful Mind 2006 8,0
8 Eternal Sunshine of the Spotless Mind 2004 8,4
9 Inception 2010 8,8
10 Good Will Hunting 1997 8,1

AS (ALIAS) ile İsimlendirme

AS komutu ile bir tabloya ya da bir sütuna isim verebilirsiniz. Yazdığınız sorgunun sonuçları önünüze getirilirken, tablo isimlerini ve sütun isimlerini kendiniz belirleyebilirsiniz.

Filmler tablosundan tüm kayıtları bir sorgu ile çekelim ve oluşacak tablonun ismini Filmler_Deneme yapalım ;

SELECT *
FROM FILMLER
AS Filmler_Deneme

Bir yönetmenler tablosu olduğunu düşünün ve bu tablo Yonetmen_ID, Ad, Soyad gibi 3 farklı sütuna sahip olsun. Bir sorgu sonucu Ad ve Soyad değerlerini aynı sütun içerisinde elde edebilirsiniz. Fakat VTYS bu sütunun ismini kendisi verecektir. Siz bu sütunun ismini şu şekilde kendiniz belirleyebilirsiniz ;

SELECT Ad & Soyad AS Tam isim
FROM FILMLER

Sorgunuzda kaynak belirttiğiniz tabloların isimlerini de AS ile yeniden belirleyebilirsiniz. Bunun sebebi genellikle tablo ismini kısaltmaktır.

FROM Filmler AS F

ya da daha kısaca ;

FROM Filmler F

Bu şekilde tablonun ismini F yaptıktan sonra, Filmler tablosundaki kayıtlara F.Film_ID, F.Ad, F.IMDB_Puan olarak ulaşabilirsiniz.

Aslında tüm bunların amacı 2 ya da daha fazla sayıda farklı tablodan aynı sütun ismine sahip değerleri çekerken çıkabilecek zorlukları önlemektir. Şöyle bir sorguda ;

SELECT Ad
FROM Filmler, Yonetmenler

Ad değeri her iki tabloda da olduğu için VTYS hangi tablodan çekeceğini bilemez ve hata verir. Bunu engellemek için tablolara isim verip, o isimle beraber sütun adını yazacağız ;

SELECT F.Ad, Y.Ad
FROM Filmler F, Yonetmenler Y

DISTINCT ile Veri Tekrarını Önleme

DISTINCT, bir sütundan değerleri çekerken tekrar eden verileri atar. Eğer böyle birşey yapmanız gerektiyse aşağıdaki gibi kullanabilirsinz ;

SELECT DISTINCT Soyad
FROM Yonetmenler

ORDER BY ile Sıralama

ORDER BY ile seçtiğiniz sütundaki kayıtları sıralayabilirsiniz. Default olarak küçükten büyüğe sıralanır.

DESC : Büyükten küçüğe sıralar.
ASC : Küçükten büyüğe sıralar.

SELECT *
FROM Filmler
ORDER BY IMDB_Puan

Bu sorgu, sonuçları IMDB puanı küçük olandan büyük olana doğru sıralayacaktır.

En son çıkan filmleri tarihine göre sıralayalım ;

SELECT *
FROM Filmler
ORDER BY Tarih DESC

AND ve OR Operatörleri

AND ve OR mantıksal operatörlerini bir sorgu için birden fazla kriter belirtirken kullanabilirsiniz.

2000’den sonra çıkmış, adı “The” ile başlayan filmlere ulaşalım ;

SELECT *
FROM Filmler
WHERE Tarih >= 2000 AND Ad LIKE "The*"

IMDB Puanı 8.5 den büyük olan veya 2000 yılından önce çıkmış filmlere ulaşalım ;

SELECT *
FROM Filmler
WHERE IMDB_Puan >= 8.5 OR Tarih < 2000

AND ve OR operatörlerini birbirlerinin içinde kombine bir şekilde de kullanabilirsiniz.

Adı “The” ile başlayan, tarihi 2000’den küçük ya da IMDB Puanı 8.5 den büyük filmlere ulaşalım ;

SELECT *
FROM Filmler
WHERE Ad LIKE "The*" AND ( Tarih < 2000 OR IMDB_Puan < 8.5 )

TOP ile İstenilen Sayıda Kayda Ulaşma

TOP Fonksiyonu, oluşturduğunuz sorgu sonucunda, istediğiniz sayıda kayda ulaşmanızı sağlar. Bir başka deyişle, sorgunuzu kısıtlayabilirsiniz.

Bütün VTYS’ler TOP mantığını desteklemektedir fakat syntax’ları farklı olabilmektedir.

IMDB Puanı en yüksek olan 5 filmi adlarıyla beraber çekelim ;

SELECT TOP 5 Ad, IMDB_Puan
FROM Filmler
ORDER BY IMDB_Puan DESC

Yukarıdaki syntax, MS Access ve SQL Server için geçerlidir.

ORACLE için aşağıdaki gibi bir kod yazmanız gerekir ;

SELECT Ad, IMDB_Puan
FROM Filmler
WHERE ROWNUM < = 5
ORDER BY IMDB_Puan DESC

MySQL için ise aşağıdaki gibi bir kod yazmanız gerekir ;

SELECT Ad, IMDB_Puan
FROM Filmler
LIMIT 5
ORDER BY IMDB_Puan DESC

NULL Tipi Değerlerin Kontrolü

NULL fonksiyonu ile değer girilmeyen sütunları test edebilir, o kayıtlara ulaşabilirsiniz.

IS NULL ya da IS NOT NULL olarak iki farklı şekilde kullanabilirsiniz.

SELECT Tarih
FROM Filmler
WHERE Tarih IS NULL
SELECT Tarih
FROM Filmler
WHERE Tarih IS NOT NULL

UNION ve UNION ALL ile Sorgu Birleştirme

2 ya da daha fazla sorguyu birleştirmek için UNION komutu kullanılır. Her sorgu cümlesinde seçilen sütun sayısı aynı olmak zorundadır.

SELECT Ad, Soyad FROM Yonetmenler
UNION
SELECT Ad, Soyad FROM Oyuncular

UNION, DISTINCT gibi çalışarak tekrar eden verileri silecektir. Tekrar eden verilerin silinmesini istemiyorsanız UNION ALL kullanabilirsiniz.

SELECT Ad, Soyad FROM Yonetmenler
UNION ALL
SELECT Ad, Soyad FROM Oyuncular

Sorgular sonucunda seçilen sütun isimleri, ilk sorgudaki isim ile aynı olacaktır.

SELECT INTO ile Sonuçları Farklı Bir Tabloda Gösterme

Tablonun bir yedeğini almak için kullanılır da diyebiliriz. SELECT ile neyin yedeğinin alınacağı seçilir ve INTO ile yeni tablonun ismi verilir.

Yedek alma işlemini tüm tablo için uygulayabilirsiniz ya da WHERE ile kriter belirterek istenilen kayıtlardan oluşan bir yedek alabilirsiniz. Ayrıca oluşturduğunuz tablonun yedeğini, sizin gösterdiğiniz bir veritabanına da kaydedebilirsiniz.

Filmler tablosunun yedeğini alalım ve yedek tablonun ismini Film_Yedek yapalım ;

SELECT *
INTO Filmler_Yedek
FROM Filmler

1994 yılında çıkmış filmlerin Ad ve IMDB_Puan değerlerinin yedeğini alalım ;

SELECT Ad, IMDB_Puan
INTO Filmler_Yedek
FROM Filmler
WHERE Tarih = 1994

IMDB Puanı 8.5′den büyük olan filmleri, daha önceden var olan Film_Backup veritabanına tablo olarak kaydedelim.

SELECT *
INTO Film_Yedek "IN Film_Backup"
FROM Filmler
WHERE IMDB_Puan > 8.5

Sonuç – Özet

AS fonksiyonu ile tablo ya da sütunlara isim verebilir, DISTINCT ile tekrar eden kayıtları ayıklayabilir ve ORDER BY ile kayıtları sıralayabilirsiniz.

AND ve OR operatörleri birden fazla kriter belirtirken kullanabilirsiniz.

UNION ve UNION ALL ile birden fazla sorguyu birleştirebiliriz.

NULL fonksiyonu ile değer girilmemiş kayıtlara ulaşabilirsiniz.

Son olarak da SELECT INTO ile bir sorgu sonucunu farklı bir tabloya kaydedebilirsiniz.

Benzer Yazılar

Yorumlar

Yorum Yazın

Su elementleri kullanabilirsiniz : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Arama
RSS
Beni yukari isinla