BÖLÜM 11. YAPISAL SORGULAMA DİLİ (SQL)
Amaçlar:
Yapısal Sorgulama Dilinin temellerini Kavramlarını öğreneceksiniz
İçindekiler:
11.1 Giriş
11.2 SQL Komutları
11. YAPISAL SORGULAMA DİLİ (SQL)
11.1 Giriş
Yeni bir Veritabanı oluşturulması, yeni kayıt ekleme, kaydın değiştirilmesi, tabloya kısıtlar eklenmesi, kısıtların değiştirilmesi gibi işlemler yapısal sorgulama dili olarak bilinen SQL ile gerçekleştirilir. SQL komutları VTYS ‘ine bağlı olarak bir SQL editörü aracılığı ile ya da başka bir programlama dili içerisine gömülü olarak çalıştırılabilir.
SQL komutları işlevlerine göre gruplara ayrılır:
Veri Tanım Dili(DDL): Bu gruptaki komutlar VT tablolarının ve diğer enselerin fiziksel yapısını oluşturmak ve değiştirmek için kullanılır.
Veri Manipülasyon Dili(DML): Bu gruptaki komutlar kayıtların tabloya eklenmesi, tablodan çıkartılması ya da var olan kayıtların değiştirilmesi için kullanılır.
Veri Denetim Dili(DCL): Bu gruptaki komutlar veri tabanı üzerindeki yetkilendirmeleri denetler.
Hareket Denetim Dili(TCL): Bu gruptaki komutlar tablolar üzerindeki değişikliklerin ve hareketlerin VT’yede kesin olarak saklanması veya yapılan işlemlerden vazgeçildiğinde VT’yi önceki durumuna getirmede kullanılır.
Veri Sorgulama Dili(DQL): Bu gruptaki komutlar veri sorgulamada kullanılır.
11.2 TEMEL SQL KOMUTLARI
Veri tabanlarındaki en önemli işlem sorgulamadır. Veritabanındaki verilerde raporlar elde edilmesi istatistikler çıkartılması, kayıtların sıralanması gibi amaçlarla kullanılır. Çok sayıda kayıt arasından istenilen kayıtların seçilmesi için kullanılan komut SELECT’tir Bu komut ile bir yada birden fazla tablodan sorgulama yapılabilir. Genle yapısı
SELECT * FROM tablo adı şeklindedir.
SELECT komutu tablolardaki alanları seçmek için kullanılır.
Aşağıda verilen örneklerde Takip veritabanında Zkimlik1 tablosundan SQL cümleleri kullanılarak elde edilen raporlar görülmektedir.
1. SELECT * FROM Zkimlik1
Bu SQL cümlesi ile Zkimlik1 tablosundaki kayıtların tamamı bütün alanları ile(*
kullanıldığı için) listelenir. Elde edilen çıktı aşağıda verilmiştir.
2. SELECT OrtakNo, Ad, Soyad from Zkimlik1.
Şekil 10.7
Yukarıda SQL cümlesinde yalnızca OrtakNo, Ad ve Soyad alanları seçildiği için SQL cümlesinin yerleştirilmesi sonucu elde edilen rapor şekil 10.7 ki gibi olur.
3. SELECT * FROM Zkimlik1 ORDER BY Ad
Yukarıda verilen SQL cümlesi, Zkimlik1 tablosundan “Ad” alanına göre sıralı bir rapor elde edilmesini sağlar. Çünkü ORDER BY, SQL’de sıralı çıktı elde etmek için kullanılır.
Elde edilecek çıktı artan sıralıdır. Eğer elde edilen çıktının azalan sırada olması isteniyorsa cümlenin sonuna DESC yazıp çıktının “Ad” alanına göre azalan sırada olması
sağlanmalıdır. Aşağıda şekil 10.8 ‘de artan sırada bir rapor, Şekil 10.09 ‘da azalan sırada bir rapor gösterilmiştir.
SELECT * FROM Zkimlik1 ORDER BY Ad
Şekil 10.8 SELECT * FROM Zkimlik1 ORDER BY Ad DESC
Şekil 10.9
Bunlardan başka SQL cümlelerinde elde edilecek cıktı birden fazla alana göre sıralanabilir. Bunun için ORDER BY sözcüğünden sonra raporun sıralanacağı alanlar birbirinden virgül ile ayrılarak yazılır.
SELECT * FROM Zkimlik1 ORDER BY Ad,Soyad
Şekil 10.10
Şekil 10.8 ile şekil 10.9 ‘u karşılaştırarak elde edilin çıktılar arasındaki farkı gözleyiniz.
4. SELECT * FROM Zkimlik1 WHERE ad=”AHMET”
WHERE, belli koşula uyan kayıtların listelenmesi için kullanılır. Yukarıdaki SQL cümlesi Zkimlik1 tablosundan Ad alanı AHMET olan kayıtların listelenmesini sağlar.
SQL cümlesinden elde edilen çıktı şekil 10.11’de gösterilmiştir.
Şekil 10.11
Yukarıdaki cümle SELECT * FROM Zkimlik1 WHERE Ad=”AHMET” OR Soyad=”MERT” şeklinde değiştirilirse elde edilecek rapor şekil 10.12’de verilmiştir. Bu raporun Şekil 10.11’de verilen rapordan farklı olduğunu gözleyiniz. Ayrıca bu cümlede
kullanılan OR mantıksal operatörü yerine AND operatörü kullanılsaydı elde edilecek raporda görüntülenecek kayıtların hangi kayıtlar olacağını tahmin ediniz.
Şekil 10.12
5. SELECT * FROM Zkimlik1 WHERE ad BETWEEN “AYDIN” AND “BEKİR”
SQL cümlelerinde aralık sorgulaması yapmak için BETWEEN kullanılır. Yukarıdaki SQL cümlesi ile Zkimlik1 tablosundan sorgu çekildiğinde aşağıdaki çıktı elde edilir.
Şekil 10.13
6. SELECT * FROM zkimlik1 WHER ad IN('Ali','Bekir')
IN komutu koşul belirtirken kullanılır. Örneğin adı Ali ve Bekir olan kayıtları listelemek istersek yukarıdaki SQL cümlesi yazılır ve aşağıdaki rapor elde edilir.
Şekil 10.14
7. SELECT * FROM ZKimlik1 WHERE adi LIKE ‘*C*’
LIKE komutu aranılan kayıttan yalnızca birkaç harf biliniyorsa o kayıtları listelemek için kullanılır. Şekil 10.15 ‘de ad sütununda içinde C harfi geçen kayıtlar listelenmiştir.
Şekil 10.15
8. SQL Cümlelerinde Aritmetiksel Fonksiyonların Kullanımı
SQL cümlelerinde sayısal veriler üzerine aritmetiksel fonksiyonlar uygulanabilir.
Bunlardan bazıları aşağıda verilmiştir.
SUM : Toplama fonksiyonu
MAX : En büyük değeri bulan fonksiyon MIN : En küçük değeri bulan fonksiyon AVG : Ortalama alan Fonksiyon
COUNT : Tablodaki kayıt sayısını bulan fonksiyon
SELECT ortakno, SUM(borc) as tborc, SUM(alacak) as talacak, sum(borc-alacak) as fark FROM tkart GROUP BY ortakno
Şekil 10.16
Yukarıdaki SQL cümlesinde kullanılan GROUP BY aynı ortak numarasına ait kayıtları gruplamak için kullanılmıştır.
SELECT MAX(borc) as maxborc, MAX(alacak) as maxalacak FROM tkart
Şekil 10.17
SELECT MIN(borc) as maxborc, MIN(alacak) as maxalacak FROM tkart
Şekil 10.18
SELECT AVG(borc) as ortborc, AVG(alacak) as ortalacak FROM tkart
Şekil 10.19
SELECT COUNT(*) as KayıtSayısı FROM tkart
9. SQL Cümleleriyle Birden Fazla Tablodan Sorgu Yapma
SQL cümleleri ile tek bir tablodan sorgu yapılıp rapor oluşturulabildiği gibi birden fazla tablo kullanılarak da rapor hazırlanabilir. Örneğin Zkimlik1 tablosundan OrtakNo, Ad, Soyad ve Zkimlik3 tablosundan DTarih(Doğum Tarihi) alınarak bir rapor oluşturulmak istenirse basit olarak aşağıdaki gibi bir SQL cümlesi yazılabilir.
SELECT Zkimlik1.ortakno, zkimlik1.ad, zkimlik1.Soyad, zkimlik3.DTarih FROM Zkimlik1, zkimlik3
WHERE zkimlik1.ortakno=zkimlik3.ortakno
Bu SQL cümlesi çalıştırıldığında aşağıdaki gibi bir rapor elde edilir.
10. SQL Cümlesiyle Tablolara Kayıt Eklemek
CREATE TABLE deneme(
plaka_no NUMBER PRIMARY KEY, marka char(25) unique);
INSERT INTO Zkimlik1 ( ortakno, ad, soyad, BabaAd, DogYer, meslekgrubu ) VALUES ('2000', 'MEHMET', 'CAN', 'HASAN', 'SAKARYA', 2);
Yukarıdaki SQL cümlesi Zkimlik1 tablosuna ortakno’ su 2000 olan yeni bir kayıt ekler.
11. SQL Cümlesiyle Tablolardaki Kayıtlar Üzerinde Değişiklik Yapmak
UPDATE zkimlik1 SET ad = 'Ayşe', soyad = 'öz', BabaAd = 'mehmet', dogYer = 'Bolu', meslekgrubu = 3, Is_basla = '11-12-2009'
WHERE ortakno='2000';
Yukarıdaki SQL cümlesi Zkimlik1 tablosuna ortakno’ su 2000 olan kayıt üzerinde değişiklik yapar.
12. SQL Cümlesiyle Tablolardaki Kayıtları Silmek
DELETE * FROM zkimlik1 WHERE ad='Ayşe';
Yukarıdaki SQL cümlesi Zkimlik1 tablosuna Ad alanı ‘Ayşe’ olan kayıtları siler.