bilişim teknolojileri veri tabanında sorgular

advertisement
T.C.
MİLLÎ EĞİTİM BAKANLIĞI
BİLİŞİM TEKNOLOJİLERİ
VERİ TABANINDA SORGULAR
481BB0037
Ankara, 2012

Bu modül, mesleki ve teknik eğitim okul/kurumlarında uygulanan Çerçeve
Öğretim Programlarında yer alan yeterlikleri kazandırmaya yönelik olarak
öğrencilere rehberlik etmek amacıyla hazırlanmış bireysel öğrenme
materyalidir.

Millî Eğitim Bakanlığınca ücretsiz olarak verilmiştir.

PARA İLE SATILMAZ.
İÇİNDEKİLER
AÇIKLAMALAR .................................................................................................................... ii
AÇIKLAMALAR .............................................................Hata! Yer işareti tanımlanmamış.
GİRİŞ ....................................................................................................................................... 1
ÖĞRENME FAALİYETİ-1 ..................................................................................................... 3
1. SORGULAR VE ÇEŞİTLERİ ............................................................................................. 3
1.1. SQL Dilinin Yapısı ....................................................................................................... 4
1.1.1. Sorgu İle Tablo Oluşturma .................................................................................... 4
1.1.2. Tablo Silme............................................................................................................ 6
1.1.3. Sütun Ekleme ......................................................................................................... 6
1.1.4. Tablo Güncelleme.................................................................................................. 7
1.1.5. SELECT Deyiminin Yapısı ................................................................................... 9
1.1.6. SQL Fonksiyonları .............................................................................................. 14
1.2. Verileri Gruplayarak Analiz Etme .............................................................................. 16
1.2.1. Grup Fonksiyonları .............................................................................................. 16
1.2.2. Birden Fazla Sütuna Göre Gruplama ................................................................... 17
1.2.3. Grup Koşullarının Kullanımı ............................................................................... 18
UYGULAMA FAALİYETİ .......................................................................................... 19
ÖLÇME VE DEĞERLENDİRME .................................................................................... 21
ÖĞRENME FAALİYETİ-2 ..............................................Hata! Yer işareti tanımlanmamış.
2. İLİŞKİLİ TABLOLAR ...................................................................................................... 23
2.1. Tabloların Birleştirilmesi ............................................................................................ 23
2.1.1. Kartezyen Çarpımı ............................................................................................... 23
2.1.2. Eşiti Olan Birleştirme .......................................................................................... 25
2.1.3. Eşiti Olmayan Birleştirme ................................................................................... 26
2.2. Alt Sorgular ................................................................................................................. 27
2.2.1. Alt Sorgu Düzenleme Kuralları ........................................................................... 27
2.2.2. Alt Sorgunun Tanımlanması ................................................................................ 28
2.2.3. Çoklu Satır Alt Sorguları ..................................................................................... 28
2.2.4. Tek Satır Alt Sorguları......................................................................................... 30
UYGULAMA FAALİYETİ .............................................................................................. 31
ÖLÇME VE DEĞERLENDİRME .................................................................................... 33
ÖĞRENME FAALİYETİ-3 ................................................................................................... 34
3. DML SORGULARI ........................................................................................................... 34
3.1. Tabloya Satır Ekleme İşlemi ....................................................................................... 34
3.1.1. INSERT Deyimi Yapısı ....................................................................................... 34
3.1.2. NULL Değer Ekleme ........................................................................................... 36
3.1.3. Fonksiyonların Kullanımı .................................................................................... 36
3.1.4. Bir Diğer Tablodan Satır Kopyalama .................................................................. 37
3.2. Tablodaki Verileri Güncelleme ................................................................................... 38
3.3. Tablolardan Veri Silme ............................................................................................... 40
UYGULAMA FAALİYETİ .............................................................................................. 42
ÖLÇME VE DEĞERLENDİRME .................................................................................... 44
MODÜL DEĞERLENDİRME ............................................................................................. 45
CEVAP ANAHTARLARI ..................................................................................................... 47
KAYNAKÇA ......................................................................................................................... 48
i
AÇIKLAMALAR
AÇIKLAMALAR
KOD
ALAN
DAL/MESLEK
MODÜLÜN ADI
MODÜLÜN TANIMI
SÜRE
ÖN KOŞUL
YETERLİK
481BB0037
Bilişim Teknolojileri
Veri Tabanı Programcılığı, Web Programcılığı
Veri Tabanında Sorgular
Veri tabanı üzerinde sorguların oluşturulması ve çalıştırılması
ile ilgili bilgilerin verildiği öğrenme metaryalidir.
40/24
“Veri Tabanı Hazırlama” modülünü tamamlamış olmak
MODÜLÜN AMACI
Genel Amaç
Bu modülü başarı ile tamamlayan öğrenci; İlişkisel Veri
Tabanını, SQL (Structured Query Language-Yapısal
Sorgulama Dili) ve DML (Data Manipulation Language)
sorgularını verimli ve düzenli çalıştırarak Veri Tabanında
sorgulama yapabilecektir.
Amaçlar
1. Sorgu oluşturabilecek ve çeşitlerini kullanabileceksiniz.
2. İlişkili tablolar ile sorgu hazırlayabileceksiniz.
3. Veri işleme (DML) sorgularını kullanabileceksiniz.
EĞİTİM ÖĞRETİM
ORTAMLARI VE
DONANIMLARI
Ortam: Bilgisayar Laboratuvarı
Donanım:Bilgisayar, internet, projeksiyon
ÖLÇME VE
DEĞERLENDİRME
Modül içinde yer alan her öğrenme faaliyetinden sonra
verilen ölçme araçları ile kendinizi değerlendireceksiniz.
Öğretmen modül sonunda ölçme aracı (çoktan seçmeli test,
doğru-yanlış testi, boşluk doldurma, eşleştirme vb.)
kullanarak modül uygulamaları ile kazandığınız bilgi ve
becerileri ölçerek sizi değerlendirecektir.
ii
GİRİŞ
GİRİŞ
Sevgili Öğrenci,
Bir önceki modül olan “Veri Tabanı Hazırlama” modülünde veri tabanı yazılımı
kurulumunu yaparak, veri tabanının en önemli ögesi olan tabloları, tabloların özelliklerini ve
tablolarla ilgili çeşitli işlemler yapmayı öğrenmiştiniz.
Veri tabanında tablo oluşturma işleminden sonra gelen en önemli işlem ise “Sorgular”
oluşturmaktır.
Bu modül ile sorgular hazırlamayı öğrenecek, veri tabanı tablolarınız üzerinde ekleme,
silme sıralama gibi işlemleri yapabilecek, kısacası veri tabanı tablolarınıza istediğiniz şekilde
erişim sağlayabileceksiniz.
Her modülün sonunda kendinizi değerlendirebileceğiniz ölçme ve değerlendirme
soruları, öğrenmiş olduğunuz konuyu pekiştirmeniz için ise uygulama faaliyetleri ve tüm
modüllerin sonunda bu öğrenme faaliyeti kapsamında neler öğrendiğinize dair kendinizi test
etmenizi sağlayacak “Modül Değerlendirme” soruları bulunmaktadır. Bunları başarı ile
tamamladığınız takdirde sizler artık “Veri Tabanında Sorgu” yapmayı öğrenmiş olacaksınız.
Tabii ki takıldığınız bir konuda da öğretmeninize baş vurmayı ihmal etmeyiniz.
1
2
ÖĞRENME FAALİYETİ–1
AMAÇ
ÖĞRENME FAALİYETİ-1
Sorgu oluşturabilecek ve çeşitlerini kullanabileceksiniz.
ARAŞTIRMA

Sorgu çeşitlerinin neler olduğunu araştırınız.

SQL komutlarının kullanılan veri tabanı hazrılama programlarına göre ne gibi
değişiklikleri olduğunu araştırınız.
1. SORGULAR VE ÇEŞİTLERİ
“Veri Tabanı Hazırlama” modülünde veri tabanının temelini oluşturan tablolar ve
tablolarla ilgili özellikler anlatılmıştı. Veri tabanında tablo oluşturma işleminden sonra gelen
en önemli işlem ise “Sorgular” oluşturmaktır.
Tablolardaki kayıtlarda silme, ekleme, sıralama, seçme, değiştirme gibi işlemlere
ihtiyaç duyulacaksa sorgular hazırlanması gerekir.
Ayrıca, yapılan bir takım işlemleri otomatikleştirmek ve verilerde yapılan
değişiklikleri kaydetmeden önce gözden geçirmek istendiği zaman da sorgular oluşturulur.
Tablonun yapısına ve verileri görüntüleme yöntemine göre değişik özelliklerde
sorgular hazırlanmaktadır. Seçme sorguları, parametre sorguları, çapraz sorgular, eylem
sorguları ve SQL sorguları kullanılan sorgu türleridir.

Seçme Sorguları: En sık kullanılan sorgu türüdür. Seçme sorguları, bilgileri
“veri sayfası görünümü”nde gösteren veri tabanı nesnesi türüdür. Sorgu, verileri
bir veya birden fazla tablodan, mevcut sorgulardan veya bunların her ikisinden
alabilmektedir.

