0% found this document useful (0 votes)
73 views56 pages

T SQL

Uploaded by

Fatih Başyiğit
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
73 views56 pages

T SQL

Uploaded by

Fatih Başyiğit
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

T.C.

MİLLÎ EĞİTİM BAKANLIĞI

MEGEP
(MESLEKİ EĞİTİM VE ÖĞRETİM SİSTEMİNİN
GÜÇLENDİRİLMESİ PROJESİ)

BİLİŞİM TEKNOLOJİLERİ

T-SQL

ANKARA 2008
Milli Eğitim Bakanlığı tarafından geliştirilen modüller;
 Talim ve Terbiye Kurulu Başkanlığının 02.06.2006 tarih ve 269 sayılı Kararı ile
onaylanan, Mesleki ve Teknik Eğitim Okul ve Kurumlarında kademeli olarak
yaygınlaştırılan 42 alan ve 192 dala ait çerçeve öğretim programlarında
amaçlanan mesleki yeterlikleri kazandırmaya yönelik geliştirilmiş öğretim
materyalleridir (Ders Notlarıdır).
 Modüller, bireylere mesleki yeterlik kazandırmak ve bireysel öğrenmeye
rehberlik etmek amacıyla öğrenme materyali olarak hazırlanmış, denenmek ve
geliştirilmek üzere Mesleki ve Teknik Eğitim Okul ve Kurumlarında
uygulanmaya başlanmıştır.
 Modüller teknolojik gelişmelere paralel olarak, amaçlanan yeterliği
kazandırmak koşulu ile eğitim öğretim sırasında geliştirilebilir ve yapılması
önerilen değişiklikler Bakanlıkta ilgili birime bildirilir.
 Örgün ve yaygın eğitim kurumları, işletmeler ve kendi kendine mesleki yeterlik
kazanmak isteyen bireyler modüllere internet üzerinden ulaşılabilirler.
 Basılmış modüller, eğitim kurumlarında öğrencilere ücretsiz olarak dağıtılır.
 Modüller hiçbir şekilde ticari amaçla kullanılamaz ve ücret karşılığında
satılamaz.
İÇİNDEKİLER

AÇIKLAMALAR ...................................................................................................................iii
GİRİŞ ....................................................................................................................................... 1
ÖĞRENME FAALİYETİ - 1 ................................................................................................... 3
1. T-SQL................................................................................................................................... 3
1.1. Transact SQL Kavramı ................................................................................................. 3
1.2. Veri Tanımlama Dili (DDL) ......................................................................................... 4
1.2.1. CREATE (Nesne Oluşturmak) .............................................................................. 4
1.2.2. ALTER (Nesnelerde Değişiklik Yapmak)............................................................. 5
1.2.3. DROP (Nesne Silmek)........................................................................................... 5
1.3. Veri İşleme Dili (DML) ................................................................................................ 5
1.3.1. SELECT Komutu .................................................................................................. 6
1.3.2. INSERT Komutu ................................................................................................... 7
1.3.3. UPDATE Komutu ................................................................................................. 7
1.3.4. DELETE Komutu .................................................................................................. 7
1.4. Veri Kontrol Dili (DCL) ............................................................................................... 8
1.4.1. GRANT Komutu ................................................................................................... 9
1.4.2. DENY Komutu ...................................................................................................... 9
1.4.3. REVOKE Komutu ............................................................................................... 10
UYGULAMA FAALİYETİ .............................................................................................. 11
ÖLÇME VE DEĞERLENDİRME .................................................................................... 15
ÖĞRENME FAALİYETİ - 2 ................................................................................................. 16
2. T-SQL İLE ÇALIŞMAK.................................................................................................... 16
2.1. Değişkenler ................................................................................................................. 16
2.1.1. Nesne ve Değişken İsimlendirme Kuralları......................................................... 16
2.1.2. Değişken Tanımlama ........................................................................................... 17
2.1.3. Açıklama Satırları................................................................................................ 18
2.2. Yığın Kavramı ............................................................................................................ 18
2.2.1. GO Komutu ......................................................................................................... 18
2.2.2. USE Komutu........................................................................................................ 19
2.2.3. PRINT Komutu.................................................................................................... 19
2.3. İşlem Operatör Türleri ................................................................................................ 19
2.3.1. Karşılaştırma Operatörleri ................................................................................... 19
2.3.2. Mantıksal Operatörler.......................................................................................... 21
2.3.3. Aritmetiksel Operatörler...................................................................................... 22
2.4. Fonksiyonlar ............................................................................................................... 23
2.4.1. Kümeleme Fonksiyonları..................................................................................... 23
2.4.2. T-SQL’de Gruplandırma ..................................................................................... 25
2.4.3. Tarih ve Zaman Fonksiyonları............................................................................. 27
2.4.4. Karakter Fonksiyonları ........................................................................................ 29
2.5. SQL Denetim Deyimleri ............................................................................................. 33
2.5.1. IF..ELSE Yapısı.................................................................................................. 33
2.5.2. CASE Yapısı........................................................................................................ 34
2.5.3. WHILE Döngüsü ................................................................................................. 35
UYGULAMA FAALİYETİ .............................................................................................. 38
ÖLÇME VE DEĞERLENDİRME .................................................................................... 46
MODÜL DEĞERLENDİRME .............................................................................................. 48
i
CEVAP ANAHTARLARI ..................................................................................................... 49
KAYNAKÇA ......................................................................................................................... 50

ii
AÇIKLAMALAR

AÇIKLAMALAR
KOD 481BB0044
ALAN Bilişim Teknolojileri
DAL/MESLEK Veri Tabanı Programcılığı
MODÜLÜN ADI T-SQL
T-SQL kullanarak veri tabanı işlemleri yapabilmeyle ilgili
MODÜLÜN TANIMI
öğrenme materyalidir.
SÜRE 40/32
ÖN KOŞUL Ağ Veri Tabanı Kurulumu modülünü bitirmiş olmak
YETERLİK
Genel Amaç
Gerekli ortam sağlandığında T-SQL’i kullanabileceksiniz.
MODÜLÜN AMACI
Amaçlar
1. T-SQL komutlarını kullanabileceksiniz.
2. T-SQL elemanlarını kullanıp çalışabileceksiniz.

Ortam:
Atölye, laboratuar, bilgi teknolojileri ortamı ( internet ) vb.
kendi kendinize veya grupla çalışabileceğiniz tüm ortamlar
EĞİTİM ÖĞRETİM
ORTAMLARI VE
Donanım:
DONANIMLARI
Ağ veri tabanını çalıştırabilecek yeterlikte bilgisayar,
yedekleme için gerekli donanım (cd yazıcı, flash bellek),
raporlama için yazıcı, kâğıt ve kalem

 Her faaliyet sonrasında o faaliyetle ilgili değerlendirme


soruları ile kendi kendinizi değerlendireceksiniz.
ÖLÇME VE
 Modül sonunda uygulanacak ölçme araçları ile modül
DEĞERLENDİRME
uygulamalarında kazandığınız bilgi ve beceriler ölçülerek
değerlendirilecektir.

iii
iv
GİRİŞ

GİRİŞ
Sevgili Öğrenci,

Okul yaşantınızda öğreneceğiniz her konu, yaptığınız uygulama ve tamamladığınız her


modül; bilgi dağarcığınızı geliştirecek ve ileride atılacağınız iş yaşantınızda size başarı
olarak geri dönecektir. Eğitim sürecinde daha özverili çalışır ve çalışma disiplinini
kazanırsanız başarılı olmamanız için hiçbir neden yoktur.

Son yıllarda yapılan birçok proje, çok sayıda bilgisayar tarafından kullanılabilecek
şekilde tasarlanmaktadır. Bu yüzden, ağ ortamında birden fazla kullanıcı aynı proje üzerinde
çalışabilmektedir. Bu işlemleri çok sık kullandığınız veri tabanı programıyla da
yapabilmenize rağmen ağ ortamında güvenlik ve hızlı erişim açısından en iyi sonucu veren
SQL Server veri tabanıyla da yapabilirsiniz. Bu programla milyonlarca kaydın olduğu
tablolar üzerinde işlem yaparken tüm kullanıcılara hitap ederek istenilen sorgu sonuçlarını da
en hızlı şekilde elde edebileceksiniz.

Bu modülle T-SQL kullanarak veri tabanı işlemlerini ve T-SQL elemanlarını


kullanmayı öğreneceksiniz.

1
2
ÖĞRENME FAALİYETİ-1

