Database Management Systems SQL Sorguları

Evet artık 3. yazımızda sorgulama dilini öğrenmeye başlayabiliriz. Başlamadan önce sizden ufak bir ricam olacak.

Lütfen siz de yazıyı açtığınızda kullandığınız sorgulama editörünü açın ve yazı ile birlikte sorgulamalarınızı yapın. Çıktıları kendiniz görün çünkü her yapılan sorgulamada çıktıların ekran görüntülerini yüklemem oldukça zor olacak çünkü çok fazla verileri görüntüleyeceğiz. Yazılım okuyarak değil deneyerek öğrenilir. O yüzden şimdi başlayalım.

 

SQL SORGULARI

SELECT

Select sorgusu ile tabloda bulunan verileri görüntüleyebiliyoruz.
Sorgulama dosyamıza,

SELECT *FROM customers

yazmamız müşterilerdeki * (hepsi anlamına gelir) bütün verileri seç anlamına gelir.
Lütfen siz de aynısını deneyin ve gelen verileri inceleyin.

Not: SQL sorgularını SELECT şeklinde değil de select şeklinde lowercase de yazabilirsiniz tamamen sizin stilinize bağlı.

SELECT DISTINCT

SELECT DISTINCT yalnızca farklı değerleri döndürmek için kullanılır.

SELECT DISTINCT last_name FROM customers

Burada veritabanına bana müşteriler tablosundan soy yalnızca soy isimlerini döndür diyoruz.

WHERE

WHERE sorgusu kayıtları filtrelemek için kullanılır.
Yalnızca SELECT sorgusu ile birlikte değil ileride göreceğimiz UPDATE gibi sorgularda da kullanılır.

SELECT * FROM orders WHERE shipping_fee < 250

Burada veritabanına bana Siparişlerden kargolama ücreti 250’den daha az siparişleri göster diyoruz.

AND

Diğer yazılım dillerinden bildiğimiz üzere ve anlamına gelen bu sorgu ile birlikte filtrelemek istediğimiz sonuçları zenginleştirebiliyoruz.

SELECT *FROM orders WHERE shipping_fee < 250 AND ship_state_province = "NY"

Burada veritabanına, bana siparişlerden kargolama ücreti 250’den fazla VE gönderim bölgesi NY olan kayıtları döndür diyoruz.

OR

SELECT *FROM orders WHERE shipping_fee < 250 OR ship_state_province = "NY"

Burada ise kargolama ücreti 250’den daha düşük VEYA bölgesi NY olanı döndür diyoruz.

NOT

Adı üstünde olumsuzluk belirtmek istediğimiz sorgularda kullanılır.

SELECT * FROM employees WHERE NOT city = "Redmond"

Bana çalışanlardan şehri Redmond OLMAYAN kayıtları döndür.

Son gördüğümüz 3 operatörü aynı anda kullanmamız gerekebilir.

SELECT * FROM products WHERE standard_cost < 20000 AND (target_level >= 20 OR target_level <= 100)

Bana ürünler tablosundan standart maliyeti 20000’den daha az VE hedef seviyesi 20 den fazla YA DA hedef seviyesi 100’den AZ (20 ile 100 arası) kayıtları döndür.

ORDER BY

Bu anahtar kelime ile kayıtları belirlemiş olduğumz bir kritere göre büyükten küçüğe veya küçükten büyüğe sıralayabiliyoruz.

SELECT DISTINCT standard_cost FROM products ORDER BY standard_cost

Ürünlerden yalnızca standart maliyetleri getir ve bunları da küçükten büyüğe sırala.

SELECT DISTINCT standard_cost FROM products ORDER BY standard_cost DESC

Ürünlerden yalnızca standart maliyetleri getir ve bunları da büyükten küçüğe sırala.

INSERT INTO

Bu sorgumuzda herhangi bir tabloya eleman eklemek için kullanıyoruz. Özellikle veritabanı oluşturma aşamalarında INSERT INTO komutu ile birlikte tablolarımıza elemanlar ekliyoruz. Veritabanı oluşturmayı öğrenmeden önce bu sorgulama komutlarını öğrenmemizin amacı da bundan kaynaklıydı. Komutları öğrendikten sonra veritabanı oluştururken kavramlara yabancı olmayacağız.

Şimdiki sorgumuzda ise müşteriler tablomuza yeni bir kayıt ekleyelim.

INSERT INTO customers (id, company, last_name, first_name, email_address, country_region, address)
VALUES (30, "Company AKARSU", "Akarsu", "Alp Ege", "alp@mail.com", "Turkey", "Bursa Osmangazi")