Parametre Sorguları: Parametre sorguları, çalıştırıldığı zaman bir ölçüt
girilmesini sağlayan iletişim kutusunu açan sorgulardır. Örneğin bir okuldaki
personelin ocak ayında sevk aldığı günleri görmek istiyorsak, açılan iletişim
kutusuna ölçüt olarak istenilen tarih aralıkları girilir ve bu tarihler arasındaki
veriler listelenir.

Çapraz Sorgular: Bir tablodaki bilgileri analiz etmek, karşılaştırmak ve
tablonun özetini hazırlamak için kullanılan sorgu türüdür. Belirtilen iki alana
göre istenilen işlemi (toplama, ortalama, vs.) tablo şeklinde göstermekte
kullanılır.
3

Eylem Sorguları: Tek işlemle birçok kayıtta değişiklik yapan sorgulardır.
Silme sorgusu, güncelleştirme sorgusu, ekleme sorgusu ve tablo yapma sorgusu
olmak üzere dört çeşit eylem sorgusu vardır.

SQL Sorguları: SQL deyimlerini kullanarak veri tabanını güncelleştirme ve
yönetme ile ilgili oluşturulan sorgulardır.
1.1. SQL Dilinin Yapısı
SQL (Structured Query Language), veri tabanındaki verileri okumak, güncellemek,
yeni veri eklemek, verileri silmek vb. gibi işlemleri yapan, program yazarken kolaylıklar
sağlayan, satırlarca kodun yaptığı işlemi tek bir sorguda yapabilen, yapısal bir sorgulama
dilidir.
1.1.1. Sorgu İle Tablo Oluşturma
Sorgu kullanarak tablo oluşturmak için CREATE TABLE ifadesi kullanılır.
SQL kodu yazılarak tablo oluşturma aşağıdaki şekilde yapılmaktadır.
Kullanımı:
CREATE TABLE tablo_adı
(
Sütun1 veri tipi,
Sütun2 veri tipi,
.
.
sütunN veri tipi
)
Sorgu kullanarak tablo oluşturmak için öncelikle “Veri Tabanı Hazırlama” modülünde
öğrendiğiniz şekilde boş bir veri tabanı oluşturulur ya da önceden hazırlamış olduğunuz veri
tabanı dosyası açılır.
Veri tabanını oluşturduktan sonra Oluştur sekmesi altında yer alan Diğer grubundan
Sorgu Tasarımı(
) düğmesine tıklanır. Sorgu Tasarımı seçeneği sorgu tasarımcısının
açılmasını sağlar ve Tabloyu Göster iletişim kutusu görüntülenir.
4
Şekil 1.1: Tabloyu göster iletişim kutusu
Tabloyu Göster İletişim kutusundan eklemek istenilen Tablo veya sorgular seçilip
sırası ile Ekle ve Kapat düğmelerine tıklanır.
Sorgu1
sekmesi
üzerinde
farenin
sağ
tuşuna
basılıp
açılan
menüden
seçeneği seçilip istenilen SQL kodları yazılır.
Örnek:
Aşağıdaki SQL kodları Veri tabanı hazırlama programında yazılıp çalıştırıldığı zaman
PERSONEL adında bir tablo oluşturulur ve bu tablonun sütunları Personel_no, Adı,
Soyadı olarak tanımlanmış olur.
Çalıştır(
) düğmesine basıldığında aşağıdaki sonuç elde edilir.
5
1.1.2. Tablo Silme
Daha önceden oluşturmuş olduğunuz bir tabloya ihtiyaç duymayıp veri tabanından
silmek isteyebilirsiniz. Silme işlemini gerçekleştirmek için DROP deyimi kullanılmaktadır.
Kullanımı:
DROP TABLE tablo
Örnek:
DROP TABLE PERSONEL
Yeni bir sorgu oluşturup yukarıdaki komut satırını yazıp çalıştırdığınız zaman veri
tabanı programı önceden oluşturmuş olduğunuz PERSONEL isimli tabloyu silecektir.
NOT: Tabloyu silmeden önce tabloyu kapatmanız gerekmektedir.
1.1.3. Sütun Ekleme
Bir tablo oluşturduktan sonra, isteğe göre oluşturulmuş olan tabloya yeni sütunlar
ekleyebilirsiniz. Tabloya yeni bir sütun eklemek için ADD COLUMN deyimi kullanılır.
Kullanımı:
ALTER TABLE tablo_adı
ADD sütun_adı, veri_türü
Örnek:
Önceden oluşturulmuş olan PERSONEL isimli tabloya “Bölümü” sütununu eklemek
istersek SQL ifadesi aşağıdaki şekilde olacaktır.
Çalıştır(
) düğmesine basıldığında aşağıdaki sonuç elde edilecektir.
6
1.1.4. Tablo Güncelleme
Belirtilen tablodaki alanların değerlerini belirtilen ölçütlere göre değiştirmek için bir
güncelleme sorgusu oluşturmak gerekir. Bunun için UPDATE deyimi kullanılır.
Kullanımı:
UPDATE tablo
SET sütun_adı=yenideğer
WHERE ölçütler;
Örnek: Ücret tablosundaki kayıtlarda, Maaşı isimli alanda yer alan değerlerden
% 0,07 kesinti yaparak sonucu yine aynı alan üzerinde kaydetmek istensin. Ücret tablosunun
kesinti yapılmadan önceki hali aşağıdaki gibidir.
Maaş üzerinde % 0.07 kesinti yapmayı sağlayacak sorgu aşağıdaki gibidir.
Sorgu yukarıdaki gibi yazılıp çalıştır(
gibi olacaktır.
7
) düğmesine basıldığında sonuç aşağıdaki
Bazı durumlarda tanımlamış olduğunuz sütunlarda değişiklik yapmak isteyebilirsiniz.
Örneğin Personel tablosunda başlangıçta tam sayı olarak tanımlamış olduğunuz İl_Kodu
alanının veri türünü 15 karakterden oluşan bir metin alanı olarak değiştirmek isteyebilirsiniz.
Şekil 1.2 : İl_kodu alanının veri türünün değiştirilmeden önceki hali
İl_kodu veri türünü metin veri türüne dönüştürmek için Sorgu penceresine yazılması
gereken kod aşağıdaki gibi olacaktır.
Kod satırı yazılıp çalıştır(
edilecektir.
) düğmesine basıldığı zaman aşağıdaki sonuç elde
Şekil 1.3: İl_kodu alanının veri türünün değiştirilmiş hali
8
1.1.5. SELECT Deyiminin Yapısı
Veri tabanında verilere erişebilmek için SELECT deyimi kullanılmaktadır. Select
deyimi ile bir tabloda bulunan belli bir sütun, birden fazla sütun veya tüm sütunları
çekebilirsiniz.
Bunun yanı sıra sorgulama işlemlerini gerçekleştirmek için de SELECT deyiminden
yararlanılır.
Kullanımı:
SELECT [sütun_listesi]
FROM [tablo_listesi]
Örnek:
SELECT adı FROM PERSONEL
Bu satır ile Personel tablosunda bulunan “adı” alanını seçersiniz.
Örnek:
SELECT * FROM PERSONEL
Bu satır ile Personel tablosunda bulunan tüm alanlar seçilmiş olur.
9
Örnek:
SELECT adı, Soyadı FROM PERSONEL
Bu satır ile Personel tablosunda bulunan adı ve soyadı alanlarını seçersiniz.
Örnek:
SELECT adı, Soyadı, adı +” “ + Soyadı FROM PERSONEL
Bu satır ile Personel tablosunda bulunan adı ve soyadı alanlarını birleştirmiş
olursunuz. + operatörü sütun birleştirmek için kullanılmakla birlikte, eğer sütunlar
rakamlardan oluşan veriler içeriyorlarsa bu operatör matematiksel toplama işlemi yapmış
olur.
1.1.5.1. Verilerin Sınırlandırılması
Veri tabanında veriyi alma işlemi sırasında satırlara birtakım sınırlamalar getirilerek
tablonun tüm satırları yerine istenildiği kadarını elde etmek mümkündür. Tabloda belirli
kısımları seçme işlemini gerçekleştirmek için WHERE sözcüğü kullanılmaktadır.
Kullanımı:
SELECT [sütunlar]
FROM [tablo]
WHERE [koşul]
10
Örnek:
PERSONEL tablosunda yer alan İl_kodu 34 olan kayıtları listelemek istersek komut
satırı aşağıdaki şekilde olacaktır.
Yukarıdaki SQL kodunu yazıp çalıştırdığımız zaman aşağıda görüldüğü gibi İl_kodu
34 olan kayıtlar listelenecektir.
Örnek:
Ücret tablosunda, Personel_no ve maaşı alanları görülmektedir.
Aşağıdaki SQL deyimi, maaşları 2000 TL’den yüksek olan çalışanları seçmeye yarar.
Bu komut satırı yazılıp çalıştırıldığında listelenen kayıtlar aşağıdaki gibi olacaktır.
11
Aşağıdaki tabloda Where komutuyla kullanılabilecek koşul operatörlerine örnekler
verilmiştir.
KOŞUL
200
Not 2000
< 200
<= 200
>100
>=100
100 veya 125
>50 ve <100
-veyaBetween 50 and 100
<50 or >100
In(10, 22, 30)
Like "*4,99"
Is Null
Is Not Null
SORGU SONUCU
Maaşın 200 TL olduğu kayıtları döndürür.
Maaşın 2000 TL olmadığı kayıtları döndürür.
Maaşın 200 TL'den az (<200) olduğu kayıtları
döndürür. İkinci ifade (<=200) birim fiyatın 200 TL'ye
eşit veya daha az olduğu kayıtları görüntüler.
Maaşın 100TL'den fazla olduğu kayıtları döndürür.
İkinci ifade maaşın 100 TL'ye eşit veya daha fazla
olduğu kayıtları görüntüler.
Maaşın 100 TL veya 125 TL olduğu kayıtları döndürür.
Maaşın 50 TL ile 100 TL arasında olduğu (ancak dahil
değil) kayıtları döndürür.
Maaşın 50 TL ile 100 TL arasında olmadığı kayıtları
döndürür.
Maaşın 10 TL, 22 TL veya 25 TL olduğu kayıtları
döndürür.
Maaşın sonunda "4,99" bulunan, 4,99 TL, 14,99 TL,
24,99 TL vb. kayıtları döndürür.
NOT * ve % karakterleri bir ifadede kullanıldığı
zaman, herhangi bir sayıda karakteri temsil eder
(bunlara joker karakter de denir). %karakteri *
karakteriyle birlikte bir ifadede kullanılamadığı gibi, ?
joker karakteriyle birlikte de bir ifadede kullanılamaz.
% joker karakterini, _ joker karakterini de içeren bir
ifadede kullanabilirsiniz.
Maaşı alanına değer girilmeyen kayıtları döndürür.
Maaşı alanında değerin eksik olmadığı kayıtları
döndürür.
Tablo 1.2: Sorgu ölçütleri örnek tablosu
Örnek:
Fiyatı 50 ile 100 TL arasında olan tüm ürünleri listelemek istersek SQL kodu
aşağıdaki şekilde olacaktır.
SELECT * FROM URUN WHERE FİYAT BETWEEN 50 AND 100
Örnek:
İsmi “A” ile başlayan personeller listelenmek istenirse SQL kodu aşağıdaki şekilde
olacaktır.
SELECT * FROM PERSONEL WHERE ADI LIKE “A%”
12
1.1.5.2. Sıralama İşlemleri
Tabloların satırlarının herhangi bir sütuna göre sıralanmasının istendiği durumlarda
SELECT deyimi ORDER BY ile birlikte kullanılır.
Örnek:
SELECT Soyadı, adı
FROM PERSONEL
ORDER BY Soyadı;
Örnek:
SELECT Soyadı, adı
FROM PERSONEL
ORDER BY Soyadı ASC;
Yukarıdaki her iki örnek de personelin adlarını soyadlarına göre sıralamaktadır.
Varsayılan sıralama artan sıralamadır. Ve her ikisi de çalıştırıldığı zaman aynı sonucu
vermektedir.
Azalan şekilde sıralama yapmak için (Z'den A'ya, 9'dan 0'a), azalan şekilde sıralamak
istenilen her alanın sonuna DESC sözcüğünün eklenmesi gerekir.
Örnek:
SELECT Soyadı, İl_Kodu
FROM PERSONEL
ORDER BY İl_Kodu DESC, Soyadı
Bu kodları yazıp çalıştırdığımız zaman görüntü aşağıdaki şekilde olacaktır.
Yukarıdaki örnekte, İl_kodları seçilip azalan şekilde sıralama yapılmaktadır.
13
1.1.6. SQL Fonksiyonları
SQL fonksiyonları tek satır fonksiyonları ve çoklu satır fonksiyonları (grup
fonksiyonları) olmak üzere iki türlüdür. Tek satır fonksiyonları genelde sadece Fonksiyon
olarak adlandırılıp, tablonun her bir satırına uygulanabilen fonksiyonlardır.
Karakter, sayısal, tarih ve dönüştürme olmak üzere farklı türleri vardır.
Karakter fonksiyonları, girdi olarak karakter verilerini alıp, karakter veya sayısal
değerler döndürebilen fonksiyonlardır. Karakter fonksiyonlarından en fazla kullanılanları
Tablo 1.3’te gösterilmiştir.
LCASE
Büyük harfleri küçük harflere dönüştürmek için kullanılır.
UCASE
Küçük harfleri büyük harflere dönüştürmek için kullanılır.
MID
Verinin bir parçasını çekmek için kullanılır.
LEN
Bir string ifadesinin veya bir sütundaki verinin uzunluğunu
döndürmek için kullanılır.
Tablo 1.3: Karakter fonksiyonları
Sayısal fonksiyonlar, sayısal veriler üzerinde birtakım işlemleri gerçekleştirmek için
kullanılan fonksiyonlardır. Sayısal fonksiyonlardan en fazla kullanılanları Tablo 1.4’te
gösterilmiştir.
ROUND
Sayısal değerleri yuvarlamak için kullanılır.
MOD
İki sayısal değerin, birbirine bölümünden elde edilen kalanı
döndürmek için kullanılır.
Tablo 1.4: Sayısal fonksiyonlar
Dönüştürme fonksiyonları, karakter, sayısal ve tarih verilerinin birbirine
dönüştürülmesi için kullanılan fonksiyonlardır. Dönüştürme fonksiyonlardan en fazla
kullanılanları Tablo 1.5’te gösterilmiştir.
CSTR
Tarih ve sayısal bilginin istenildiği gibi biçimlendirilerek karakter
dizisine dönüştürülmesini sağlar.
CINT
Bir dizenin içerdiği sayısal değerleri biçimlendirilerek sayısal veri
türüne dönüştürmeye yarar.
CDATE
Bir dizenin içerdiği tarih verilerinin istenildiği gibi
biçimlendirilerek tarih veri türüne dönüştürmek için kullanılır.
Tablo 1.5: Dönüştürme fonksiyonları
14
Tarih ve saat fonksiyonları, tarih ve saat ile bilgi almak ve tarih ve saat verilerini
biçimlendirmek için kullanılan fonksiyonlardır. Tarih ve saat fonksiyonlardan en fazla
kullanılanları Tablo 1.6’da gösterilmiştir.
NOW
Bilgisayarınızdaki geçerli sistem tarihini ve saatini bildirmek için
kullanılır. Örnek: SELECT Now();
DAY
1 ve 31 dahil olmak üzere bu rakamlar arasında ayın gününü temsil
eden bir tam sayı belirten Variant (Tamsayı) döndürmek için
kullanılır.
Örnek: SELECT Day(#11/22/2003#);
Bu kod yazılıp çalıştırıldığında ayın gününü temsil eden “22” sayısı
döndürülecektir.
MONTH
Yılın ayını gösteren 1 ile 12 arasında (bu sayılar dahil) bir tam sayı
belirten Variant (Integer) türünde değer döndürmeye yarar.
Örnek: SELECT Month (#22/11/2009#); Bu kod çalıştırıldığı
zaman yılın ayını gösteren “11” değeri döndürülecektir.
YEAR
Yılı gösteren bir tam sayı içeren Variant (Integer) türünde bir değer
döndürmeye yarar. Verilen tarihin yılını döndürür.
Örnek: SELECT Year (#22/11/2012#);
DATEADD
Belirtilen bir zaman aralığı eklenmiş olan bir tarihi içeren Variant
(Tarih) veri türünü döndürür.
Örnek: SELECT DateAdd("yyyy",3,#11/22/2009#);
2009 yılına 3 yıl eklenmiştir
DATEDIFF
Belirtilen iki tarih arasındaki zaman aralıklarının sayısını belirten bir
Variant (Long) döndürür.
Örnek: SELECT DateDiff('m',#11/17/2011#,#1/22/2012#);
Bu kod yazılıp çalıştırıldığı zaman bu zaman dilimleri arasında iki ay
fark olduğundan “2” değeri dönecektir.
DATEPART
Verilen bir tarihin belirtilen kısmını içeren bir Variant (Tam sayı)
döndürür. Örnek: SELECT DATEPART("yyyy", "01/04/2012")
Tablo 1.6: Tarih ve saat fonksiyonları
15
1.2. Verileri Gruplayarak Analiz Etme
Şu ana kadar incelemiş olduğumuz deyimler söz konusu tablonun tüm satırlarına
uygulanmaktaydı. Bazı durumlarda bazı işlemlerin satırlar yerine gruplara uygulanması
gerekmektedir. Veriler gruplara ayrılıp analiz edilir ve bu tür gruplama işlemleri için de grup
fonksiyonları kullanılır.
1.2.1. Grup Fonksiyonları
Tek satır fonksiyonları tablonun bir satırına uygulanıp buna karşılık gelen bir sonuç
satırı elde ediliyordu. Bir grup satıra bir fonksiyonun uygulanmasının söz konusu olduğu
durumlara; "çoklu satır" veya "grup fonksiyonları" adı verilir. Grup fonksiyonları
tablonun tüm satırlarına uygulanabilmektedir.
AVG()
Bu fonksiyon, herhangi bir sütunun içerdiği sayısal değerlerin aritmetik
ortalamasını hesaplamak amacıyla kullanılır. Fonksiyonun uygulandığı
sütunun veri türü sayısal olmalıdır.
Örnek: SELECT AVG(NOTLAR) AS ORTALAMA FROM OGRENCİ
SUM()
Sütunların içerdiği sayısal değerleri toplamak amacıyla kullanılan
fonksiyondur.
Örnek: SELECT SUM(NOTLAR) AS TOPLAM FROM OGRENCİ
STDEV()
Standart sapma, sayısal verilerin aritmetik ortalamalardan farklarının kareli
ortalaması olarak bilinir. Bu hesaplamayı yapan SQL fonksiyonu ise;
STDEV() 'dir.
Örnek: SELECT STDEV(NOTLAR) AS “St SAPMA” FROM OGRENCİ
VARP()
Sorgunun belirtilen alanında bulunan değerler kümesiyle temsil edilen bir
grubun tahmini varyansını gösterir. Varyans, sayısal değerler arasındaki
değişkenliği ölçen bir kavramdır. Standart sapmanın karesi olarak
bilinmektedir.
Örnek: SELECT VARP(MAAŞ) AS VARYANS FROM PERSONEL
MAX() ve
MIN()
Tablodaki değerler arasında en büyük olanı bulmak için MAX(), en küçük
olanını bulmak içinse MIN() ve fonksiyonları kullanılır.
Örnek: SELECT MAX(NOLAR) AS “EN YÜKSEK” FROM ÖĞRENCİ
Örnek: SELECT MİN(NOTLAR) AS “EN DÜŞÜK” FROM ÖĞRENCİ
COUNT()
Bir tablodaki kayıtların sayılması amacıyla kullanılan fonksiyondur.
COUNT(*) fonksiyonu, NULL değerleri de içeren tüm kayıtların
sayılmasını sağlar. WHERE ile birlikte kullanılırsa, bu koşula uygun tüm
kayıtları sayar. COUNT(sütun) biçiminde kullanılırsa, söz konusu sütunda
NULL değerler içermeyen tüm kayıtların sayılmasına neden olur.
Örnek: SELECT COUNT(*) AS “ÖĞRENCİ SAYISI” FROM ÖĞRENCİ
Tablo 1.7: Grup fonksiyonları ve örnekleri
16
1.2.2. Birden Fazla Sütuna Göre Gruplama
GROUP BY kullanarak belirtilen alan listesindeki benzer değerlere sahip kayıtları tek
bir kayıt olarak birleştirebilirsiniz. Yani birden fazla sütun için de gruplama yapabilirsiniz.
Kullanımı:
SELECT alanlistesi
FROM tablo
WHERE ölçütler
[GROUP BY grupalanlistesi]
Örnek:
Yukarıdaki PERSONEL tablosunda her ilde yaşayan personel sayısına göre gruplama
yapmak istersek SQL kodu aşağıdaki gibi olacaktır.
Bu kodu çalıştırdığımız zaman PERSONEL tablosunda yer alan personellerin
yaşadıkları illere göre sayısı listelenecektir.
Örnek:
SELECT Count(*) AS Personelsayısı FROM PERSONEL;
Yukarıdaki komut satırı personel tablosunda yer alan toplam personel sayısını gösterir.
17
1.2.3. Grup Koşullarının Kullanımı
Grup işlemlerinin uygulanması sırasında birtakım sınırlamalar gerekebilir. Grup
koşulları belirlenirken HAVING sözcüğü kullanılır. HAVING sözcüğü gruplama yaptıktan
sonra kullanılır. Gruplandırmak istenilmeyen satırları dışarıda tutmak için WHERE,
gruplandırılan kayıtlara filtre uygulamak için ise HAVING kullanılır.
Group By ifadesi Where ifadesinden sonra, Having ifadesinden önce kullanılır. Order
By ifadesi ise en son kullanılır. Kayıtlar GROUP BY ile gruplandırılır ve HAVING ile de
hangi kayıtların görüntüleneceği gösterilir.
Örnek:
Yukarıdaki Ücret tablosunda Toplam maaşı 2500’den büyük olan grupları listelemek
istiyorsak SQL kodu aşağıdaki gibi olacaktır.
Sorgu çalıştırıldığı zaman görüntü aşağıdaki gibi olacaktır.
18
UYGULAMA FAALİYETİ
UYGULAMA FAALİYETİ
Aşağıda verilen işlem basamaklarını takip ederek konuyu daha da pekiştirelim.
Öneriler kısmı, uygulama faaliyeti için yönlendirici olacaktır.
İşlem Basamakları
 Veri tabanınızda “Okul” adında bir tablo
oluşturunuz.
 Tablonun alan adları ve veri türleri
aşağıdaki gibi olsun:
Öğrenci_no(int);
Adı varchar(15);
Soyadı varchar(15);
Yaşı int;
 Tabloya 4 kişinin bilgilerini içerecek
şekilde kayıt girişi yapınız.
 “Dersler” isminde yeni bir tablo
oluşturunuz.
 “Dersler” tablosunu siliniz
 “Okul” tablosuna Doğum_tarihi sütununu
ekleyiniz.
 “Okul” tablosundaki tüm öğrencilerin
yaşını 2 yaş artırınız.
 Yaşı 15’ten küçük olan öğrencileri
seçiniz.
 “Notlar” isminde yeni bir tablo
oluşturunuz. Ogr_Not int veri türünde bir
alan ekleyiniz. Bu tabloya 4 tane not girişi
yapınız.
 Notu 60 ile 90 arasında olan öğrencileri
listeleyiniz.
 “Okul” tablosundaki kayıtları soyadı
alanına göre sıralayınız.
 “Okul” tablosundaki öğrencilerin yaşları
toplamını bulunuz.
 “Okul” tablosunda en büyük yaşın kaç
olduğunu bulunuz.
 Öğrencileri yaşlarına göre gruplayınız.
19
Öneriler
 CREATE TABLE komutunu
kullanarak tablonuzu oluşturunuz.
 Tabloyu veri sayfası görünümünde
açıp veri girişini yapınız.
 CREATE TABLE komutunu
kullanınız.
 DROP TABLE Dersler
 ADD COLUMN deyimini kullanınız.
 UPDATE deyiminden yararlanınız.
 SELECT deyimini kullanınız.
 CREATE TABLO Notlar
 SELECT ve BETWEEN kullanarak
listeleyiniz.
 ORDER BY deyiminden yararlanınız.
 SUM();
 MAX();
 GRUP BY();
KONTROL LİSTESİ
Bu faaliyet kapsamında aşağıda listelenen davranışlardan kazandığınız beceriler için
Evet, kazanamadığınız beceriler için Hayır kutucuğuna (X) işareti koyarak kendinizi
değerlendiriniz.
Değerlendirme Ölçütleri
1. Sorgular ve çeşitlerinin neler olduğunu öğrendiniz mi?
2. Sorgu ile veri tabanı oluşturdunuz mu?
3. Sorgu ile tablo oluşturdunuz mu?
4. Sorgu ile oluşturmuş olduğunuz tabloyu silebildiniz mi?
5. Sorgu kullanarak tablonuza sütun eklediniz mi?
6. Tablo güncelleme işlemini kullandınız mı?
7. Select deyimi kullanarak tablodaki verilere erişebildiniz mi?
8. Satırların ve sütunların sınırlandırılmasını yaptınız mı?
9. Order By kullanarak sıralama yaptınız mı?
10. SQL fonksiyonlarını kullandınız mı?
11. Grup fonksiyonlarını kullandınız mı?
12. Tablonuzdaki verileri SQL kullanarak birden fazla sütuna göre
grupladınız mı?
13. Having sözcüğü kullanarak grup koşullarını belirleyebildiniz mi?
Evet
Hayır
DEĞERLENDİRME
Değerlendirme sonunda “Hayır” şeklindeki cevaplarınızı bir daha gözden geçiriniz.
Kendinizi yeterli görmüyorsanız, öğrenme faaliyetini tekrar ediniz. Bütün cevaplarınız
“Evet” ise “Ölçme ve Değerlendirme”ye geçiniz.
20
ÖLÇME VE DEĞERLENDİRME
ÖLÇME VE DEĞERLENDİRME
Aşağıdaki cümlelerin başında boş bırakılan parantezlere, cümlelerde verilen
bilgiler doğru ise D, yanlış ise Y yazınız.
1.
( ) Tabloların satırlarının herhangi bir sütuna göre sıralanmasının istendiği
durumlarda SELECT deyimi ORDER BY ile birlikte kullanılır.
2.
( ) MID() fonksiyonu bir karakter fonksiyonudur ve küçük harfleri büyük harfe
dönüştürmek için kullanılır.
3.
( ) COUNT() fonksiyonu bir tablodaki kayıtların sayılması amacıyla kullanılan
fonksiyondur.
Aşağıdaki soruları dikkatlice okuyunuz ve doğru seçeneği işaretleyiniz.
4.
Sorgu kullanarak tablo oluşturmak için kullanılan SQL deyimi aşağıdakilerden
hangisidir?
A)
CREATE TABLE
B)
INSERT TABLE
C)
DELETE TABLE
D)
DROP TABLE
5.
ADD COLUMN deyiminin görevi aşağıdakilerden hangisidir?
A)
Tabloya satır eklemek için kullanılır.
B)
Tabloya yeni bir ad vermek için kullanılır.
C)
Tabloyu silmek için kullanılır.
D)
Tabloya sütun eklemek için kullanılır.
6.
ÖĞRENCİLER tablosunda yer alan ADI ve BÖLÜMÜ alanlarını seçmek için
kullanılan SQL kodu aşağıdakilerden hangisidir?
A)
SELECT ADI, BÖLÜMÜ FROM ÖĞRENCİ
B)
INSERT ADI, BÖLÜMÜ FROM ÖĞRENCİLER
C)
SELECT AD, SOYAD, BÖLÜMÜ FROM ÖĞRENCİLER
D)
SELECT ADI, BÖLÜMÜ FROM ÖĞRENCİLER
7.
Büyük harfleri küçük harfe dönüştürmek için kullanılan fonksiyon aşağıdakilerden
hangisidir?
A)
UCASE()
B)
LCASE
C)
MOD( )
D)
CINT()
21
8.
Herhangi bir sütunun içerdiği sayısal değerlerin aritmetik ortalamasını hesaplamak
amacıyla kullanılan fonksiyon aşağıdakilerden hangisidir?
A)
SUM()
B)
STDEV()
C)
AVG()
D)
MAX()
9.
SELECT DateAdd("yyyy",2,#11/22/2010#); komut satırı hangi sonucu üretir?
A)
2010 yılına 2 yıl ekler.
B)
11/22/2010 tarihine 2 gün ekler.
C)
11/22/2010 tarihine 2 hafta ekler.
D)
Hiçbiri
DEĞERLENDİRME
Cevaplarınızı cevap anahtarıyla karşılaştırınız. Yanlış cevap verdiğiniz ya da cevap verirken tereddüt ettiğiniz
sorularla ilgili konuları faaliyete geri dönerek tekrarlayınız. Cevaplarınızın tümü doğru ise bir sonraki öğrenme
faaliyetine geçiniz.
22
ÖĞRENME FAALİYETİ–2
AMAÇ
ÖĞRENME FAALİYETİ-2
İlişkili tablolar ile sorgu hazırlayabileceksiniz.
ARAŞTIRMA

Hangi durumlarda tabloların birleştirilmesi işlemine ihtiyaç duyulduğunu
araştırınız.
2. İLİŞKİLİ TABLOLAR
İlişkisel veri tabanları, birbirleri ile mantıksal ilişkiler içinde olan tablolardan
oluşmaktadır. Tabloları ortak olarak sahip oldukları alanlarda birleştirmek için ilişkiler
kullanılır. İlişki ise bir sorguda birleştirmeyle gösterilmektedir.
Bu bölümde birbirleri ile ilişkileri olan tablolar için kullanılabilecek birleştirme
türlerinin neler olduğunu, bu türlerin hangi durumlarda kullanıldığını ve nasıl birleştirme
oluşturulacağını öğreneceğiz.
2.1. Tabloların Birleştirilmesi
Birden fazla tablodan veri almak gerektiği durumlarda tablolar arasında ilişki
kurulması gerekmektedir. Bu işleme Join (birleştirme) adı verilir. Join işlemi birden fazla
tabloyu birbirine bağlayıp bu tablolar üzerinde işlem yapabilmemizi sağlamaktadır.
Birleştirme işlemi yapabilmek için tabloların aynı değerleri içeren sütunlarının
kullanılması gerekir.
Tablo birleştirme işlemi yapılırken birleştirmek istediğiniz duruma göre, Kartezyen
birleşim, eşiti olan birleştirme veya eşiti olmayan birleştirme türlerinden uygun olanını
kullanabilirsiniz.
2.1.1. Kartezyen Çarpımı
İki tablo arasında birleştirme koşulunun tanımlanmadığı durumlarda Kartezyen
çarpımından söz edilir. Soldaki tablonun her kaydı için, sağdaki tablodan bütün kayıtları
çeker. Birleştirme koşulunun geçersiz olduğu ve birinci tablodaki tüm satırların ikinci
tablodaki tüm satırlarla birleşmediği durumlarda da Kartezyen çarpım elde edilir.
23
Kullanımı:
SELECT sütun1, sütun2, sütun3,…, sütunN
FROM tablo1, tablo2, tablo3,…, tabloN
Örnek:
Ürünler tablosundaki kayıtlar ile Reyonlar tablosundaki kayıtlara Kartezyen birleşimi
uygulanmış örnek aşağıda verilmiştir.
SELECT *
FROM ÜRÜNLER, REYONLAR;
Ürünler tablosunda 4, Reyonlar tablosunda 3 kayıt bulunmaktadır. Bu iki tablonun
birleşiminden 4x3=12 satırlık bir birleşim meydana gelecektir.
Şekil 2.1’de 1. Tablodaki her kayıt için 2. Tablodaki tüm kayıtlar listelenmiştir.
Şekil 2.1: Kartezyen çarpımı sonucu tabloların birleştirilmesi
24
2.1.2. Eşiti Olan Birleştirme
İç birleştirme olarak da adlandırılan birleştirme türüdür. İç birleştirme bir sorguya,
birleştirilen tabloların birinde yer alan satırların, birleştirilen alanlardaki verileri temel
alarak, diğer tablodaki satırlara karşılık geldiğini bildirir. İç birleştirme içeren bir sorgu
çalıştırıldığında, sorgu işlemlerine yalnızca, birleştirilen tabloların her ikisinde de bulunan
ortak değere sahip olan satırlar eklenir. Birleştirmede yer alan her iki tablodan sadece,
birleştirme alanında eşleşen satırlar döndürülmek istenildiği zaman iç birleştirme kullanılır.
Eşiti olan birleştirme yapılırken INNER JOIN deyimi kullanılır.
Kullanımı:
FROM tablo1 INNER JOIN tablo2 ON tablo1.sütun1 karşılaştırma tablo2.sütun2
Birinci tablodaki tüm kayıtları çekip, bu kayıtlar ile eşleşen ikinci tablodaki kayıtlar
listelenir.
Örnek:
veya
Yukarıdaki örnekteki her iki yazım türü de tabloları birleştirecek ve ortak değere sahip
olan kayıtlar aşağıdaki gibi listelenecektir.
25
2.1.3. Eşiti Olmayan Birleştirme
Eşiti olan birleştirme sırasında bir tablodaki bir sütunun içerdiği değerler diğer
tablonun ilgili sütunu ile eşleştirilip sadece eşleşen değerler birleştiriliyordu. Eşleşmeyen
satırlar ise birleştirilemiyordu.
Eşleşmeyen satırların da birleştirilip sonuca dâhil edilmesi istenilen durumlarda “Eşiti
Olmayan Birleştirme” kullanılmaktadır.
Eşiti olmayan birleştirmeler (dış birleştirmeler), eşleşmeyen kayıtların hangi tabloda
olduğuna bakarak sol dış birleştirme veya sağ dış birleştirme olmak üzere iki şekilde
olabilmektedir.
Kullanımı:
FROM tablo1 [ LEFT | RIGHT ] JOIN tablo2
ON tablo1.sütun1 karşılaştırma tablo2.sütun2
Buradaki tablo1 ve tablo2 kayıtların birleştirileceği tabloların adını, sütun1 ve sütun2
birleştirilen sütunların adlarını, karşılaştırma ise ("=," "<," ">," "<=," ">=" veya "<>.") gibi
işleçleri göstermektedir.
Sol dış birleştirme oluşturmak için LEFT JOIN kullanılır. Soldaki tablodan tüm
kayıtlar alınır, sağdaki tabloda eşleşen kayıtlar yazılır ve eşleşmeyen kayıtlar için NULL
değer döndürülür.
Sağ dış birleştirme oluşturmak için RIGHT JOIN kullanılır. Sağ dış birleşimler, ilk
tablonun (soldaki tablo) kayıtlarında eşleşen değer olmasa bile, iki tablodan ikincisinin
(sağdaki tablo) tüm kayıtlarını içerir.
Örneğin, Bölümler (sol) ve Personel (sağ) tablolarında bölüme atanmış personel
olmasa bile tüm bölümleri seçmek için LEFT JOIN, herhangi bir bölüme atanmamış olanlar
da dâhil, tüm personeli seçmek için ise RIGHT JOIN kullanılır.
Örnek 1:
Yukarıdaki ÜRÜNLER ve REYONLAR tablosunu RIGHT JOIN kullanarak
birleştirmek için aşağıdaki SQL komutu kullanılır.
26
Kod yazılıp çalıştırıldığı zaman görüntü aşağıdaki gibi olacaktır.
Örnek 2:
ÜRÜNLER ve REYONLAR tablosunu LEFT JOIN kullanarak birleştirmek için
aşağıdaki SQL kodu yazılır.
Kod yazılıp çalıştırıldığı zaman görüntü aşağıdaki gibi olacaktır.
2.2. Alt Sorgular
Bazı durumlarda bir sorgudan elde edilen sonuç diğer başka bir sorgu içerisinde
kullanılabilmektedir. Bu tür durumlarda iç içe sorgular oluşturulmaktadır. Kullanılan iç içe
sorgularda yer alan içteki sorgulara “alt sorgular” adı verilir.
2.2.1. Alt Sorgu Düzenleme Kuralları
Alt sorgular düzenlenirken uyulması gereken birtakım kurallar bulunmaktadır. Bunlar;
 FORM sözcüğü içinde tanımlanan sorgular dışında, alt sorgu, ana sorgu
içerisindeki karşılaştırma işlecinin sağ tarafında yer almalıdır.
 Alt sorgu, parantezler içerisinde yer almalıdır.
 Alt sorgu ORDER BY sözcüğünü içermemelidir. ORDER BY sadece ana
sorgu içerisinde yer alabilmektedir.
27
2.2.2. Alt Sorgunun Tanımlanması
Alt sorgu bir SELECT, SELECT...INTO, INSERT...INTO, DELETE veya UPDATE
deyimi içinde veya başka bir alt sorguda SELECT deyiminin kullanılması ile elde edilir.
Kullanımı:
SELECT liste
FROM tablo
WHERE ifade karşılaştırma
(SELECT liste
FROM tablo)
Bir alt sorgu aşağıdaki bölümlerden oluşmaktadır:
karşılaştırma [ANY | ALL | SOME] (sqldeyimi):Karılaştırma, ifadeyi, alt sorgunun
sonuçları ile karşılaştırmaya yarayan bir karşılaştırma işlecidir.
ifade [NOT] IN (sqldeyimi): İfade, alt sorgu sonuç kümesinde aranan ifadeye verilen
addır.
WHERE iki sorguyu birbirine bağlamak için kullanılmaktadır. ANY veya SOME,
yapılan karşılaştırma sonucunda alt sorgu kayıtlarından herhangi bir tanesi ile eşleşen ana
sorgu kayıtlarını almak için kullanılır. ALL, yapılan karşılaştırma sonucunda alt sorgu
kayıtlarının tümüyle eşleşen ana sorgu kayıtlarını almak için kullanılmaktadır. IN, alt
sorgudaki kayıtların değerine eşit olan ana sorgu kayıtlarını almak için kullanılır. NOT IN
ise alt sorgudaki kayıtların değerine eşit olmayan ana sorgu kayıtlarını almak için kullanılır.
2.2.3. Çoklu Satır Alt Sorguları
Alt sorgudan bir satır yerine birden fazla satırın elde edildiği durumlar çoklu satır alt
sorgusu olarak adlandırılır.
Bu tür sorgular IN, ANY, ALL gibi işleçler yardımıyla yapılabilmektedir.
“>ANY” en azdan daha büyük, “<ANY” ise en çoktan daha az anlamına gelmektedir.
“>ALL” en büyükten daha büyük, “<ALL” ise en küçükten daha küçük anlamına
gelmektedir.
28
Örnek IN işleci:
İndirim oranı %30’dan daha fazla olan tüm ürünleri gösteren SQL kodu aşağıdaki
gibidir.
SELECT *
FROM Ürünler
WHERE U_No IN
(SELECT U_No FROM Sipariş
WHERE İndirim = .30);
Örnek ANY işleci:
Birim fiyatı, % 30 veya daha fazla indirimle satılmış herhangi bir ürünün birim
fiyatından yüksek olan tüm ürünleri gösteren SQL kodu aşağıdaki gibidir.
SELECT *
FROM Ürünler
WHERE B_Fiyat > ANY
(SELECT B_Fiyat FROM Sipariş
WHERE İndirim >= .30);
Örnek ALL işleci:
Birim fiyatı, % 30 veya daha fazla indirimle satılmış tüm ürünlerin birim fiyatından
yüksek olan ürünleri listelemek için kullanılan SQL kodu aşağıdaki gibidir.
SELECT *
FROM Ürünler
WHERE B_Fiyat > ALL
(SELECT B_Fiyat FROM Sipariş
WHERE İndirim >= .30);
29
2.2.4. Tek Satır Alt Sorguları
Alt sorgudan tek satırın elde edildiği sorgulardır.
Örnek:
Yukarıdaki PERSONEL tablosuna göre Personel numarası “10” olan personelle aynı
bölümde çalışan personelin isimlerini listeleyecek SQL kodu aşağıdaki gibi olacaktır.
SELECT Adı, Bölüm_no
FROM PERSONEL
WHERE Bölüm_no=
(SELECT Bölüm_no
FROM PERSONEL
WHERE p_no=10);
Alt sorgu sonucunda “10” numaralı personelin çalıştığı bölümün numarası, yani “200”
değeri elde edilecektir. Ana sorguda ise çalıştığı bölüm numarası “200” olan kişileri
sorgulamaktadır. Sorguyu yazıp çalıştırdığımızda aşağıdaki sonuç elde edilecektir.
30
UYGULAMA FAALİYETİ
UYGULAMA FAALİYETİ
PERSONEL ve BÖLÜM tabloları aşağıda verilmiştir.
İşlem Basamakları
 Yukarıdaki alan ve verilerden oluşan
PERSONEL ve BÖLÜM tablolarını
oluşturunuz.
 PERSONEL ve BÖLÜM tablolarını
Kartezyen çarpımı kullanarak
birleştiriniz.
Öneriler
 Tabloları veri sayfası görünümünde
açarak oluşturabilirsiniz.
 PERSONEL ve BÖLÜM tablolarını
eşiti olan birleştirme kullanarak
birleştirecek SQL kodunu yazınız.
 PERSONEL ve BÖLÜM tablolarını
eşiti olmayan birleştirme kullanarak
birleştirecek SQL kodunu yazınız.
 PERSONEL tablosuna göre Personel
numarası “12” olan personelle aynı
bölümde çalışan personelin isimlerini
listeleyecek SQL kodunu yazıp
çalıştırınız.
 INNER JOIN kullanınız.
 RIGHT JOIN kullanarak dış birleştirmeyi
gerçekleştiriniz.
 Tek satır alt sorgu oluşturunuz.
31
KONTROL LİSTESİ
Bu faaliyet kapsamında aşağıda listelenen davranışlardan kazandığınız beceriler için
Evet, kazanamadığınız beceriler için Hayır kutucuğuna (X) işareti koyarak kendinizi
değerlendiriniz.
1.
2.
3.
4.
5.
6.
7.
8.
Değerlendirme Ölçütleri
SQL kullanarak istenilen tabloları birleştirebildiniz mi?
Çoklu tabloları kullanabildiniz mi?
Kartezyen çarpımı kullandınız mı?
Eşiti olan birleştirme işlemini öğrendiniz mi?
Eşiti olmayan birleştirme işlemini gerçekleştirebildiniz mi?
SQL kodları kullanarak alt sorgu tanımlaması yapabildiniz mi?
Alt sorgu düzenleme kurallarının neler olduğunu öğrendiniz mi?
Tek ve çok sütunlu alt sorgular oluşturdunuz mu?
Evet
Hayır
DEĞERLENDİRME
Değerlendirme sonunda “Hayır” şeklindeki cevaplarınızı bir daha gözden geçiriniz.
Kendinizi yeterli görmüyorsanız öğrenme faaliyetini tekrar ediniz. Bütün cevaplarınız
“Evet” ise “Ölçme ve Değerlendirme” ye geçiniz
32
ÖLÇME VE DEĞERLENDİRME
ÖLÇME VE DEĞERLENDİRME
Aşağıdaki cümlelerin başında boş bırakılan parantezlere, cümlelerde verilen
bilgiler doğru ise D, yanlış ise Y yazınız.
1.
( ) Birinci tablodaki tüm satırların ikinci tablodaki tüm satırlarla birleşmediği
durumlarda eşiti olan birleştirme türü kullanılır.
2.
( ) Tablolar birleştirilirken eşiti olmayan birleştirme yapmak için INNER JOIN
deyimi kullanılır.
3.
( ) Tablo birleştirme sırasında eşleşmeyen satırların da birleştirilip sonuca dahil
edilmesi istenilen durumlarda “Eşiti olmayan birleştirme” kullanılır.
4.
( ) Sağ dış birleştirme oluşturmak için RIGHT JOIN kullanılır.
5.
( ) Alt sorgu içerisinde ORDER BY sözcüğü kullanılamaz.
6.
( ) All işleci alt sorgudaki kayıtların değerine eşit olmayan ana sorgu kayıtlarını
almak için kullanılır.
7.
( ) Alt sorgudan elde edilen sonuçta tek satırlık bir sonuç elde ediliyorsa bu işleme
çoklu satır sorguları denir.
DEĞERLENDİRME
Cevaplarınızı cevap anahtarıyla karşılaştırınız. Yanlış cevap verdiğiniz ya da cevap
verirken tereddüt ettiğiniz sorularla ilgili konuları faaliyete geri dönerek tekrarlayınız.
Cevaplarınızın tümü doğru ise bir sonraki öğrenme faaliyetine geçiniz
33
ÖĞRENME FAALİYETİ–3
AMAÇ
ÖĞRENME FAALİYETİ-3
Veri işleme (DML) sorgularını kullanabileceksiniz.
ARAŞTIRMA

DML sorgularının neler olduğunu ve hangi amaçlar için kullanıldığını
araştırınız.
3. DML SORGULARI
Bir tabloya yeni bir kayıt eklemek, mevcut kayıt üzerinde değişiklik yapmak veya bir
kaydı silmek istediğimiz durumlarda, Select deyimi kullanarak yapmış olduğumuz
sorgulamalar işe yaramaz. DML (Data Manipulation Language) dili kullanılarak, veri tabanı
tablosuna veri ekleme, silme ve güncelleme işlemleri yapılabilmektedir.
3.1. Tabloya Satır Ekleme İşlemi
Bir tabloya bir veya daha çok satır (kayıt) eklemek için INSERT INTO deyimi
kullanılır. Bu işlem “Ekleme Sorgusu” olarak adlandırılmaktadır.
3.1.1. INSERT Deyimi Yapısı
Bir tabloya yeni veri eklemek için INSERT deyimi kullanılır. INSERT deyimi, INTO
ve VALUES ifadeleri ile birlikte kullanılır ve tabloya yeni veri eklenmesi sağlanır.
Veri ekleme sırasında ilk olarak INSERT INTO ile ekleme yapılacak olan tablo veya
sütunlar belirlenir. Daha sonra VALUES ifadesi ile eklenecek olan değerler parantez içinde
belirtilir. Verilerin sıralanışına dikkat etmek gerekmektedir. Örneğin (Personel_no, Adı,
Soyadı, Bölümü) şeklinde sıralanmış olan alanlarda, eklenecek değerlerin de aynı sırada
olması gerekmektedir.
Tablodaki tüm alanlara değer girilecekse, tablo isminden sonra sütun isimlerinin
belirtilmesine gerek yoktur. Çünkü bu tür durumda tablodaki tüm alanlara veri girişi
sağlanmış olacaktır.
 Sütun ismi belirtmeden kullanımı:
INSERT INTO tablo
VALUES (değer1, değer2…)
34
 Sütun ismi belirterek kullanımı:
INSERT INTO tablo (sütun1, sütun2…)
VALUES (değer1, değer2…)
Mevcut kayıtlarda bulunan tek alanlardaki verileri değiştirmek için ekleme sorgusu
yerine güncelleştirme sorgusu kullanılmaktadır. Ekleme sorguları sadece veri satırları
eklemek için kullanılır.
Örnek:
Yukarıdaki Personel tablosuna bir kayıt eklemek istiyorsak SQL kodu aşağıdaki
şekilde olacaktır.
Kodu yazıp çalıştır düğmesine bastığımız zaman program bize yeni bir satır eklemek
üzere olduğumuza dair aşağıdaki uyarı ekranını görüntüleyecektir.
Evet düğmesine bastıktan sonra Personel tablomuzu çalıştırdığımızda yeni kayıt
eklenmiş hali aşağıdaki gibi olacaktır.
NOT: Veri eklenecek alan sayısal veri türü tanımlanmışsa eklenecek veri tek tırnaklar
arasında yazılmaz. Metin ve tarih veri türünde tanımlanmış ise eklenecek veri tek tırnaklar
içinde yazılır.
35
Örnek:
Personel tablosunda sadece Personel_no ve Bölümü alanlarına veri girişi yapmak
istiyorsak SQL sorgu kodu aşağıdaki şekilde olacaktır.
INSERT INTO PERSONEL(Personel_no, Bölümü)
VALUES (18, 'Müzik');
Kodu çalıştırdığımız zaman Personel tablosunun yeni hali aşağıdaki şekilde olacaktır.
3.1.2. NULL Değer Ekleme
Oluşturduğunuz tablodaki bir veya birden fazla alana Null değer girilmesi gerekebilir.
Bunun için kullanılan iki yol mevcuttur. Birinci yöntem ile INSERT INTO deyimi içerisinde
Null değer alacak olan alanlar yazılmaz.
INSERT INTO PERSONEL(Personel_no, Bölümü)
VALUES (18, 'Müzik');
Diğer yöntem ise aşağıdaki şekilde uygulanır;
INSERT INTO PERSONEL(Personel_no, adı, Soyadı, Bölümü, İl_Kodu)
VALUES (18, NULL, NULL, 'Müzik', NULL)
Bu yöntem ile boş bırakılmak istenilen alanlara NULL şeklinde bir atama yapılmıştır.
3.1.3. Fonksiyonların Kullanımı
INSERT INTO içerisinde fonksiyonlar da kullanılabilmektedir. Örneğin PERSONEL
tablosuna yeni bir kayıt eklerken Giriş_tarihi isimli alana o günün tarih ve zaman bilgisini
eklemek istiyorsak komut satırı aşağıdaki gibi olacaktır.
Bu kodu çalıştırdığımız zaman Personel tablosunun yeni hali aşağıdaki gibi olacaktır.
36
Bu örnekte Now() fonksiyonu kullanılarak, sisteminizin tarih ve saat bilgisi 55
numaralı personelin işe giriş tarihi olarak eklenmiştir.
3.1.4. Bir Diğer Tablodan Satır Kopyalama
INSERT işlemini kullanarak bir tabloda bulunan kayıtları istediğiniz diğer bir tabloya
kopyalayabilirsiniz. Bu işlem için yapılması gereken Values yerine Select ifadesini
kullanmaktır.
Kullanımı:
INSERT INTO Tablo1(sütun1, sütun2,…)
SELECT sütun1, sütun2
FROM Tablo2
Örnek:
ÇALIŞANLAR tablosunda bulunan kayıtları PERSONEL tablosuna kopyalayalım.
Şekil 3.1: Personel tablosu
Şekil 3.2: Çalışanlar tablosu
37
Çalışanlar tablosunda tek bir kayıt bulunmaktadır. Bu kaydı Personel tablosuna
kopyalamak için gerekli olan komut satırı aşağıdaki gibi olacaktır.
INSERT INTO PERSONEL(Personel_no, adı, Soyadı, Bölümü)
SELECT Personel_no, adı, Soyadı, Bölümü
FROM ÇALIŞANLAR
Yukarıdaki kod, sorgu penceresine yazılıp çalıştırıldığı zaman Personel tablosunun
yeni hali aşağıdaki gibi olacaktır.
3.2. Tablodaki Verileri Güncelleme
Bir tabloda bulunan kayıt veya kayıtların istenildiği zaman değiştirilmesi mümkündür.
Tablolarda güncelleme işlemini gerçekleştirmek için UPDATE komutu kullanılır. SET
ifadesi ile güncellenecek alanlar ve bu alanların alacakları yeni değerler belirlenir. WHERE
deyimi ile de verilerin güncelleştirilmesi için koşul belirlenir. Eğer WHERE ifadesi ile bir
koşul belirlenmezse tablodaki tüm kayıtlar güncellenmiş olacağından WHERE kullanmaya
dikkat edilmesi gerekmektedir.
Kullanımı:
UPDATE tablo
SET sütun1=değer1, sütun2=değer2,..
WHERE Koşul
Örnek:
Personel tablosunda yer alan 30 numaralı personelin “35” olan İl_Kodu bilgisini “06”
olarak değiştirmek isteyelim.
38
Bu işlem için yazılması gereken SQL kodu aşağıdaki şekilde olacaktır.
UPDATE PERSONEL
SET İl_Kodu = '06'
WHERE Personel_no = 30
Yukarıdaki kodu yazıp çalıştırdığımızda tek bir satırın güncelleştirileceğini belirtip
onaylamamız istenen aşağıdaki pencere görüntülenecektir.
Buradan Evet düğmesine tıklanır. Daha sonra Personel tablosu çalıştırıldığı zaman
kayıt güncelleştirme aşağıdaki gibi olacaktır.
Örnek:
PERSONEL tablosundaki tüm illerin kodunu “06” olarak değiştirmek istersek SQL
kodları aşağıdaki gibi olmalıdır.
UPDATE PERSONEL
SET İl_Kodu = '06'
WHERE Personel_no
Kodu yazıp çalıştırdığımız zaman personel tablosu aşağıdaki gibi güncellenmiş
olacaktır.
39
3.3. Tablolardan Veri Silme
Bir tabloda bulunan kayıt veya kayıtların istenildiği zaman silinmesi mümkündür.
Tablolarda silme işlemini gerçekleştirmek için DELETE komutu kullanılır. DELETE
komutu kullanılırken FROM eki ile birlikte tablo ismi yazılarak hangi tablodan veri silinmesi
istendiği belirtilebilir. WHERE deyimi ile de verilerin silinme koşulu belirlenir. Eğer
WHERE ifadesi ile bir koşul belirlenmezse tablodaki tüm kayıtlar silineceğinden WHERE
kullanmaya dikkat edilmesi gerekmektedir.
Kullanımı:
DELETE FROM Tablo
WHERE Koşul
Örnek:
Personel tablosunda yer alan 30 numaralı personeli silmek için yazılacak SQL komutu
aşağıdaki gibi olacaktır.
DELETE FROM PERSONEL WHERE Personel_no = 30
Bu kodu yazıp Tasarım sekmesindeki Çalıştır düğmesine bastığımızda aşağıdaki uyarı
ekranı karşımıza çıkacaktır. Buradan Evet düğmesine tıkladığımız zaman Personel
tablosundaki 30 numaralı kayıt silinmiş olacaktır.
Örnek:
DELETE FROM ÇALIŞANLAR kodu ile ÇALIŞANLAR tablosunda bulunan tüm
kayıtlar silinecektir.
40
Örnek:
Personel tablosunda Bölümü “müzik” ve “resim” olanlar dışındaki diğer kayıtların
silinmesini istersek;
Personel tablosunda silme işlemi uygulamadan önce Bölümü alanında bulunan
kayıtlar aşağıda gösterilmiştir
Aşağıdaki kodları yazıp çalıştırdığımızda personel tablosundaki Bölümü müzik ve
resim olan kayıtlar dışındaki tüm kayıtlar silinecektir.
DELETE FROM PERSONEL
WHERE Bölümü NOT IN ("müzik", "resim")
41
UYGULAMA FAALİYETİ
UYGULAMA FAALİYETİ
Aşağıdaki şekilde ÖĞRENCİ tablosu görülmektedir.
İşlem Basamakları
 Yukarıdaki şekilde görüldüğü gibi alan
ve kayıtları içeren ÖĞRENCİ
tablosunu oluşturunuz.
 Yukarıdaki tabloya aşağıdaki verileri
içeren bir satır eklemeyi sağlayacak sql
kodunu yazınız.
Kimlik_no:33332222255
Adı: Özge
Soyadı: Şen
Doğum_yeri: Mersin
Doğum_tarihi:23.03.1991
Okulu: Marmara Ün.
Bölümü: Matematik
 Sorguyu çalıştırınız.
 Adı: Ayşe, Soyadı:Yaz ve diğer
değerler Null olacak şekilde yeni bir
satır eklemeyi sağlayacak SQL kodunu
yazınız.
 ÖĞRENCİ tablosunda yer alan
“11111111111” kimlik nolu
öğrencinin Kimya olan bölümünü
İngilizce olarak değiştirmeyi
sağlayacak SQL kodunu yazınız.
 ÖĞRENCİ tablosundaki tüm
öğrencilerin bölümünü “Resim” olarak
değiştiriniz.
 “11111111111” kimlik numaralı
öğrenciyi ÖĞRENCİ tablosundan
silmek için gerekli sql kodunu yazınız.
 ÖĞRENCİ tablosunda bulunan tüm
kayıtları siliniz.
Öneriler
 INSERT INTO ÖĞRENCİ ile kayıt
eklemek istediğiniz tabloyu belirtip values
ile de değerleri giriniz.
 VALUES(NULL,’Ayşe’, ‘Yaz’, NULL,
NULL, NULL, NULL)
 UPDATE komutu kullanarak güncelleme
yapınız.
 UPDATE komutunu kullanınız.
 DELETE komutunu kullanınız.
 DELETE FROM ÖĞRENCİ
42
KONTROL LİSTESİ
Bu faaliyet kapsamında aşağıda listelenen davranışlardan kazandığınız beceriler için
Evet, kazanamadığınız beceriler için Hayır kutucuğuna (X) işareti koyarak kendinizi
değerlendiriniz.
1.
2.
3.
4.
5.
6.
Değerlendirme Ölçütleri
DML sorgusu kullanarak tablonuza satır eklediniz mi?
DML sorgusu kullanarak tablonuza null değer eklediniz mi?
Fonksiyonları kullanabildiniz mi?
Bir tablodan diğer bir tabloya istediğiniz satırı kopyalayabildiniz mi?
Tablonuzdaki verileri güncelleyecek sorguyu oluşturdunuz mu?
DML sorgusu kullanarak tablonuzdan veri sildiniz mi?
Evet
Hayır
DEĞERLENDİRME
Değerlendirme sonunda “Hayır” şeklindeki cevaplarınızı bir daha gözden geçiriniz.
Kendinizi yeterli görmüyorsanız öğrenme faaliyetini tekrar ediniz. Bütün cevaplarınız
“Evet” ise “Ölçme ve Değerlendirme” ye geçiniz
43
ÖLÇME VE DEĞERLENDİRME
ÖLÇME VE DEĞERLENDİRME
Aşağıdaki cümlelerin başında boş bırakılan parantezlere, cümlelerde verilen
bilgiler doğru ise D, yanlış ise Y yazınız.
Aşağıdaki soruları dikkatlice okuyunuz ve doğru seçeneği işaretleyiniz.
1.
( ) Bir tabloya satır eklemek için INSERT INTO deyimi kullanılır.
2.
( ) Values ifadesi ile ekleme yapılacak olan tablo ismi belirtilir.
3.
( ) Insert Into içinde fonksiyonlar kullanılamaz.
4.
( ) Tablolarda güncelleme işlemini gerçekleştirmek için Delete komutu kullanılır.
5.
( ) Update komutu ile kullanılan SET ifadesi güncellenecek alanlar ve bu alanların
alacakları yeni değerleri belirlemek için kullanılır.
DEĞERLENDİRME
Cevaplarınızı cevap anahtarıyla karşılaştırınız. Yanlış cevap verdiğiniz ya da cevap
verirken tereddüt ettiğiniz sorularla ilgili konuları faaliyete geri dönerek tekrarlayınız.
Cevaplarınızın tümü doğru ise “Modül Değerlendirme”ye geçiniz.
44
MODÜL DEĞERLENDİRME
MODÜL DEĞERLENDİRME
Aşağıdaki cümlelerin başında boş bırakılan parantezlere, cümlelerde verilen
bilgiler doğru ise D, yanlış ise Y yazınız.
1.
( ) Belirtilen tablodaki alanların değerlerini belirtilen ölçütlere göre değiştirecek bir
güncelleme sorgusu oluşturmak için UPDATE deyimi kullanılır.
2.
( ) Veri tabanında verilere erişebilmek için SELECT deyimi kullanılmaktadır.
Aşağıdaki cümlelerde boş bırakılan yerlere doğru sözcüğü yazınız.
3.
Tabloların satırlarının herhangi bir sütuna göre sıralanmasının istendiği durumlarda
SELECT deyimi ……… ile birlikte kullanılır.
4.
Bir dizenin içerdiği sayısal değerleri biçimlendirilerek sayısal veri türüne dönüştürmek
için …….fonksiyonu kullanılır.
Aşağıdaki soruları dikkatlice okuyunuz ve doğru seçeneği işaretleyiniz.
5.
Bilgisayardaki geçerli sistem tarih ve saatini bildirmek için aşağıdakilerden hangisi
kullanılır?
A)
SELECT Now()
B)
SELECT Day()
C)
SELECT Tarih()
D)
SELECT Zaman()
6.
Sütunların içerdiği sayısal değerleri toplamak amacıyla kullanılan fonksiyon
aşağıdakilerden hangisidir?
A)
AVG()
B)
STDEV()
C)
SUM()
D)
VARP()
7.
Birden fazla sütun içinde gruplama yapmak için aşağıdakilerden hangisi kullanılır?
A)
ORDER BY
B)
GROUP BY
C)
SELECT BY
D)
FROM BY
45
8.
Tabloların birleştirilmesi sırasında eşiti olan birleştirme yapılırken kullanılan deyim
aşağıdakilerden hangisidir?
A)
INNER JOIN
B)
LEFT JOIN
C)
RIGHT JOIN
D)
INSERT JOIN
9.
Alt sorgudaki kayıtların değerine eşit olmayan ana sorgu kayıtlarını almak için
kullanılan işleç aşağıdakilerden hangisidir?
A)
SOME
B)
ANY
C)
ALL
D)
IN
10.
Bir tabloda bulunan kayıtların istenildiği zaman silinebilmesi için kullanılan komut
aşağıdakilerden hangisidir?
A)
UPDATE
B)
INSERT
C)
DELETE
D)
WHERE
DEĞERLENDİRME
Değerlendirme sonunda “Hayır” şeklindeki cevaplarınızı bir daha gözden geçiriniz.
Kendinizi yeterli görmüyorsanız öğrenme faaliyetini tekrar ediniz. Bütün cevaplarınız
“Evet” ise bir sonraki modüle geçmek için öğretmeninize başvurunuz.
46
CEVAP ANAHTARLARI
CEVAP ANAHTARLARI
ÖĞRENME FAALİYETİ-1’İN CEVAP ANAHTARI
Doğru
Yanlış
Doğru
A
D
D
B
C
A
1
2
3
4
5
6
7
8
9
ÖĞRENME FAALİYETİ-2’NİN CEVAP ANAHTARI
Yanlış
Yanlış
Doğru
Doğru
Doğru
Yanlış
Yanlış
1
2
3
4
5
6
7
ÖĞRENME FAALİYETİ-3’ÜN CEVAP ANAHTARI
Doğru
Yanlış
Yanlış
Yanlış
Doğru
1
2
3
4
5
MODÜL DEĞERLENDİRMENİN CEVAP ANAHTARI
Doğru
Doğru
Ordey By
Cint
A
C
B
A
D
C
1
2
3
4
5
6
7
8
9
10
47
KAYNAKÇA
KAYNAKÇA






YALÇIN Özkan, Veri Tabanı Sistemleri, Alfa Yayınları, İstanbul, 2009.
ÇİÇEK Musa, Veritabanı Tasarımı ve SQL Sorgulama Dili, Nirvana
Yayınları, Ankara, 2010.
GÜRKAN Osman, Microsoft Office 2010, Nirvana Yayınları, Ankara, 2010.
http://altanmesut.trakya.edu.tr/vt/Verileri_gruplayarak_analiz.ppt
(14.03.2012,14:00)
http://altanmesut.trakya.edu.tr/vt/Sql_Fonksiyonları.ppt (08.03.2012,15:30)
http://moodle.midas.baskent.edu.tr/mod/resource/view.php?inpopup=true&id=6
6 (15.03.2012,16:30)
48
Download