ÖĞRENME FAALİYETİ - 1
AMAÇ

T-SQL için kullanılan dilleri ve bu dillerle ilgili komutları öğreneceksiniz.

ARAŞTIRMA

 T-SQL’in bir önceki SQL Server sürümlerine göre yeniliklerini araştırınız.

1. T-SQL
1.1. Transact SQL Kavramı
Microsoft'un veri tabanı sorgulama dilidir. Transact-SQL, SQL Server ve istemci
(client) arasında iletişimi sağlayan SQL sorgulama dilinin gelişmiş bir versiyonudur.
Transact Structured Query Language kelimelerinin kısaltmasıdır.

T-SQL kullanarak veri tabanına kayıt eklenebilir, silinebilir, güncellenebilir ya da


sorgulama ve raporlama yapılabilir.

T-SQL ile döngü veya mantıksal işlemler yapmak için bir derleyiciye gerek yoktur.
Herhangi bir programlama dili öğrenmeden de T-SQL ile tüm amaçlarınıza hitap edecek
projeler gerçekleştirebilirsiniz.

T-SQL ifadelerini çalıştırabilmek için bir Management Studio ile SQL Server’a
erişmeniz gerekir.

SQL deyimleri veritabanları üzerinde çeşitli işlemleri yerine getirir. Veri tabanından
sorgulama yapmak için SELECT, ekleme yapmak için INSERT güncelleme yapmak için
UPDATE, silme yapmak için DELETE, yeni tablo oluşturmak için CREATE TABLE gibi
komutlara sahiptir.

Bu komutlar, işlevlerine göre şu şekilde ayrılır:

 DDL (Data Definition Language): Veri tanımlama dili


 DML (Data Manipulation Language) : Veri işleme dili
 DCL (Data Control Language): Veri kontrol dili

3
1.2. Veri Tanımlama Dili (DDL)
SQL Server içinde veri tabanı, tablo ve kullanıcı tanımlı veri tipleri gibi nesneler
oluşturmak ve bunları yapılandırmak için kullanılır. Temel komutları aşağıdaki şekildedir:

Temel Komutlar Açıklama


CREATE Nesne oluşturmak için kullanılır.
ALTER Nesneler üzerinde değişiklik yapmak için kullanılır.
DROP Nesneleri silmek için kullanılır.

1.2.1. CREATE (Nesne Oluşturmak)

Veri tabanındaki nesnelerin oluşturulabilmesi için CREATE komutu kullanılır.


Oluşturulacak nesnenin özellikleri dikkate alınarak farklı parametreler kullanılmalıdır.

 Genel Yazımı

CREATE nesne_adi

Örnek:
CREATE DATABASE Person

Person adında bir veri tabanı oluşturulur.

Örnek:
CREATE TABLE PERSONEL(
PERSONEL_ID int,
AD varchar(10),
SOYAD varchar(10)
)

Bu şekilde bir yazımla PERSONEL adında bir tablo oluşturulur. Tablo sütunları da
PERSONEL_ID, AD, SOYAD’dır.

Örnek:
CREATE TABLE PERSONELYAKIN(
PERSONEL_ID int,
YAKIN_ID int,
YAKIN_AD varchar(10),
YAKIN_SOYAD varchar(10)
)

Bu örnekte de PERSONELYAKIN adında bir tablo oluşturulmuştur. Tablo sütunları


da PERSONEL_ID, YAKIN_ID, YAKIN_AD, YAKIN_SOYAD’ dır.

4
1.2.2. ALTER (Nesnelerde Değişiklik Yapmak)

Daha önceden oluşturulmuş bir nesne özelliğinin değiştirilmesini sağlar.

 Genel Yazımı

ALTER nesne nesne_adi değişim_cümlesi

Örnek:
ALTER TABLE PERSONEL
ADD BABA_AD varchar(20) NOT NULL

Bu şekildeki bir yazımla PERSONEL tablosuna BABA_AD sütunu eklenmiştir. NOT


NULL ile de bu sütuna veri girişi zorunlu hâle getirilmiştir.

Örnek
ALTER TABLE PERSONEL
ALTER COLUMN AD varchar(15) NOT NULL

Bu yazım ile de varolan AD sütununun alabileceği karakter sayısı 15 olarak


değiştirilmiş ve veri girişi zorunlu hâle getirilmiştir.

1.2.3. DROP (Nesne Silmek)

Bir nesnenin silinmesini sağlayan komuttur. DROP komutu tüm nesneler için
kullanılır.

 Genel Yazımı

DROP nesne nesne_adi

Örnek:
DROP TABLE PERSONEL

Bu şekilde bir yazımla PERSONEL tablosu silinmiş olur.

1.3. Veri İşleme Dili (DML)


Veri tabanı içindeki veriler ile ilgili işlemler yapılmasını sağlar. Temel komutları
aşağıdaki şekildedir.

Temel Komutlar Açıklama


SELECT Veri tabanındaki verileri seçmeyi sağlar.
INSERT Veri tabanına yeni veriler eklemek için kullanılır.
UPDATE Veriler üzerinde değişiklik (güncelleme) yapmak için kullanılır.
DELETE Veri tabanından veri silmek için kullanılır.
5
1.3.1. SELECT Komutu

Verilere erişmek için en sık kullanılan komuttur. Bir tablodaki bir veya daha çok alan
için SELECT komutu yazılabilir.

 Genel Yazımı

SELECT sütun_adi1, [sütun_adi2],…………. [*]


FROM tablo_adi

Örnek:
SELECT * FROM PERSONEL

Bu yazımla PERSONEL tablosundaki tüm alanlar seçilmiş olur.

Örnek:
SELECT PERSONEL_ID, AD
FROM PERSONEL

Bu yazım ile de PERSONEL tablosundaki PERSONEL_ID ve AD alanları seçilmiş


olmaktadır.

Örnek:
SELECT AD+ ‘ ‘ + SOYAD
FROM PERSONEL

PERSONEL tablosunda yer alan AD ve SOYAD alanlarını tek bir sütun gibi
birleştirerek göstermeyi sağlayan SELECT ifadesidir.

Örnek:
SELECT ad FROM rehber

ifadesiyle rehber tablosundaki sadece “ad” alanı bilgilerinin elde edilmesini sağlar.

Örnek:
SELECT * FROM rehber WHERE ad=’Ali’

ifadesiyle ad alanındaki Ali ismindeki tüm kayıtların elde edilmesini sağlar.

Örnek:
SELECT * FROM rehber WHERE ad=’Tuncay’ ORDER BY ad ASC

Verilen koşullara göre sütundaki bilgileri artan (ASC) ya da azalan (DESC) sırada
ekrana getirir. WHERE ile oluşturulan koşul ifadelerinde mantıksal operatörler de
kullanılabilir (and, or,not).

6
Örnek:
SELECT * FROM rehber ORDER BY ad, soyad

ifadesiyle ad alanına göre kayıtları, adı aynı olanları da soyad alanına göre seçme
işlemini gerçekleştirir.

1.3.2. INSERT Komutu

Veri tabanına yeni bir kayıt eklemek için kullanılır.

 Genel Yazımı

INSERT INTO tablo_adi (sütunadi1 [,sütunadi2,……..])


VALUES (deger1 [,deger2, ……..])

Örnek:
INSERT INTO PERSONEL (AD,SOYAD)
VALUES (‘Ceylin’,’Yılmaz’)

şeklindeki ifadeyle Personel tablosunun ad ve soyad alanlarına yeni değerler ekler.

1.3.3. UPDATE Komutu

Kayıtları güncellemek için kullanılır. Hangi kayıtların güncelleneceği bir koşul veya
koşullarla belirtilebilir.

 Genel Yazımı

UPDATE tablo_adi SET alan_adi=deger WHERE şart

Örnek:
UPDATE PERSONEL SET AD=’Ceylin’ WHERE SOYAD=’Yılmaz’

biçimindeki bir bildirim soyadı Yılmaz olan kayıtların ad bilgisini Ceylin olarak
değiştirir.

Eğer birden fazla Yılmaz soyadı olsaydı hepsinin ad alanı Ceylin olarak
değiştirilecekti.

SET sözcüğü değiştirilecek kolonları ve değerleri belirtir. WHERE sözcüğü ise


değiştirilecek satırı belirtir.

1.3.4. DELETE Komutu

Tablodan kayıt silmek için kullanılır.

7
 Genel Yazımı

DELETE FROM tablo_adi


WHERE şart

Örnek:
DELETE FROM PERSONEL
WHERE SOYAD=’Yılmaz’

SOYAD değeri Yılmaz olan tüm kayıtları siler.

1.4. Veri Kontrol Dili (DCL)


DCL, bir veri tabanı ile ilişkili kullanıcıları ve rollerin izinlerini değiştirmek için
kullanılır. Diğer bir deyişle verilere erişim yetkilerini düzenlemede kullanılır. Temel
komutları aşağıdaki şekildedir.

Temel Komutlar Açıklama


Bir kullanıcının verileri kullanmasına ve T-SQL komutlarını
GRANT
çalıştırmasına izin verir.
DENY Bir kullanıcının verileri kullanmasını kısıtlar.
REVOKE Daha önce yapılan tüm kısıtlama ve izinleri iptal eder.

DCL komutlarını kullanabilmek için SQL Server'da varsayılan değer (default) olarak
yetki sahibi olan gruplar: sysadmin , dbcreator , db_owner , db_securityadmin 'dir.

Sunucuya dışarıdan bir erişim sağlamak için bir giriş (login) oluşturulmalıdır.

Bunun için;

CREATE LOGIN Tuncay1 WITH PASSWORD =’123456’

Bu rol ile veri tabanına bir kullanıcı olarak erişim için aşağıdaki satırlar yazılmalıdır:

CREATE USER Tuncay


FOR LOGIN Tuncay1

Eğer User adı ile Login adı aynı ise FOR LOGIN satırına gerek kalmaz.

Veri tabanında uygulama rolü oluşturulması için de aşağıdaki satırlar kullanılabilir:

CREATE APPLICATION ROLE Lab1


WITH PASSWORD = ‘sifre’
, DEFAULT_SCHEMA=Lab1;

8
1.4.1. GRANT Komutu

Veri tabanı kullanıcısına, veri tabanı rolüne veya uygulama rolüne izinler vermek için
kullanılan komuttur.

 Genel Yazımı

GRANT {ALL veya izinler}


ON {izin_verilenler}
TO {hesaplar}

ALL ifadesi, tüm hakların verilebileceğini gösterir.

Örnek:
Tuncay1 adlı kullanıcıya tablo oluşturma izni şöyle verilebilir:

GRANT CREATE TABLE


TO Tuncay1

Aynı anda Lab1 rolüne de aynı izin verilebilir.

GRANT CREATE TABLE TO Lab1, Tuncay1

Örnek:
Bir kullanıcıya hem veri tabanı hem de tablo oluşturma izni şöyle verilir:

GRANT CREATE DATABASE, CREATE TABLE TO Ahmet

1.4.2. DENY Komutu

Kullanıcıların haklarını kısıtlayan komuttur.

 Genel Yazımı

DENY { ALL veya izinler} TO {kullanıcılar}

Örnek:
DENY CREATE TABLE
TO Tuncay1

Tuncay1 adlı kullanıcının tablo oluşturma yetkisi kısıtlanır.

Örnek:
DENY SELECT ON PERSONEL TO Tuncay1

9
PERSONEL tablosunda Tuncay1 adlı kullanıcı SELECT komutuyla ilgili işlem
yapamaz.

1.4.3. REVOKE Komutu

Daha önce yapılan tüm kısıtlama ve izinleri iptal eden komuttur. Bir nesneyi oluşturan
kullanıcının REVOKE ile nesne üzerindeki yetkilendirme ve kullanma hakkı yok edilemez.

REVOKE komutunu, sys_admin rolüne veya db_owner, db_securityadmin sabit veri


tabanı rollerine sahip kullanıcılar ve nesne için dbo olan kullanıcı çalıştırabilir.

 Genel Yazımı

REVOKE {ALL veya izinler} {TO veya FROM} {hesaplar}

Örnek:
REVOKE ALL TO PUBLIC

PUBLIC rolüne verilmiş olan tüm yetkiler kaldırılır.

Örnek:
REVOKE SELECT ON PERSONEL TO PUBLIC

PUBLIC rolüne PERSONEL tablosunda seçim için verilen izin kaldırılır.

10
UYGULAMAFAALİYETİ
UYGULAMA FAALİYETİ

İşlem Basamakları Öneriler

 CREATE DATABASE komutunu


kullanabilirsiniz.

 T-SQL’i kullanarak Ornek adında bir


veri tabanı oluşturunuz.

Resim 1.1: Veri tabanı oluşturma

 Klavyeden F5 tuşuna basabilir veya Execute


 Yazdığınız sorguyu çalıştırınız.
komutuna tıklayabilirsiniz.

 Sorgu çalıştırıldıktan sonra Database’ı


Refresh etmeyi unutmayınız.

 Object Explorer penceresinde


sorgusunu yazdığınız veri tabanının
oluşturulup oluşturulmadığını
kontrol ediniz.

Resim 1.2: Refresh

 Ornek veri tabanı altında Rehber


adında bir tablo oluşturunuz.
 Tablo sütunları Ad VarChar(10),
Soyad VarChar(20), Telefon
VarChar (11) şeklinde olsun.
Resim 1.3: Tablonun oluşturulması

 Oluşturduğunuz tabloya Adres


adında bir sütun ekleyiniz.
Resim 1.4: Yeni bir sütun ekleme

11
 Oluşturduğunuz tabloya kendi
bilgilerinizi ve ailenizden iki kişinin
bilgilerini ekleyiniz.
Resim 1.5: Bilgilerin tabloya eklenmesi

 Tablo üzerinde sağ tıklayarak Open Table


komutunu tıklayabilir ve tablonuzu
açabilirsiniz.

 Eklediğiniz bilgilerin tabloya yazılıp


yazılmadığını kontrol ediniz. Resim 1.6: Open Table komutu

Resim 1.7: Tablo içeriği

 UPDATE komutunu kullanabilirsiniz.

 Kendi telefon numaranızı başka bir


telefon numarasıyla değiştiriniz.

Resim 1.8: Bilginin güncellenmesi

 Ailenizden birinin bilgilerini siliniz.


Resim 1.9: Bilginin silinmesi

 SELECT komutunu kullanabilirsiniz.


 Tablonuzda kalan bilgileri
görüntüleyiniz.
Resim 1.10: Kayıtların gösterilmesi

12
 Results penceresinden sonucu
kontrol ediniz.
Resim 1.11: Results penceresi

 Tablonuzdaki bilgileri Ad sütununa


göre artan ve azalan sırada
görüntüleyiniz. Resim 1.12: Artan ve azalan sırada gösterim

 Sunucuda “Kullanici” adında bir


login oluşturunuz.
Resim 1.13: Login oluşturulması

 Sunucudaki Security/Logins
alanında Login’in oluşturulup
oluşturulmadığını kontrol ediniz.

Resim 1.14: Logins

 Aynı isimde bir kullanıcı


oluşturunuz.
Resim 1.15: Kullanıcı oluşturulması

 Ornek veri tabanındaki


Security/Users alanında kullanıcının
oluşturulup oluşturulmadığını
kontrol ediniz.
Resim 1.16: Users

13
 “Kullanici” adlı user’a SELECT
ifadesinin kullanımını engelleyiniz.
Resim 1.17: DENY ile erişimin kısıtlanması

14
ÖLÇMEVE
ÖLÇME VEDEĞERLENDİRME
DEĞERLENDİRME

Aşağıdaki soruları dikkatlice okuyarak doğru/yanlış seçenekli sorularda uygun


harfleri yuvarlak içine alınız. Seçenekli sorularda ise uygun şıkkı işaretleyiniz. Boşluk
doldurmalı sorularda boşluklara uygun cevapları yazınız.

1. Aşağıdakilerden hangisi veri tanımlama dili komutlarından değildir?


A) CREATE B) DELETE C) DROP D) ALTER

2. Veri tabanı kullanıcısına izin vermek için Revoke komutu kullanılır (D/Y).

3. Eğer User (kullanıcı) ile Login (giriş) adı aynıysa ……………………. satırını
yazmaya gerek yoktur.

4. Aşağıdakilerden hangisi T-SQL ile yapılamaz?


A) Kayıt silinebilir. B) Kayıt eklenebilir.
C) Form oluşturulabilir. D) Raporlama yapılabilir.

5. Aşağıdakilerden hangisi DML komutudur?


A) SET B) UPDATE C) INTO D) CREATE

6. Bir veri tabanıyla ilişkili kullanıcıları ve rollerin izinlerini değiştirmek için kullanılan
dile ...........................….................. denir.

7. Bir kullanıcının veri tabanı veya tabloya erişimini engellemek için DENY komutu
kullanılır. (D/Y)

8. DCL’de sunucuya dışarıdan bir erişim için …………… oluşturulur.

9. Aşağıdakilerden hangisi veri tabanında çeşitli işlemleri yerine getiren dillerden


değildir?
A) DCL B) DDL C) DML D) DSL

10. Kullanıcıya verilen tüm kısıtlamaları kaldırmak için GRANT komutu kullanılır. (D/Y)

DEĞERLENDİRME

Cevaplarınızı cevap anahtarı ile karşılaştırınız. Doğru cevap sayınızı belirleyerek


kendinizi değerlendiriniz. Yanlış cevap verdiğiniz ya da cevap verirken tereddüt yaşadığınız
sorularla ilgili konulara geri dönerek tekrar inceleyiniz. Tüm sorulara doğru cevap
verdiyseniz diğer modüle geçiniz.

15
ÖĞRENME FAALİYETİ-2

ÖĞRENME FAALİYETİ - 2
AMAÇ

T-SQL değişkenlerini, operatörlerini, deyim bloklarını ve fonksiyonlarını kullanıp


çalıştırabileceksiniz.

ARAŞTIRMA

 T-SQL’de değişken kullanmaya ihtiyaç duyulmasının nedenlerini araştırınız.

2. T-SQL İLE ÇALIŞMAK


2.1. Değişkenler
Değişken, verilerin bellekte geçici olarak kaydedilmesini ve gerektiğinde
kullanılmasını sağlayan değerdir. T-SQL kullanmanın en büyük kolaylıklarından biri de
değişken kullanımına olanak tanımasıdır. Burada ifade edilen; değişken diğer tüm
programlama dillerinde yer alan bir veri tipi ile sınırlandırılmış, oluşturulmasının ardından
hafızada belli bir yer kaplayan, üzerine veri ataması yapılabilen ve daha sonra ismi
kullanılarak program içerisinden çağrılıp kullanılabilecek yapıdır.

SQL Server'da da değişkenler yerel ve genel olmak üzere ikiye ayrılır. Yerel
değişkenler, "@" ön eki ile tanımlanır (@değişken). Genel değişkenler ise SQL Server
tarafından tanımlanmıştır ve kullanıcı tarafından oluşturulamaz. "@@" ön eki ile
tanımlanırlar (@@SERVERNAME). Genel değişkenler genellikle SQL Server hakkındaki
bilgileri verir. SQL Server'da tanımlanmış birçok genel değişken vardır.

2.1.1. Nesne ve Değişken İsimlendirme Kuralları

Nesne veya değişkene bir isimlendirme yaparken aşağıdaki kurallara dikkat