Müşterilere yeni bir kayıt ekle ve belirtilen özelliklerde kayıt oluştur. Bu şekilde oluşturmada parantez içinde vermiş olduğunuz özelliklerin tipine göre ve sırası ile girmeniz gerekli. Belirtmediğiniz fieldler null olarak otomatik oluşturulacaktır.

UPDATE

Update adı üstünde güncelleme komutudur. Var olan veritabanında herhangi bir kayıtı değiştirmemiz gerekirse bu komutu kullanabiliriz.

UPDATE customers 
SET job_title = "Software Engineer"
WHERE first_name = "Alp Ege"

Müşterilerden ilk adı Alp Ege olanların mesleğini Software Engineer olarak değiştir.

DELETE

Kayıtları silmek için kullanılır.

DELETE FROM customers 
WHERE first_name = "Anna"

Müşterilerden ilk ismi Anna olan kayıdı sil.

UYARI: UPDATE ve DELETE komutları çok tehlikeli kayıtlardır. Örneğin DELETE FROM customers şeklinde bir kayıdı yanlışıkla çalıştırırsanız veritabanındaki bütün kayıtları silebilirsiniz. Bu yüzden yapacağınız işlemlerde oldukça dikkatli olmanız ve WHERE clauseyi dikkatli bir şekilde kullanmanızı şiddetle öneririm.

SELECT TOP

Eğer çok büyük veritabanlarında çalışıyorsanız ve döndüreceğiniz kayıtlara limit koymak istiyorsanız kullanabilirsiniz.

SELECT * FROM customers
LIMIT 3

Not: MsSQL, MySQL, Oracle hepsinin syntaxları farklıdır.

MIN() MAX()

SELECT MIN(shipping_fee)
FROM orders

Siparişlerden gönderim ücreti en düşük olan kayıdı döndür.

SELECT MAX(shipping_fee)
FROM orders

Siparişlerden gönderim ücreti en yüksek olan kayıdı döndür.

COUNT(), AVG(), SUM()

COUNT belirlediğimiz kriterlerde kaç adet kayıt olduğunu bize döndürür.

SELECT COUNT(shipping_fee)
FROM orders

AVG kayıtlardaki değerlerin ortalamasını alır.

SELECT AVG(shipping_fee)
FROM orders

SUM ise kayıtlardaki değerlerin toplamını hesaplar.

SELECT SUM(shipping_fee)

LIKE

Bu komutu WHERE komutu ile birlikte spesifik değerler ararken kullanabiliriz. Örneğin ismi a harfi ile başlayan kayıtları döndürmek istersek LIKE komutunu kullanabiliriz.

SELECT *FROM customers
WHERE first_name LIKE 'a%'

Müşterilerden ilk ismi a harfi ile başlayan kayıtları döndür.

  • Eğer ‘%a’ şeklinde kullanılsaydı son harfi a olan kayıdı döndürürdü.
  • ‘%al%’ şeklinde kullanımda ise isimlerinde ‘al’ geçen tüm kayıtlar geri döndürülürdü.
  • ‘a%a’ kullanımında ise a ile başlayıp a ile biten kayıtlar döndürülürdü.
  • ‘b__%’ kullanımında ismi b ile başlayan ve en az 3 karakterli kayıtlar döndürülürdü.
  • SELECT *FROM customers
    
    WHERE first_name LIKE 'a%' AND last_name LIKE 'r%'
  • Müşterilerden ismi a ile başlayan soy ismi r ile başlayan kayıdı getir.
  • SELECT *FROM customers
    
    WHERE first_name LIKE '_a%'
  • Müşterilerden isminin ikinci harfi a olan kayıdı döndür.

Gördüğünüz üzere arkadaşlar bu karakterlerin oldukça geniş kullanım alanları var. Bunları istediğiniz şekilde deneyerek pratik yapmanızı öneririm.

IN

IN komutu WHERE komutu ile birlikte kullanılır. OR komutunun çoklu seçenekler için kullanılması gibidir.

SELECT * FROM customers WHERE city IN ('Boston', 'Boise', 'Milwaukee')

Müşterilerden şehri Boston ya da Boise ya da Milwaukee olan kayıtları döndür.

IN kullanımına farklı bir örnek olarak,

SELECT *FROM employees WHERE city IN (SELECT city FROM customers)

Çalışanlardan şehri, müşterilerden birinin şehri ile aynı olan kayıtları döndür anlamına gelir.

 

Bu yazıyı fazla sıkıcı olmaması için burada sonlandırıyorum. SQL dilinde daha bir çok komutları inceleyeceğiz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir