SQL DERS NOTLARI

I. SQL DEYİMLERİ

SQL deyimleri veritabanlarıüzerinde çeşitli işlemleri yerine getirirler. Veritabanı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 kategorilendirilir:

  • DDL (Data Definition Language): Veri tanımlama deyimleri.
  • DML (Data Manuplation Language) : Veri düzenleme dili.
  • DCL (Data Control Language): Veri kontrol dili.

A. DDL (DATA DEFİNİT

CREATE DEYİMİ İON LANGUAGE) DEYİMLERİ

DDL deyimleri veritabanıüzerinde nesne yaratmak için kullanılırlar. En yaygın kullanılan DDL deyimleri şunlardır: CREATE ,ALTER,DROP

CREATE deyimi tablo ve view gibi bir veritabanınesnesi yaratmayısağlar.

Tablo Yaratmak:

Veritabanıüzerinde bir tablo yaratmak için CREATE deyimi kullanılır.

Yapısı: CREATE <tablo adı>

Örnek: CREATE TABLE Musteri

(
   mus_id              char(4) NOT NULL 
   mus_ad            varchar(40)     NULL,
   ili                         varchar(20)     NULL,
   ulke                    char(2) NULL,
   adres  varchar(30)     NULL
)

NOT: Char, varchar, integer, numeric gibi sözcükler tablo alanlarındaki temsil edilecek verinin türünü belirtir. SQL’de SMALLINT, VARCHAR, DECIMAL(x,y), FLOAT(x;y), DATE, LOGICAL, TIME, TIMESTAMP, GRAPHIC(n) gibi alan veri türleri vardır.

Örnek: CREATE TABLE personel

(
Sskno Integer,
Adi Varchar(20) not null,
Soyadi Varchar(20) not null,
Departman integer
) 

NOT: Bu dokümanlar Faruk Çubukçu tarafından hazırlanmıştır. Bütün haklarısaklıdır. Ticari olarak kullanılamaz. Bakınız: www.farukcubukcu.com

Adıgeçen ve telif haklıolan ürünler bilgi amaçlıolarak kullanılmıştır.

ALTER DEYİMİ

Daha önce yaratılmış nesnenin değiştirilmesini sağlar. Örneği bir tablonun tasarımınıdeğiştirmek gibi.

Örnek: ALTER TABLE Musteri

ADD tel varchar(20) NOT NULL

Yukarıdaki deyimde müşteri tablosunun alanlarına tel adlıbir alan daha eklenmiştir.

DROP DEYİMİ

Bir nesnesin silinmesini sağlar.

Örnek: DROP TABLE MUSTERI

Müşteri tablosunun verilerini ve tabloyu siler.

B. DML (DATA MANIPULATION LANGUAGE) DEYİMLERİ

Veritabanıiçindeki verileri elde etmek ve değiştirmekle ilgili SQL deyimleridir.

1. SELECT

2. INSERT

3. UPDATE

4. DELETE

SELECT DEYİMİ

Veritabanındaki verilere erişmenin, diğer bir deyişle onlarıgörmenin ya da onlarıelde etmenin en sık kullanılan yöntemidir. Genellikle bir ya da daha çok tablonun bütün alanlarıya da belli alanlarıiçin SELECT deyimi yazılır.

Temel Yapısı: SELECT [ALL] [DISTINCT] liste [INTO yeni tablo] FROM [tablo]

[WHERE ifade]

[GROUP BY ifade]

[HAVING ifade]

[ORDER BY ifade]

[COMPUTE ifade]

Seçeneklerin Anlamları:

ALL sözcüğü bütün satırların sonuç listesinde görünmesini sağlar.

DISTINCT sözcüğü sadece tek olan (unique) kayıtların sonuç listesinde yer almasınısağlar.

liste parametresi veriden seçilecek kolonu (sütunu) belirtir.

INTO sözcüğü yeni bir tablo yaratmayısağlar.

yeni tablo parametresi sorgu sonucu yaratılacak tabloyu belirtir.

FROM sözcüğü belli bir tablonun seçilmesini sağlar.

tablo parametresi ise sorgulanacak olan tablo ya da tabloları, görünümleri belirtir.

WHERE bir koşulu belirterek sadece o kuşula uyan kayıtların seçilmesini sağlar.

GROUP BY Kayıtların gruplanmasınısağlar. HAVING deyimiyle de ara toplamların alınmasınısağlar.

HAVING sözcüğü de kayıtlarda kısıtlama yapar ancak hesaplamayıetkilemez.

ORDER BY sözcüğü ise belirtilen kolona göre listelenen kayıtlarısıralamayısağlar. Sıralama artan (ASC) ya da azalan (DESC) olabilir

COMPUTE sözcüğü ise hesaplama yapar. Tipik olarak SUM, AVG, MIN, MAX, COUNT gibi fonksiyonlarıkullanarak hesaplama yapar.

Örnek: SELECT * FROM musteri

Yukarıdaki deyim ile musteri tablosundaki bütün bilgiler elde edilir. SELECT deyiminin ardından kullanılan * (asterisk) işareti bütün kayıtlar anlamına gelir. Bu deyimin aynısı(aynısonucu vereni) şu şekilde de yapılabilir:

Örnek: SELECT kod, ad, soyad, grup, il, bakiye FROM musteri

Müşteri tablosu:

kodu

Ad

Soyad

grup

il

bakiye

1

Ahmet

Uzun

ithal

İZMİR

300000

2

Ayşe

Yılmaz

ithal

ANKARA

400000

3

Mehmet

Yılmaz

ihraç

ANKARA

100000

4

Hüseyin

Uzun

ihraç

İZMİR

600000

5

Nuri

Gezer

ithal

İZMİR

900000

6

Fatma

Örnek

ihraç

İSTANBUL

300000

Sorgunun sonucu:

1

Ahmet

Uzun

ithal

İZMİR

300000

2

Ayşe

Yılmaz

ithal

ANKARA

400000

3

Mehmet

Yılmaz

ihraç

ANKARA

100000

4

Hüseyin

Uzun

ihraç

İZMİR

600000

5

Nuri

Gezer

ithal

İZMİR

900000

6

Fatma

Örnek

ihraç

İSTANBUL

300000

SELECT deyimi ile sadece belli kolonlar (alanlar) da seçilebilir:

ARAMA : Tablo: Arama Kriterleri:

Karşılaştırma operatörleri