etmelisiniz:

 Harf veya alt çizgi (_) ile başlamalıdır.


 Türkçe karakterler ve boşluk isimlendirmede kullanılmamalıdır.
 Değişken ismi SQL’de özel anlamı olan sembollerle (@, @@, #, ##, $)
başlamamalıdır.
 T-SQL komutları değişken ismi olarak verilmemelidir (SELECT,UPDATE vb).
16
 SQL ifadeleri prensip olarak büyük harfle yazılır.
 Nesne isimleri kısa ve anlamlı olmalıdır.
 Nesne isimlendirilirken işlerin kolaylaştırılması açısından tekil isim tercih
edilmelidir (TabloOgrenciler yerine tblOgrenci gibi).
 NULL terimi, daha önce hiçbir şey girilmemiş (değersiz) anlamındadır.
Klavyedeki SPACE (ASCII 32) tuşu ile NULL aynı değerleri içermez. NULL
boş veya bilinmeyen değerler için kullanılır.

2.1.2. Değişken Tanımlama

SQL Server'da değişkenler DECLARE ifadesi kullanılarak oluşturulur.

 Yazım Şekli

DECLARE @degisken_adi <veri_tipi> [(boyut)]

Örnek:
DECLARE @ogr_no VarChar(10)
DECLARE @tckimlik_no int

Aralara virgül koyarak da birden fazla değişkeni tek bir DECLARE ifadesi ile
oluşturabilirsiniz.

Örnek:
DECLARE @ogr_no varchar(10),@tckimlik_no int

Varchar, int türlerinde değişken tanımlayabildiğiniz gibi tablo türünde değişken de


tanımlayabiliriz.

Örnek:
DECLARE @değişken_adı TABLE (tablo tanımı)

şeklindedir.

Bir değişken oluşturulduğunda NULL değere sahiptir. Değişkenlere değer atamanın


SET, SELECT ve tablolar için INSERT INTO gibi birkaç farklı şekli vardır.

 SET ifadesi kullanılarak değişkene değer atama

SET @değişken_adi=değer

şeklinde yapılır.

17
 SELECT ifadesiyle değer atama

SELECT @değişken_adı=değer

şeklinde yapılır.

 Tablo değişkenlere INSERT INTO ifadesi ile değer atama


INSERT INTO @tablo_degisken SELECT adi, soyadi FROM person

ifadesi ile person tablosunun adı ve soyadı sütunlarının içerdiği değerlerden oluşan bir
tabloyu @tablo_değişken adlı değişkene atamış olursunuz.

2.1.3. Açıklama Satırları

T-SQL'de bir satırın dikkate alınmamasını istiyorsanız "--" kullanabilir ya da /*........*/


kullanabilirsiniz.

Örnek:
-- CREATE TABLE ogrenci

veya

/* CREATE TABLE ogrenci */

şeklindeki kullanımlardan birini seçebilirsiniz.

2.2. Yığın Kavramı


SQL Server’da yığın, sorguların sırayla işleme alınması demektir. Çalışma esnasında
SQL Server’a gönderilen birden fazla sorgu yığınlar hâlinde ele alınır.

2.2.1. GO Komutu

Bir yığının sonunu belli etmek için GO komutu kullanılır. Bir yığın SQL Server’da
işlenmeye başladığı anda önce Parse(ayrıştırma) edilir. Daha sonra derlenerek (Compile)
çalıştırılır(Execute).

 Genel Yazımı

Komutlar
Komutlar
GO
şeklindedir.

18
2.2.2. USE Komutu

T-SQL’de çalışacağınız veri tabanını belirme işlemi için bu komut kullanılmalıdır.


USE komutuyla hangi veri tabanı üzerinde işlem yapılacağı belirtilir.

 Genel Yazımı

USE Veritabani_Adi
şeklindedir.

Örnek:
USE master

2.2.3. PRINT Komutu

Değişkenlerin değerlerini, hataları vb. diğer ihtiyaç duyulan olaylarda PRINT komutu
kullanılır. DEBUG işlemi için ihtiyaç duyulan bir komuttur.

 Genel Yazımı

PRINT @degisken_adi

şeklindedir.

Örnek:
USE Deneme
GO

DECLARE @ad VARCHAR(10)


SELECT @ad=’Mustafa’
GO

PRINT @ad
GO

ad değişkeninin içeriği PRINT ile gösterilmiş olacaktır.

2.3. İşlem Operatör Türleri


T-SQL’de işlem yapabilmek için bazı operatörlere ihtiyaç duyulur.

2.3.1. Karşılaştırma Operatörleri

Karşılaştırma ifadesinde karşılaştırılan verilerin türü aynı olmalıdır. Yani karakter veri
türü ile ancak karakter türünde başka bir veri; bir sayısal veri ile ancak sayısal olan başka bir
veri karşılaştırılabilir.

19
OPERATÖR ANLAMI
< Küçük
> Büyük
= Eşit
<= Küçük veya eşit
>= Büyük veya eşit
<> Eşit değil
!= Eşit değil
LIKE Metin Karşılaştırma Operatörü

Örnek:
Öğrenci veri tabanında Tablo 2’deki ikinci notu 56’dan küçük olan öğrencileri
listeleyen T-SQL kod satırlarıdır.

SELECT *
FROM tablo2
WHERE nt2<=56

Örnek:
Adı Ali olmayan kayıtları listelemek için kullanılan T-SQL kod satırlarıdır.

SELECT *
FROM Personel
WHERE ad<>’Ali’

 Joker Karakterler

Sadece LIKE operatörüyle kullanılan joker karakterler, bir veya daha fazla harfin
yerine geçer. Belirli aralıklardaki belli harfle başlayan ve biten sorgularda joker karakterler
kullanılır.

Joker Karakterler Anlamı


% Birden fazla harf ya da rakamın yerini tutar.
_ Bir tek harf veya rakamın yerini tutar.
[HARF] Herhangi bir harf yerine gelebilecek harfleri belirtir.
[^HARF] Herhangi bir harf yerine gelemeyecek harfleri belirtir.
[A-Z] A ile Z arasındaki harfleri belirtir.

Örnek:

tablo1 tablosundaki ad alanı içinde baş tarafı “Er” ile başlayan isimleri listeleyen T-
SQL kodlarıdır.

SELECT *
FROM tablo1 WHERE ad LIKE '%Er%'
20
Örnek:
tablo1 tablosundaki soyad alanı içinde baş tarafı “DE” ile başlayan soyadları listeleyen
T-SQL kodlarıdır.

SELECT *
FROM tablo1 WHERE soyad LIKE '%DE%'

2.3.2. Mantıksal Operatörler

NOT, OR ve AND mantıksal operatörleri yardımı ile birden çok koşulun


gerçekleşmesine bağlı olarak ifade edilebilecek karmaşık ya da birleşik koşullu listelemeleri
gerçekleştirmek mümkün olmaktadır. BETWEEN ifadesi de AND operatörü ile aynı işlemi
gerçekleştirebilmektedir.

Örnek:
Doğum tarihi 1970’ten önce olan, maaşı 700 – 1200 arasında olan personeli listeleyen
kodlardır.

SELECT *
FROM Person
WHERE dogum_tarih<{01/01/70} AND
Maas>=700 AND maas<=1200

Örnek:
BETWEEN..AND yapısıyla, maaşı 700 ile 1200 YTL arasında olanları gösteren
T_SQL kodlarıdır.

SELECT *
FROM Person
WHERE maas BETWEEN 700 AND 1200

Örnek:
Doğum tarihi 1970’ten büyük ve cinsiyeti erkek olan veya doğum tarihi 1975’ten
büyük ve cinsiyeti kadın olan personeli listeleyen T-SQL kodlarıdır.

SELECT *
FROM Person
WHERE dogum_tarih>={01/01/70} AND cinsiyet=Erkek
OR dogum_tarih>={01/01/75} AND cinsiyet=Kadın

NOT: AND operatörü OR operatörüne göre daha önceliklidir.

21
Örnek:
Sinif tablosunda adı Ali olmayanları listeleyen T-SQL kodlarıdır.

SELECT * FROM Sinif


WHERE NOT ad=’Ali’

Örnek:
SELECT *
FROM Ogrenci
WHERE bolum=’Bilgisayar’ OR bolum=’Elektronik’ OR bolum=’Elektrik’

OR operatörü yerine In operatörü de kullanarak kod satırlarını yazabiliriz.

SELECT *
FROM tablo1
WHERE bolum In ('Bilgisayar','Elektronik','Elektrik')

2.3.3. Aritmetiksel Operatörler

T-SQL’de kullanılan aritmetiksel operatörler şunlardır.

OPERATÖR İŞLEVİ
% Mod alma
* Çarpma
/ Bölme
+ Toplama
- Çıkarma

SELECT komutu ile veri tabanında mevcut tablolardan listeleme yaparken tabloda
ayrı bir sütun (alan) olarak yer almamış ve ancak bir hesaplama sonucunda üretilebilecek
bilgileri de listeleme içine almak mümkündür.

Örnek:
Ogr_Notlar tablosunda notların not ortalamasını hesaplayan T-SQL kodlarıdır.

SELECT (nt1+nt2+nt3) /3
FROM Ogr_Notlar

Öncelik sırası, matematikte ve diğer bilgisayar dillerinde olduğu gibidir. Üs alma,


hepsinden öncedir. Sonra çarpma (*) ve bölme (/) gelir. Toplama (+) ve çıkarma (-) en son
önceliklidir. Parantez kullanılarak öncelik sırası değiştirilebilir.

22
2.4. Fonksiyonlar
2.4.1. Kümeleme Fonksiyonları

SQL, tablo içinden çeşitli matematiksel işlemlerin sonucunu otomatik olarak üretmeyi
sağlayan fonksiyonlara sahiptir.

 SUM Fonksiyonu

Fonksiyonla belirtilen sütun ile ilişkili olarak toplama işlemini yapar.

Örnek:
Ogr_Notlar tablosunda nt1 sütununun not toplamını hesaplayan T-SQL kodlarıdır.

SELECT SUM(nt1)
FROM Ogr_Notlar

Örnek:
Maaşları 500 YTL’nin altında olan personelin maaşları toplamını hesaplayan T-SQL
kodlarıdır.

SELECT SUM(maas)
FROM Person
WHERE maas<500

 AVG Fonksiyonu

Aritmetiksel ortalama (avarage) hesaplamak için kullanılır.

Örnek:
İşçilerin maaşları ortalamasını veren T-SQL kodlarıdır.

SELECT AVG(maas)
FROM Person

Bu fonksiyon ile de koşula bağlı olarak hesaplatma yaptırılabilir.

 MAX Fonksiyonu

Tablo içinde, belirtilen sütun (alan) içindeki en büyük değeri bulur.

23
Örnek:
Ogr_Notlar tablosu içindeki en yüksek öğrenci not ortalamasını veren T-SQL
kodlarıdır.

SELECT MAX(not_ortalama)
FORM Ogr_Notlar

 MIN Fonksiyonu

Tablo içinde belirtilen sütun (alan) içindeki en küçük değeri bulur.

Örnek:
Ogr_Notlar tablosu içindeki en düşük öğrenci not ortalamasını veren T-SQL
kodlarıdır.

SELECT MIN(not_ortalama)
FORM Ogr_Notlar

 COUNT Fonksiyonu

Tablo içerisinde herhangi bir sayma işlemi gerçekleştirmek için kullanılır.

Örnek:
Ogr_Notlar tablosu içindeki öğrenci not ortalamalarının sayısını veren T-SQL
kodlarıdır.

SELECT COUNT (not_ortalama)


FROM Ogr_Notlar

COUNT fonksiyonu, DISTINCT sözcüğü ile de kullanılabilir. DISTINCT, her bir


kaydın tekil olarak yer alması istendiğinde bu deyim kullanılır. Normalde SELECT ile aynı
özelliğe sahip birden fazla kayıt listelenebilir.

Örnek:
Bir okulda birden fazla bölüme kayıtlı öğrenci olabilir. Sadece okuldaki bölüm
adlarını listeleyen T-SQL kodlarıdır.

SELECT DISTINCT bolum


FROM Ogrenci

Örnek:
Bir okulda birden fazla bölüme kayıtlı öğrenci olabilir. Sadece okuldaki bölümlerin
sayısını listeleyen T-SQL kodlarıdır.

SELECT COUNT (DISTINCT bolum)


FROM Ogrenci
24
COUNT komutunda, * karakterinin kullanılması, bütün sütunların işleme sokulmasını
sağlar.

2.4.2. T-SQL’de Gruplandırma

“GROUP BY” yardımcı sözcüğü bir alana göre kayıtları gruplamak için kullanılır.
Genel kullanımı aşağıdaki gibidir:

SELECT [ DISTINCT | ALL ] <sütun(lar)> FROM <tablo adı (lar)>


[ WHERE <şart (lar)> ]
[ GROUP BY <sütunlar>]

Örnek:
Öğrenci notları tablosunda öğrenci numarasına göre her bir öğrencinin almış olduğu
not ortalamalarını gösteren T-SQL kodlarıdır.

SELECT ogrno, AVG(ort)


FROM tablo2
GROUP BY ogrno

Resim 2.1: Group By kullanımı

Örnek:
Öğrenci notları tablosunda öğrenci numarasına ve bölüm adına göre her bir öğrencinin
almış olduğu not ortalamalarını gösteren T-SQL kodlarıdır.

SELECT ogrno,bolum,MAX(ort)
FROM Tablo2
GROUP BY ogrno,bolum

Resim 2.2: Group By kullanımının diğer görünümü

25
Gruplandırarak kümeleme fonksiyonlarını uygularken koşul da verilebilir. Bu
durumda, grup üzerindeki hesaplamalarla ilişkili koşul belirtirken HAVING sözcüğünü
kullanmak gerekir.

Örnek:
Öğrenci notları tablosunda öğrenci numarasına göre her bir öğrencinin almış olduğu
not ortalamasını 70’den büyük gösteren T-SQL kodlarıdır.

SELECT ogrno,AVG(ort)
FROM Ogr_Notlar
GROUP BY ogrno
HAVING AVG(ort)>70

Resim 2.3: HAVING kullanımı sonucu ekran görüntüsü

HAVING sözcüğü, SELECT komutunda GROUP BY sözcükleri bulunmadığı zaman


geçersizdir. HAVING sözcüğünü izleyen ifade içinde SUM, COUNT (*), AVG, MAX ya da
MIN gibi kümeleme fonksiyonlarından en az biri bulunmalıdır.

WHERE sözcüğü bir tablonun tek tek satırları üzerinde işlem yapan koşullar için
geçerli iken HAVING sözcüğü ,sadece gruplanmış veriler üzerindeki işlemlerde geçerlidir.

Örnek:
Öğrenci notları tablosunda öğrenci numarasına göre bölümü “Bilgisayar” ve
öğrencinin almış olduğu not ortalaması 65’ten büyük olanları gösteren T-SQL kodlarıdır.

SELECT ogrno,bolum,AVG(ort)
FROM Ogr_Notlar
WHERE bolum='Bilgisayar'
GROUP BY ogrno,bolum
HAVING AVG(ort)>65

Resim 2.4: Sorgunun ekran görüntüsü

26
 COMPUTE ve COMPUTE BY Deyimleri

Toplama fonksiyonunu kullanarak sonuç olarak bir toplam değeri üretir. COMPUTE
deyimi her SELECT ifadesiyle kullanılır. COMPUTE BY ise ORDER BY deyimine gerek
duyar.

Örnek:
Öğrenci notları tablosundaki öğrenci numarasına göre ortalama sütunundaki değerleri
toplayarak bir sonuç üreten T-SQL kodlarıdır.

SELECT ogrno, ort


FROM Ogr_Notlar
ORDER BY ogrno
COMPUTE SUM(ort)

Resim 2.5: COMPUTE BY deyiminin kullanımının sonucu

2.4.3. Tarih ve Zaman Fonksiyonları

Tarih ve zaman üzerinde işlem yapmayı sağlayan fonksiyonlardır.

 GETDATE () Fonksiyonu

Şimdiki tarih ve saat değerini gösterir.

Örnek:
SELECT GETDATE()

Resim 2.6: Sistem tarih ve saatinin gösterilmesi

27
 DATEADD () Fonksiyonu

Verilen bir tarihe istenilen sayıda bir tarih bilgisi eklemek için kullanılır.

DATEADD fonksiyonunda
dd gün
mm ay
yy yıl anlamındadır.

Örnek:
Belirtilen tarih bilgisine 90 gün ekleyen T-SQL kodudur.

SELECT DATEADD(dd, 90, '02.10.2007')

Resim 2.7: Tarihe gün eklenmesi

SELECT DATEADD(mm, 2, '02.10.2007')

Resim 2.8:Tarihe 2 ay eklenmiştir.

SELECT DATEADD(yy, 2, '02.10.2007')

Resim 2.9: Tarihe 2 yıl eklenmiştir.

 DATEDIFF () Fonksiyonu

Belirtilen iki tarih arasındaki gün sayısını göstermektedir.

Örnek:
SELECT DATEDIFF(dd, '04.04.1974', '02.10.2007')

Resim 2.10: İki tarih arasındaki gün sayısının gösterimi

Ayrıca hafta için wk, saat için hh, dakika için mi, saniye için ss kullanılabilir.

28
 DATEPART () Fonksiyonu

Tarihle ilgili sayısal bilgilerin alınmasını sağlar.

Örnek:
SELECT DATEPART(dd, '01.04.1974')

SELECT DATEPART(mm, '01.04.1974')

SELECT DATEPART(yy, '01.04.1974')

2.4.4. Karakter Fonksiyonları

Karakter alanlarla ilgili işlem yapmak için bu fonksiyonlar kullanılır.

 CHAR ()

ASCII kodu verilen karakteri görüntüler.

SELECT CHAR(65) A harfini verir.

SELECT ASCII(A) 65 rakamını verir. Değer int tipindedir.

 CHARINDEX()

Bir metin içerisindeki metin parçasını istenilen konumdan itibaren arar.

SELECT CHARINDEX ('bu',@soyad,1)

Resim 2.11: CHARINDEX () fonksiyonunun kullanımı

29
 LEFT ()

Metnin baş taraftan itibaren istenilen sayıdaki harflerini alır.

SELECT LEFT (@ad,2)

Resim 2.12: LEFT () fonksiyonunun kullanımı

 LEN ()

Metnin uzunluğunu veren fonksiyondur.

SELECT LEN(@soyad)

Resim 2.13: LEN () fonksiyonunun kullanımı

 LOWER ()

Metni küçük harfe çevirir.

Resim 2.14: LOWER () fonksiyonunun kullanımı


30
 LTRIM ()

Metnin başında bulunan boşlukları siler.

Resim 2.15: LTRIM () fonksiyonunun kullanımı

 RIGHT ()

Metnin sonundan istenilen kadar karakteri almak için kullanılır.

Resim 2.16: RIGHT () fonksiyonunun kullanımı

 RTRIM ()

Metnin sonundaki boşlukları siler.

Resim 2.17: RTRIM () fonksiyonunun kullanımı

31
 REVERSE ()

Metni ters çevirir.

Resim 2.18: REVERSE() fonksiyonunun kullanımı

 SUBSTRING ()

Bir metinde belirtilen karakterden itibaren belirli sayıda karakter almak için kullanılır.

Resim 2.19: SUBSTRING () fonksiyonunun kullanımı

 UPPER ()

Metnin tümünü büyük harfe çevirir.

Resim 2.20: UPPER () fonksiyonunun kullanımı

32
2.5. SQL Denetim Deyimleri
Birden fazla komutu aynı anda işletebilmek için SQL’de bloklar kullanılmaktadır.
Tüm programlama dillerinde olduğu gibi akış kontrollerinde ve döngü yapılarında kullanılan
komutlar birden fazla ise mutlaka BEGIN..END bloğunda yazılmalıdır.

2.5.1. IF..ELSE Yapısı

Bir deyimin işletilmesini belli bir koşula bağlar.

 Kullanımı

IF koşul
{ deyim }
[ ELSE
{ deyim} ]

Örnek:

Resim 2.21: Öğrenci notları tablosu

Öğrencilerin not ortalamalarına göre ortalaması 85’in üzerinde olanların durumu için
“PEKİYİ”, 85’ten küçük olanlar için ise “İYİ” yazdıran T-SQL kod satırlarıdır.

Resim 2.22: IF..ELSE yapısının kullanılması ve sonucu


33
2.5.2. CASE Yapısı

Case yapısı, birçok durum için dallanmaya müsait bir yapıdır.

 Kullanımı

CASE değer
WHEN değer THEN işlem
WHEN değer THEN işlem
ELSE işlem
END

Örnek

Kütüphanedeki kitapların mevcut olup olmadığını gösteren basit bir T-SQL kodlarıdır.

Tablonun Resim 2.23’teki gibi olduğunu varsayınız.

Resim 2.23: Kütüphane tablosu

Kitapların kütüphanede olup olmadığı KitapDurumu sütununda belirtilecektir.

Resim 2.24: Case yapısının kullanımı

Case yapısı kullanılarak kitap durumları KitapDurumu sütununa yazdırılmıştır.

34
2.5.3. WHILE Döngüsü

Tekrar gerektiren işlemlerde istenilen şart gerçekleşinceye kadar işlem yapmaya


olanak sağlar. While ile bir işlemi istenilen kadar tekrarlatabilirsiniz. Genel yapısı şu
şekildedir:

WHILE şart
BEGIN
Tekrarlanması gereken kodlar
END

Şart gerçekleşinceye kadar BEGIN ile END arasına yazılan kodlar işlem görür.

Örnek:

Sayaç değişkeni 5 değerini alıncaya kadar tanımlanan toplam değişkenini beşer beşer
arttıran programın T-SQL kod satırlarıdır.

Resim 2.25: Kod satırları

Execute edilmesi sonucunda ekran görüntüsü Resim 2.26’daki gibi olur.

Resim 2.26: Sonuç ekranı

35
 BREAK Komutu

İstenilen şart sağlandığında WHILE döngüsünden çıkmak için BREAK komutu


kullanılır. Programın çalışması WHILE’ın END’inin altındaki satırdan çalışmaya devam
eder.

Örnek:

Sayacın 3 olması durumunda WHILE döngüsünden çıkıp toplamı ve sayacın değerini


yazdıran T-SQL kodlarıdır.

Resim 2.27: Kod satırları

Execute edilmesi sonucunda ekran görüntüsü Resim 2.28’deki gibi olur.

Resim 2.28: Sonuç ekranı

 CONTINUE Komutu

Programın çalışmasını WHILE yapısının başına göndermek için kullanılan bir


komuttur.

36
Örnek:
Sayaç değişkenin 3 değeri hariç diğer değerleri ve toplamı yazdıran T-SQL kodlarıdır.

Resim 2.29: Kod satırları

Execute edilmesi sonucunda ekran görüntüsü Resim 2.30’daki gibi olur.

Resim 2.30: Sonuç ekranı

Sonuç ekranında 3 değerinin yazılmadığını görünüz.

37
UYGULAMA FAALİYETİ
UYGULAMA FAALİYETİ -1

İşlem Basamakları Öneriler


 Tablonun sütun adları ve veri türleri Ogr_No
int, Ad VARCHAR(15), Soyad
VARCHAR(20), Cinsiyet VARCHAR(1),
Yas int olarak belirleyebilirsiniz.

 Veri tabanınızda “Sinif” adında bir


tablo oluşturunuz.

Resim 2.31: Tablonun oluşturulması

 Tabloya beş adet kayıt girişi yapınız.

Resim 2.32: Tabloya kayıtların eklenmesi

 Yaşı 17’den küçük olan öğrencileri


seçiniz.
Resim 2.33: Yaşı 17’den küçük öğrenciler

 Cinsiyeti erkek olmayan öğrencileri


seçiniz.
Resim 2.34: Cinsiyeti E olmayan öğrenciler

 Soyadı “K” ile başlayan öğrencileri


seçiniz.
Resim 2.35: Soyadı “K” ile başlayanlar

38
 Yaşı 17’den büyük kız öğrencileri
seçiniz.
Resim 2.36:Yaşı 17’den büyük kız öğrenciler

 Adı “Ayşe” olmayanları seçiniz.


Resim 2.37: Adı “Ayşe” olmayanlar

 Sınıf tablosunda yaş toplamlarını


hesaplatınız.
Resim 2.38: Yaş toplamları

 Yaşları 17 olan öğrencilerin yaş


toplamlarını hesaplatınız.
Resim 2.39: Yaşı 17 olanların yaş toplamları

 Öğrencilerin yaş ortalamasını


hesaplatınız.
Resim 2.40: Yaş ortalamaları

 Öğrencilerin yaşları içinde en büyük


yaş değerini seçiniz.
Resim 2.41: En büyük yaş değeri

 Öğrenciler yaşları içinde en küçük


 SELECT MIN(Yas) FROM Sinif
yaş değerini seçiniz.

 Tabloda kaç öğrenci olduğunu


hesaplatınız. Resim 2.42: Öğrenci sayısının bulunması

 Sadece öğrenci numaralarını seçiniz.


Resim 2.43: Sadece öğrenci numaralarının seçimi

39
 Sadece öğrenci numaralarını ve
yaşlarını seçiniz.
Resim 2.44: Sadece öğrenci numaraları ve yaşların
seçimi

 Yaşı 17’den küçük olanları, ad ve


soyadlarıyla beraber seçiniz.
Resim 2.45: Ad ve soyadlarıyla yaşı 17’den küçük
olanların seçimi

 Yaşı 16’dan büyük olanları, öğrenci


numaraları ve cinsiyetleriyle beraber
seçiniz. Resim 2.46: Öğrenci numaraları ve cinsiyetleri
yaşı 16’dan büyük olanların seçimi

40
UYGULAMA FAALİYETİ - 2

İşlem Basamakları Öneriler


 Sistem tarih ve saatini
 GETDATE() fonksiyonunu kullanabilirsiniz.
görüntüleyiniz.
 DATEADD () ve
 Sistem tarihine 120 gün ekleyiniz. GETDATE()fonksiyonlarını aynı anda
kullanabilirsiniz.
 DATEADD () ve GETDATE
 Sistem tarihine 10 ay ekleyiniz.
()fonksiyonlarını aynı anda kullanabilirsiniz.
 DATEADD () ve
 Sistem tarihine 1 yıl ekleyiniz. GETDATE()fonksiyonlarını aynı anda
kullanabilirsiniz.
 DATEDIFF () ve
 29 Ekim 1923 ile günümüz arasında
GETDATE()fonksiyonlarını aynı anda
kaç gün olduğunu bulunuz.
kullanabilirsiniz.
 DECLARE komutunu kullanabilirsiniz.
 Karaktersel türde ve uzunlukları 50 Değişken adları olarak da @kelime1,
olan üç değişken tanımlayınız. @kelime2 ve @kelime3’ü
tanımlayabilirsiniz.
 @kelime1 değişkenine “Pamuk”
değerini, @kelime2 değişkenine  SET deyimini kullanabilirsiniz.
“Kale” değişkenini atayınız.
 @kelime1 ve @kelime2
değişkenlerinin içeriğini @kelime3  SET deyimiyle + operatörünü
değişkenine SET deyimini kullanarak kullanabilirsiniz.
atayınız.
 Değişkenlerin içeriğini mesaj
 PRINT komutunu kullanabilirsiniz.
penceresine yazdırınız.
 @kelime1 ve @kelime2
 PRINT komutuyla + operatörünü
değişkenlerinin içeriğini birleşik
kullanabilirsiniz.
olarak mesaj penceresine yazdırınız.
 @kelime3 değişkeninin ilk dört
 LEFT() fonksiyonunu kullanabilirsiniz.
karakterini seçiniz.
 Yeni bir değişken tanımlayarak
 SET deyimini ve LEFT () fonksiyonunu aynı
@kelime3 değişkeninin ilk dört
anda kullanabilirsiniz.
karakterini bu değişkene atayınız.
 Elde ettiğiniz bu değeri mesaj
 PRINT komutunu kullanabilirsiniz.
penceresine yazdırınız.
 @kelime3 değişkeninin içeriğinin
 LEN() fonksiyonunu kullanabilirsiniz.
uzunluğunu bulunuz.
 Tüm değişkenlerin içeriğini büyük
 UPPER () fonksiyonunu kullanabilirsiniz.
harfe çeviriniz.
 Yeni bir değişken tanımlayarak  SET deyimini ve RIGHT()fonksiyonunu

41
@kelime3 değişkeninin sağından kullanabilirsiniz.
dört karakter seçiniz ve bu değişkene
atayınız.
 Yeni değişkenin tüm karakterlerini
 LOWER () fonksiyonunu kullanabilirsiniz.
küçük harfe çeviriniz.
 @kelime3 değişkeninin altıncı
 SUBSTRING () fonksiyonunu
karakterinden başlayarak 3 karakter
kullanabilirsiniz.
seçiniz.

42
UYGULAMA FAALİYETİ - 3

İşlem Basamakları Öneriler

 “int” veri türünde iki tane değişken


 DECLARE ifadesini kullanabilirsiniz.
tanımlayınız.

 Bu iki değişkene iki tam sayı


 SET ifadesini kullanabilirsiniz.
atayınız.

 IF yapısını kullanabilirsiniz.

 Eğer birinci sayı ikinci sayıdan


büyükse mesaj penceresine “Birinci
sayı ikinci sayıdan büyüktür.”
cümlesini yazdırınız.

Resim 2.47: If yapısı

 Birinci sayı ikinci sayıdan büyük


olmayabilir. Bunun ELSE bloğuyla
diğer durumu da göz önüne alarak
“Birinci sayı ikinci sayıdan Resim 2.48: ELSE bloğu
küçüktür.” cümlesini yazdırınız.

 Değer atanan iki değişkenin


toplamını yeni bir değişken
tanımlayarak toplatınız. Resim 2.49: İki sayının toplamı

 Eğer iki sayının toplamı 5’ten


büyükse “İki sayının toplamı 5’ ten
büyüktür.” mesajını yazdırınız. Resim 2.50: Toplamın karşılaştırılması

 İki sayının toplamı 5’ten küçük


olabilir. Bu yüzden oluşabilecek
diğer durumu da kontrol ettiriniz.
Resim 2.51: Diğer durum kontrolü
43
 İki sayının toplamının 9’dan büyük
olması durumunda toplam
değişkenini 10 ile çarpan, 10’dan
küçük olması durumunda 2 ile çarpan
CASE yapısını yazınız.
Resim 2.52: CASE yapısı

 CASE işlemi sonucunu mesaj olarak


görüntüleyiniz.
Resim 2.53: İşlemin sonucu

 “int” veri türünde sayac ve


modtoplam adında iki değişken
tanımlayınız ve ilk değerlerini 0
(sıfır) olarak atayınız.
Resim 2.54: Değişken tanımlama ve ilk değer
atama

 “sayac” değişkeni yukarıda


hesapladığınız “toplam”
değişkeninden küçük olduğu sürece
“sayac” değişkenin 2’ye göre
modunu toplayan WHILE döngüsünü
yazınız. “sayac” değişkenini beşer
Resim 2.55: While döngüsü kullanımı
beşer artırınız.

 Elde ettiğiniz mod alma işleminin


sonucunu, yani “modtoplam”
değişkeninin sonucunu mesaj olarak
yazdırınız. Resim 2.56: Mod işlemi sonucu

 SELECT 'Mod işlemi toplamları sonucu='+ CONVERT(VARCHAR,@modtoplam)


şeklinde de yazılabilir. CONVERT() fonksiyonu veriyi bir formattan başka bir formata
çevirmek için kullanılır. Böylece “int” türdeki “@modtoplam” değişkeninin içeriği
karaktersel veri türüne çevrilmiştir.

44
Sorgunun tümü aşağıda verilmiştir:

DECLARE @sayi1 int


DECLARE @sayi2 int

SET @sayi1=3
SET @sayi2=6

IF @sayi1>@sayi2
BEGIN
PRINT 'Birinci sayı ikinci sayıdan büyüktür'
END
ELSE
PRINT 'İkinci sayı birinci sayıdan büyüktür'

DECLARE @Toplam int


SET @Toplam=@sayi1+@sayi2

IF @Toplam>5
PRINT 'İki sayının toplamı 5 ten büyük'
ELSE
PRINT 'İki sayının toplamı 5 ten küçük'

SELECT @Toplam=
CASE
WHEN @Toplam>9 THEN @Toplam*10
WHEN @Toplam<10 THEN @Toplam*2
END

PRINT 'CASE işlemi sonucu :'


PRINT @Toplam

DECLARE @sayac int


DECLARE @modtoplam int

SET @sayac=0
SET @modtoplam=0

WHILE (@sayac<@toplam)
BEGIN
SET @sayac=@sayac+5
SET @modtoplam=@modtoplam+(@sayac%2)
END

PRINT 'Mod işlemi toplamları sonucu='


PRINT @modtoplam

45
ÖLÇMEVE
ÖLÇME VEDEĞERLENDİRME
DEĞERLENDİRME

Aşağıdaki soruları dikkatlice okuyarak doğru/yanlış seçenekli sorularda uygun


harfleri yuvarlak içine alınız. Seçenekli sorularda ise uygun şıkkı işaretleyiniz. Boşluk
doldurmalı sorularda boşluklara uygun cevapları yazınız.

1. Birden fazla komutu aynı anda işletebilmek için ……………… bloğu kullanılır.

2. Tablodaki kayıtların sayısını bulmak için ………………. fonksiyonu kullanılır.

3. T-SQL’de hangi veri tabanıyla çalıştığınızı belirtmek için ……….. komutu kullanılır.

4. Verileri bellekte geçici olarak saklayan değerlere……………… denir.

5. Metni küçük harfe çevirmek için LOWER(), büyük harfe çevirmek için UPPER()
fonksiyonu kullanılır (D/Y).

6. Bir karaktersel bilgide arama yaparken aşağıdaki operatörlerden hangisi kullanılır?


A) * B) + C) % D) &

7. Aşağıdakilerden hangisi değişkenlere değer atama ifadelerinden değildir?


A) SET B) SELECT C) INSERT INTO D) DECLARE

8. Aşağıdakilerden hangisi <> operatörü yerine geçen mantıksal operatördür?


A) AND B) OR C) NOT D) BETWEEN

9. Sorgular önce ayrıştırılır daha sonra çalıştırılır. (D/Y)

10. Şart sağlandığında döngüden çıkmak için …………. komutu kullanılır.

11. Metnin solundaki boşlukları atmak için LEFT(), sağındaki boşlukları atmak için
RIGHT() fonksiyonu kullanılır. (D/Y)

12. T-SQL’de değişken tanımlarken ……................. komutu ve değişkenin önüne ….. ön


eki yazılır.

13. DEBUG işlemi için ihtiyaç duyulan ve sonuçları mesaj penceresinde yazan komut
……………’tir.

14. Aşağıdakilerden hangisi belirtilen iki tarih arasındaki gün sayısını elde etmek için
kullanılan tarih fonksiyonudur?
A) GETDATE() B) DATEADD()
C) DATEDIFF() D)DATEPART()

46
15. Metni ters çevirmek için aşağıdaki fonksiyonlardan hangisi kullanılır?
A) REVERSE () B) TURN () C) ROTATE () D) TRANSLATE ()

16. Sorguların sırayla işleme tabi tutulmasına yığıt denir. (D/Y)

17. Aritmetiksel ortalama almak için AVG() fonksiyonu kullanılır .(D/Y)

18. Bir deyimin işletilmesini bir koşula bağlayan yapı ………….. yapısıdır.

19. Tablodaki kayıtları gruplamak için GROUP BY, koşul vermek için HAVING ifadeleri
kullanılır. (D/Y)

20. Belirtilen metnin uzunluğunu bulmak için ……. fonksiyonu kullanılır.

DEĞERLENDİRME

Cevaplarınızı cevap anahtarı ile karşılaştırınız. Doğru cevap sayınızı belirleyerek


kendinizi değerlendiriniz. Yanlış cevap verdiğiniz ya da cevap verirken tereddüt yaşadığınız
sorularla ilgili konulara geri dönerek tekrar inceleyiniz. Tüm sorulara doğru cevap
verdiyseniz diğer öğrenme faaliyetine geçiniz.

47
MODÜL DEĞERLENDİRME

MODÜL DEĞERLENDİRME
PERFORMANS TESTİ (YETERLİK ÖLÇME)

Modül ile kazandığınız yeterliği, öğretmeniniz işlem basamaklarına göre 0 ile 4 puan
arasında olacak şeklinde değerlendirecektir.

Değerlendirme Ölçütleri Puan


1. Veri tabanı oluşturabilme
2. Sorguyu çalıştırabilme
3. Tablo oluşturabilme
4. Sütunları veri türleriyle beraber tanımlayabilme
5. Sütun ekleyebilme
6. Tabloya bilgi girebilme
7. Herhangi bir bilgiyi güncelleyebilme
8. Bilgileri artan veya azalan sırada görüntüleyip seçebilme
9. Login oluşturabilme
10. User oluşturabilme
11. Kısıtlama verebilme
12. Tabloda sorgu yapabilme
13. Sütunlar üzerinde matematiksel fonksiyonları kullanabilme
14. Gruplandırma ve koşula göre gruplandırma yapabilme
15. Tarih-saat fonksiyonlarını kullanabilme
16. Değişken tanımlayabilme
17. Değişkenlere değer atayabilme
18. Karaktersel fonksiyonları kullanabilme
19. IF-ELSE ve CASE yapısını kullanabilme
20. WHILE döngüsünü kullanabilme
Toplam (100 puan olabilir.)

DEĞERLENDİRME

Yaptığınız değerlendirme sonucunda eksikleriniz varsa öğrenme faaliyetlerini


tekrarlayınız.

Modülü tamamladınız, tebrik ederiz. Öğretmeniniz size çeşitli ölçme araçları


uygulayacaktır. Öğretmeninizle iletişime geçiniz.

48
CEVAP ANAHTARLARI

CEVAP ANAHTARLARI
ÖĞRENME FAALİYETİ-1 CEVAP ANAHTARI

1 B
2 Yanlış
3 FOR LOGIN
4 C
5 B
6 Veri Kontrol Dili
7 Doğru
8 Login
9 D
10 Yanlış

ÖĞRENME FAALİYETİ-2 CEVAP ANAHTARI

1 BEGIN-END
2 COUNT()
3 USE
4 Değişken
5 Doğru
6 C
7 D
8 C
9 Doğru
10 BREAK
11 Yanlış
12 DECLARE ve @
13 PRINT
14 C
15 A
16 Yanlış
17 Doğru
18 IF-ELSE
19 Doğru
20 LEN()

49
KAYNAKÇA

KAYNAKÇA
 GÖZÜDELİ Yaşar, “Yazılımcılar için SQL Server 2005 ve Veri Tabanı
Programlama”, Seçkin Yayıncılık, Ankara, 2006.
 [Link]
 [Link]

50

You might also like