(=, >, <, >=, <>, !=, !<, !>

Aralık belirtme

BETWEEN ve NOT BETWEEN

Liste

IN ve NOT IN

String karşılaştırma

LIKE ve NOT LIKE

Bilinmeyen değerler

IS NULL ve IS NOT NULL

ÖRNEK: SELECT * from musteri WHERE bakiye BETWEEN 100000 AND 3000000

Aynıanlamda: SELECT * from musteri WHERE bakiye <= 100000 AND>= 3000000

ÖRNEKLER: SELECT * FROM MUSTERI WHERE borcu BETWEEN 100 AND 2000 AND grup=’özel’

Yukarıdaki sorgulamada grubu ‘özel’ olan ve ayrıca da borcu değerinin 100 ile 200 arasında olanılistelenir.

ARİTMETİK İşLEMLER

Aritmetik işlemleri gerçekleştirmek için belli operatörler kullanılır:

OPERATÖRLER AÇIKLAMALARI

+ Toplama ,

- Çıkarma

/ Bölme ,

* Çarpma

SELECT borcu, borcu*2 FROM MUSTERI

VERİLERİ SIRALAMAK

SELECT deyimi ile elde edilen veriler istenirse sıralanabilir. Sıralama belirtilen bir ya da daha fazla kolona göre yapılır. Bunun dışında sıralama ASC (ascending-artan) ya da DESC (descending-azalan) olarak belirtilebilir.

Kullanım Biçimi: SELECT kolon_listesi

ORDER BY kolon adıASC ya da DESC

ORDER BY sözcüğü ise verilerin istenilen alan göre sıralıolarak listelenmesini sağlar.

SELECT * FROM musteri ORDER BY ad

Yukarıdaki deyim ile müşteri tablosundaki bütün kayıtlar ad alanına göre sıralıolarak listelenirler.

GRUPLANDIRMA İşLEMLERİ

Gruplama seçenekleri tablo satırlarının belli alanlarına göre gruplandırılmasınısağlar.

GROUP BY sözcüğü ise yapılan bir gruplandırma işlemine göre listeleme sağlar.

Örnek: SELECT grup, sum(bakiye) FROM musteri

GROUP BY grup

Yukarıdaki örnekte müsteri tablosundaki bakiye alanıgrup kodu bazında toplanır.

GROUP BY ile yapılan gruplandırma (alt toplamlar) işlemi içinde ayrıca HAVING sözcüğü kullanılarak bir koşul da verilebilir.

SELECT grup, sum(bakiye) FROM musteri

GROUP BY grup

HAVING il = ‘İZMİR’

Yukarıdaki deyim ile müşteri tablosundaki bütün kayıtların bakiye bilgiler gruplarına göre ara toplam alınır, bir de il bilgisine göre filtrelenir.

NOT: Gruplama yapılmayan he sütun GROUP BY deyiminde kullanılmasıgerekir:

Örnek: SELECT PRODUCTID, CATEGORYID, SUM (UNITPRICE) FROM PRODUCTS

GROUP BY PRODUCTID, CATEGORYID

COMPUTE SÖZCÜĞÜ

COMPUTE sözcüğü toplama fonksiyonunun kullanarak query sonucunda bir toplam satırıüretir. COMPUTE BY sözcüğü ise ek toplam satırlarıyaratır.

Kullanım Biçimi: COMPUTE fonksiyon (kolon_adı)

Örnek: Sipariş tablosu:

tarih

Mkodu

ürün

adet

fiyatı

1/1/1999

1

X-TV

10

100000

2/1/1999

1

X-TR

10

100000

2/1/1999

2

X-TV

15

100000

2/1/1999

3

X-KT

10

200000

3/1/1999

3

X-KT

20

150000

2/2/1999

1

X-TV

22

400000

SELECT ürün, adet

FROM siparis

ORDER BY ürün

COMPUTE SUM(adet)

Yukarıdaki örnekte adet kolonunun toplamıalınır.

Sonucu:

ürün adet

X-KT 10

X-KT 20

X-TR 10

X-TV 10

X-TV 15

X-TV 22

Sum

===================

87

INSERT DEYİMİ

Tabloya veri girmek için kullanılır.

INSERT INTO <tablo adı>

(sütunlar listesi) VALUES (değerler listesi)

ÖRNEK: INSERT INTO CARIANA

(kodu, adi, grubu, adresi)

VALUES (’600′, ‘FARUK’, ‘A’, ‘76 sokak no 5′)

Örnek: INSER INTO deyimi ile bir tabloyu diğer bir tablodan doldurmak:

use ornek

INSERT INTO cariyedekf

(kodu, adi, grubu, adresi)

(SELECT kodu, adi,

case grubu

when ‘A’ THEN ‘ITHAL’

when ‘B’ THEN ‘YERLİ’

ELSE ‘DİĞER’

end,

adresi from cariana)

UPDATE DEYİMİ:

Tablodaki verileri güncellemek için kullanılır. Genellikle güncelleştirilecek satırıbelirtmek için WHERE sözcüğüyle kullanılır.

Mevcut bir tablodaki satırlarıdeğiştirmek için UPDATE deyimi kullanılır. UPDATE deyimi sadece bir tablo üzerinde kullanılmalıdır. UPDATE deyimi ile SET ve WHERE sözcüğü kullanılır.

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

Kullanım biçimi:

UPDATE tablo

SET kolon = ifade

WHERE arama_koşulu

Örnek: Aşağıdaki örnekte fiyat değerini %10 artırır.

UPDATE siparis

SET fiyatı= fiyatı* 1.1

Örneğin bir kaydıdüzeltmek istersek ;

UPDATE Musteri

SET Ad = ‘Nuri Yılmaz’

WHERE kod=’1′;

Örneğin tüm musterilerin bakiyesini %10 artırmak istediğimizde;

UPDATE Musteri

SET bakiye=bakiye*1.1;

DELETE DEYİMİ

Bir tablodaki verileri silmek için DELETE komutu kullanılır. Örneğin Öğrenci tablosundaki tüm verileri silmek için;

DELETE * from musteri;

Tabloda, bakiyesi 1000′den küçük olan müşterilerin satırlarınısilmek için:

DELETE * FROM musteri WHERE bakiye <=1000

Kullanım biçimi:

DELETE tablo

WHERE arama_koşulu

Örnek: Tablodan satır silmek

Aşağıdaki örnekte müşteri tablosundan ‘B’ grubuna sahip olan müşteriler silinir.

DELETE musteri

WHERE grubu = ‘B’

C. DCL (DATA CONTROL LANGUAGE) DEYİMLERİ

Veritabanındaki kullanıcıhaklarınıdüzenlemek için kullanılan deyimlerdir. Örneğin GRANT, DENY, REVOKE gibi.

Örnek: USE Northwind

GRANT SELECT ON Stok TO PUBLIC
 
NOT: Bu dokümanlar Faruk Çubukçu tarafından hazırlanmıştır. Bütün haklarısaklıdır. Ticari olarak kullanılamaz. Bakınız: www.farukcubukcu.com

Adıgeçen ve telif haklıolan ürünler bilgi amaçlıolarak kullanılmıştır.

GRANT DEYİMİ

Aşağıdaki örnek Ayşe adlıkullanıcıveritabanıve tablo oluşturma izni verilir:

GRANT CREATE DATABASE, CREATE TABLE  TO  AYşE

GÖZDEN GEÇİRME


1. SQL deyimleri hangi gruplara ayrılır.

2. SELECT deyiminin kullanım şekillerini açıklayınız?

3. INSERT deyiminin amacınedir?

4. UPDATE deyiminin amaçlarınelerdir?

I. SQL FONKSİYONLARI

SQL Server’da Fonksiyonlar, hesaplamalarda ve özellikle sistem hakkında bilgi almada yaygın olarak kullanılan araçlardır. Transact-SQL (T-SQL) programlama dilinde değişik kategorilerle adlandırılan fonksiyonlar vardır. Bunlardan en yaygınıveriler üzerinde işlem yapan toplama ya da gruplama olarak adlandırabileceğimiz aggregate fonksiyonlarıdır.

A. GRUPLAMA FONKSİYONLARI

Gruplama (aggregate) fonksiyonlarıbir dizi değer üzerinde hesaplama yaparlar ve bir sonuç değer döndürürler. Toplama ya da gruplama fonksiyonlarıolarak adlandırabileceğimiz bu fonksiyonlar genellikle GROUP BY deyimi ile kullanılırlar.

Gruplama fonksiyonlarıaşağıdaki ifadeler içinde kullanılabilirler.

ï‚· SELECT deyiminin listesinden (bir subquery olarak)

ï‚· Bir COMPUTE ya da COMPUTE BY sözcüğü ile.

ï‚· Bir HAVING sözcüğü ile.

Transact-SQL programlama dilinde şu aggregate fonksiyonlarıkullanılır:

ï‚· AVG

ï‚· COUNT

ï‚· GROUPING

ï‚· MAX

ï‚· MIN

ï‚· SUM

ï‚· STDEV

ï‚· STDEVP

ï‚· VAR

ï‚· VARP

NOT: Bu dokümanlar Faruk Çubukçu tarafından hazırlanmıştır. Bütün haklarısaklıdır. Ticari olarak kullanılamaz. Bakınız: www.farukcubukcu.com

Adıgeçen ve telif haklıolan ürünler bilgi amaçlıolarak kullanılmıştır.

AVG (T-SQL) Fonksiyonu

Bir grup içindeki değerlerin ortalamasınıdöndürür. Null değerler dikkate alınmaz.

Kullanım Biçimi: AVG([ALL | DISTINCT] ifade)

Argümanları: ALL

Ortalama fonksiyonunu bütün değerlere uygular.

DISTINCT

İşlemin her tek değer için uygulanacağınıbelirtir. Diğer bir deyişle tekrar eden değerlerin yerine birisi kullanılır.

İfade : Sayısal bir değeri olan ifade ya da kolon adı.

Örnek: Aşağıdaki örnekte satış miktarlarıtoplanmakta ve ortalamasıalınarak iki ayrısonuç değeri verilmektedir:

USE Northwind