09-02-2007, 10:46 PM
SQL (STRUCTURED QUERY LANGUAGE)
Yapısal Sorgulama Dili olan SQL, ilişkisel veritabanlarındaki bilgileri sorgulamak için standart kullanımı olan bir dildir. Standart bir dil olmasına karşılık, çeşitli veritabanlarında SQL kullanımları arasında farklılıklar vardır. SQL komutları ile, tablolara yeni kayıt girme, varolan kayıtları sorgulama (arama ve listeleme), varolan bilgileri değiştirme ve varolan kayıtları silme işlemleri yapılabilir.
Üzerinde sql komutlarını uygulayacağımız, örnek olarak ozluk ve notlar tablosundan birkaç kayıt verilsin.
Ozluk tablosundaki alan isimleri ve örnek veriler;
ogr_no adi soyadi cinsiyeti
88050071 Muhittin Altınkaya E
89050020 Selda Anar K
91050099 Yahya Demircan E
Notlar tablosundaki alan isimleri ve örnek veriler;
ogr_no kodu donem sube vize final basari
88050071 A308 1998-99/2 A 45 60 60
88050071 A401 1998-99/1 B 50 94 94
89050020 A308 1998-99/2 A 50 50 50
89050020 A307 1998-99/1 A 80 40 45
91050099 A308 1997-98/2 A 20 60 50
91050099 A308 1998-99/2 B 60 60 66
91050099 A401 1998-99/1 A 80 80 94
91050099 A445 1997-98/1 A 0 0 0
91050099 A445 1998-99/1 A 60 60 66
Bu noktadan sonraki örnekleri yukarıdaki değerleri göz önünde tutarak inceleyiniz.
SQL FONKSİYONLARI
SQL’de kullanılan fonksiyonlar vardır, bu fonksiyonlar ekrana sadece tek değer görüntülerler.
SUM(DISTINCT] alan_adi) Belirtilen alan için toplam fonksiyonu (sayısal alanlarda)
COUNT(*) Toplam kayıt sayısı
COUNT(DISTINCT alan_adi) Belirtilen alana göre farklı olan kayıtların sayısı
MAX([DISTINCT] alan_adi) Belirtilen alanda en büyük değer
MIN(DISTINCT] alan_adi) Belirtilen alanda en küçük değer
AVG([DISTINCT] alan_adi) Belirtilen alanda ortalama değeri.
DISTINCT parametresi ile belirtilen alanda bulunan bilgilerden aynı olanlarından sadece birinin seçilmesini sağlar.
Örnek 1:
SELECT COUNT(*) FROM notlar.
Sonucunda ekrana gelecek kayıt sayısı 9 dur.
Örnek 2:
SELECT COUNT(DISTINCT ogr_no) FROM notlar.
Sql ifadesinde ekrana gelecek kayıt sayısı 3 olacaktır.
Örnek 3:
SELECT MAX(basari) FROM notlar.
En büyük basari notunu, ekrana 94 olarak görüntüler. En büyük değer kaç tane olursa olsun bir tanesi görüntülenir.
Örnek 4:
SELECT COUNT(*) FROM ozluk.
Ozluk tablosundaki kayıt sayısını 3 olarak verecektir.
SORGULAMA
SELECT [ALL|DISTINCT] { *|alan_adi_listesi}
[INTO değişken_listesi ]
FROM tablo-ismi
[WHERE koşul]
[GROUP BY alan_adi1 [ , alan_adi2] ...]
[HAVING search-condition]
[ORDER BY siralama_alanlari]
şeklinde genel bir ifadesi vardır.
Buradaki ve genelde bilgisayar dünyasında yardım (help) menülerinde kullanılan işaretler,
[ ] seçimlik
{ } zorunlu
< > zorunlu
| veya anlamına gelmektedir.
Şartsız kayıt sorgulama:
Herhangi bir tabloya ait bilgi alanlarındaki bilgilerin listesini almak için;
SELECT <alan adı [,alan adı1,...]> FROM <tablo adı>.
ifadesi kullanılır.
Örnek 1:
SELECT adi, soyadi FROM ozluk.
Ozluk tablosundaki tüm öğrencilerin adını ve soyadını ekrana görüntüleyecektir.
Örnek 2:
SELECT vize*10 FROM notlar.
Notlar tablosundaki tüm öğrencilerin vize notunu 10 ile çarpımını ekrana görüntüleyecektir. Burada vizelerin 10 ile çarpımı sadece ekrana görüntülenecek tabloda ise değişmeyecektir.
Örnek 3:
SELECT SUM(basari) FROM notlar.
Select sum(isdn_kapasite,isdn_kullanılan,pots_kapasite) from n02 where nod=corlu and nod=merzifon and nod=adana
(bu şartın gerçekleşmedi durumunda n02 tablosundaki verilen dğişkenlerin toplamı ekrana gelir)
Öğrencilerin başarı notlarının toplamını ekrana verecektir.
Örnek 4:
SELECT adi + soyadi FORMAT “x(25)” FROM ozluk.
Öğrencilerin adı ve soyadını bitişik yazan SQL ifadesidir.
Bu durumda iki alanın birleşmesi sonucunda karakter sayısı artacağı için yeni bir format belirtmek gerekir.Karakter alanlarda varsayılan görüntüleme 8 karakterdi, burada iki bilinin birleşmesi yeni bir bilgi alanı gibi davranacağından format belirtmek gereklidir.
Örnek 5:
SELECT * FROM notlar.
Notlar tablosundaki bütün bilgi alanlarının içeriklerini ekrana görüntüleyecektir (* joker gibi kullanılmaktadır,”*” ile kullanımda select ile from arasına başka ifade yazılmaz).
Örnek 6:
DEF VAR sayi AS INT
SELECT COUNT(*) INTO sayi FROM notlar.
Şeklinde bir kullanımla kayıt sayısı, “sayi” değişkeni içine aktarılmış olur, böylece elde edilen kayıt sayısı programın devamında amaca göre kullanılabilir.
Burada into parametresi kullanıldığı için sql sonucunda ekran hiçbir görüntü gelmeyecektir.
Örnek 7:
DEF VAR ksayisi AS INT.
DEF VAR ntoplam AS INT.
SELECT COUNT(*),SUM(basari) INTO ksayisi,ntoplam
FROM notlar.
Kayıt sayısı “ksayisi” değişkenine, basari notlarının toplamı da “ntoplam” değişkeni içine aktarılmış olacaktır.
Tek kayıt sorgulama:
Herhangi bir tabloya ait kayıtlardan birer tanesinin listesini almak için;
SELECT DISTINCT <alan adı [,alan adı1]> FROM <tablo adı>.
ifadesi kullanılır. Burada distinct’den sonra yazılan alanların aynı olanlardan birer tanesi listelenir.
Örnek 1:
SELECT DISTINCT kodu FROM notlar.
Sorgu sonucu listelenecek kayıtlar;
Kodu
A308
A401
A307
A445
Bu örnekte notlar tablosunda bir ders, birden fazla olmasına rağmen, sadece her dersten bir tanesi görüntülenir.
Örnek 1
SELECT DISTINCT kodu, ogr_no FROM notlar.
Sorgu sonucu olarak (örnek kayıtlardan)
kodu ogr_no
A308 88050071
A401 88050071
A308 89050020
A307 89050020
A308 91050099
A401 91050099
A445 91050099
Notlar tablosunda sadece kodu ve ogr_no alanındaki kayıtlardan aynı olanlardan birer tanesini listelenmiştir.
SQL ifadelerini yazarken eğer cümle bir satırı aşıyorsa, daha anlaşılır olması açısından alt alta yazarak devam edilebilir.
Sorgu sonucu dönen kayıtları sıralama:
Herhangi bir tablodaki kayıtları herhangi bir alan adına göre azalan (artan) sırada sıralayabilmek için;
SELECT <alan adı>
FROM <tablo adı>
ORDER BY <alan adı1> [,alan_listesi] DESC | ASC.
ifadesi kullanılır (varsayılan olduğu için artan sırada olacaksa ASC kullanılmaz).
Örnek 1:
SELECT ogr_no, adi, soyadi FROM ozluk
ORDER BY soyadi DESC.
Öğrencilerin numara , ad ve soyadlarını , soyadı sıralı olarak Z’den A’ya sıralayarak ekrana görüntüler.
Örnek 2:
SELECT ogr_no, basari FROM notlar ORDER BY basari DESC.
Öğrencinin numara ve başarı notlarını, başarı notuna göre azalan sırada ekran görüntüler.
Örnek 3:
SELECT ogr_no, basari FROM notlar ORDER BY basari
DESC,ogr_no DESC.
Öğrencinin numara ve başarı notlarını, başarı notuna göre azalan sırada listelerken notu aynı olanları da numarasına göre azalan sırada ekranda görüntüler.
Şartlı kayıt sorgulama:
Bir tabloda istenilen şarta uygun kayıtların listesi için;
SELECT <alan_adlari> FROM <tablo adı> WHERE <koşullar>
ifadesi kullanılır.
Örnek 1:
SELECT adi, soyadi, ogr_no FROM ozluk WHERE soyadı = “ “ .
Ozluk tablosundaki soyadı boş olan kayıtların ad,soyad ve numaralarını ekranda görüntüler.
Örnek 2:
SELECT ogr_no, basari FROM notlar WHERE basari = 100.
Notlar tablosundaki başarı notu 100 olan öğrencilerin numaralarını ve başarı notlarını listeler.
Bir alan içinde birden fazla değeri sağlayan kayıtları listelemek için;
Örnek 4:
SELECT adi, soyadi FROM ozluk WHERE soyadi = “demircan”
AND soyadi =”demirel”.
Bir alan içinde, birden fazla değeri sağlayan kayıtların listelenmesi, IN ifadesiyle daha kolay ve anlaşılır yazılabilir.
SELECT <alan_adlari> FROM <tablo adı>
WHERE <alan adı> IN (değer1, değer2).
ifadesi kullanılır.
Örnek 5:
SELECT adi, soyadi FROM ozluk
WHERE soyadi IN (“demircan”,”demirel”
.
Ozluk tablosunda soyadı demircan ve demirel olan öğrencilerin ad ve soyadlarını listeler.
Boş ve dolu alanlara göre sorgu:
Boş alanları listelemek için;
SELECT <alan adı> FROM <tablo adı> WHERE <alan adı> IS NULL.
Örnek 1:
SELECT ogr_no, adi, soyadi FROM ozluk
WHERE cinsiyeti IS NULL.
Cinsiyet alanı boş olan öğrencilerin numaralarını, ad ve soyadlarını listeler.
Boş olmayan alanları listelemek için;
SELECT <alan adı> FROM <tablo adı>
WHERE <alan adı> IS NOT NULL.
ifadeleri kullanılır.
Örnek 2:
SELECT ogr_no, adi, soyadi FROM ozluk
WHERE cinsiyeti IS NOT NULL.
Cinsiyet alanı boş olmayan olan öğrencilerin numaralarını, ad ve soyadlarını listeler.
Tam olmayan bilgiye göre sorgu:
İstenilen değer ile başlayan kayıtları listelemek için;
SELECT <alan adı> FROM <tablo adı>
WHERE <alan adı> LIKE “<deger>%”.
Örnek 1:
SELECT adi,soyadi FROM ozluk WHERE adi LIKE “A%”.
Adı “B” ile başlayan kayıtların adı ve soyadını listeler.
İstenilen değer ile biten kayıtları listelemek için;
SELECT <alan adı> FROM <tablo adı>
WHERE <alan adı> LIKE “%<deger>”.
Örnek 2:
SELECT adi,soyadi FROM ozluk WHERE adi LIKE “%A”.
Adı “A” ile biten kayıtların adı ve soyadını listeler.
İçinde herhangi bir yerde istenilen değer geçen kayıtları listelemek için;
SELECT <alan adı> FROM <tablo adı>
WHERE <alan adı> LIKE “%<deger>%”.
Örnek 3:
SELECT adi,soyadi FROM ozluk WHERE adi LIKE “%HY%”.
Adı içinde “HY” geçen kayıtların adı ve soyadını listeler.
İki Tabloyu Beraber Sorgulama (Tabloya Alias [Geçici İsim] Verme):<O:P</O:P
<O:P</O:P
SELECT <alanlar> FROM tablo1,tablo2 WHERE koşullar.
<O:P</O:P
Birden fazla tablodan aynı anda bilgi getirilmesi gerektiğinde, ortak alanlar üzerinden birleştirme işlemleri yapılır. Birleştirme işlemi koşullar bölümünde yapılır, ortak olan alanlar eşleştirilir.
<O:P</O:P
Örnek 1:
SELECT o.adi, o.soyadi, o.ogr_no, n.basari<O:P</O:P
FROM ozluk o,notlar n<O:P</O:P
WHERE o.ogr_no=n.ogr_no and n.kodu=’A308’.
<O:P</O:P
A308 dersinde final notu 100 olan öğrencilerin adlarını, soyadlarını, numaralarını ve başarı notlarını listeler. Burada “o” ozluk tablosuna, “n” notlar tablosuna verilmiş geçici isimlerdir. Bu geçici isimler sayesinde sql i daha anlaşılır ve kısa yazmak mümkündür.
<O:P</O:P
Örnek 2:
SELECT DISTINCT ogr_no, adi, soyadi
FROM ozluk o, notlar n
WHERE o.ogr_no = n.ogr_no AND n.kodu = “A206”.
<O:P</O:P
A206 dersini alan tüm öğrencilerin numaralarını, ad ve soyadlarını listeler.
<O:P</O:P
Kayıtları Gruplama:<O:P</O:P
<O:P</O:P
Kayıtları, belirli alanlara göre gruplayarak sorgu yapılmasını sağlar.
<O:P</O:P
Örnek 1:
SELECT kodu,count(*) FROM notlar
WHERE ogr_no = “91050099”
GROUP BY ogr_no,kodu.
<O:P</O:P
Bu örnekte 91050099 nolu öğrencinin, aldığı dersleri ve bu dersleri kaç kez aldığını listeler. Örnek kayıtlara göre aşağıdaki sonuç elde edilir.
<O:P</O:P
Kodu Count
A308 2
A401 1
A445 2
<O:P</O:P
Kayıt girme:<O:P</O:P
<O:P</O:P
Sql de tablolara yeni kayıt ekleme “Veri İşleme” bölümünde anlatılmıştır.
<O:P</O:P
Kayıt güncelleme:<O:P</O:P
<O:P</O:P
Sql de tablolarda varolan kayıtları güncelleme (bilgi düzeltme) işlemi “Veri İşleme” bölümünde anlatılmıştır.
<O:P</O:P
Kayıt silme:<O:P</O:P
<O:P</O:P
Sql de tablolardan varolan kayıtları tamamen silme işlemi “Veri İşleme” bölümünde anlatılmıştır.
<O:P</O:P
<O:P</O:P
SQL VERİTABANI KOMUTLARI<O:P</O:P
<O:P</O:P
Sql de veritabanı komutları kalıcıdır, hatırlanırsa 4GL deki gibi oluşturulan geçici tablolar program durduğunda yok olmaktaydı.
<O:P</O:P
Tablo oluşturma:<O:P</O:P
<O:P</O:P
Yeni bir tablo oluşturmaya yarar.
<O:P</O:P
CREATE TABLE <tablo adı> alan1 {tip} [özellikler],
alan2 {tip} [özellikler],
…
[Unique (alan1,…, alan2)].
<O:P</O:P
Özellikler, 4GL de değişken özelliklerini taşımaktadır..
<O:P</O:P
<O:P</O:P
Örnek 1:
CREATE TABLE ozluk1
(ogr_no char(8) not null,
adi char(15) not null,
soyadi char(15) not null,
sinifi int,
d_tarihi date,
cinsiyeti char(1),
ilce_kodu char(4) LABEL "Doğum Yeri”,
harc_kredi logical,
adres1 char(30),
adres2 char(30),
adres3 char(30));
<O:P</O:P
Ozluk tablosunun özelliklerini hatta aynısını SQL komutunu ile yukarıdaki gibi “ozluk1” tablosu oluşturulmaktadır.
<O:P</O:P
“Not Null” özelliği bu alanların zorunlu olarak doldurulması yani boş geçilemez olduğunu ifade etmektedir.
<O:P</O:P
<O:P</O:P
Tablo adı değiştirme:<O:P</O:P
<O:P</O:P
“Alter” komutu ile tablo yapısı değiştirilir.
<O:P</O:P
Bir tablonun adı da değiştirilebilir.
ALTER TABLE <eski tablo adı><O:P</O:P
RENAME TABLE <yeni tablo adı>.
<O:P</O:P
Tabloya alan ekleme:<O:P</O:P
<O:P</O:P
Tablolara yeni bir alan eklenebilmektedir.<O:P</O:P
ALTER TABLE <tablo adı>
ADD <alan adı> tip [[Label “ …”] [Format][Column Label]].
<O:P</O:P
<O:P</O:P
<O:P</O:P
<O:P</O:P
Tablodan alan silme:<O:P</O:P
<O:P</O:P
Var olan alanlar silinebilir.
ALTER TABLE <tablo adı>
DROP <alan adı>.
<O:P</O:P
Tabloda alan adları değiştirme:<O:P</O:P
<O:P</O:P
Bir tabloya ait alanların da adı değiştirilebilir.
ALTER TABLE <tablo adı>
RENAME TABLE <eski alan adı> <yeni alan adı>.
<O:P</O:P
Tabloda alan güncelleme:<O:P</O:P
<O:P</O:P
Var olan alanların özellikleri değiştirilebilmektedir.
ALTER TABLE <tablo adı>
MODIFY <alan adı> tip [[Label “ …”] [Format]
[Column Label]].
<O:P</O:P
Örnek 1:
ALTER TABLE ozluk1
ADD baba_adi CHAR (15).
<O:P</O:P
Ozluk1 tablosuna öğrencinin baba adını girilebilmesi için, “baba_adi” adında bir alan eklenmiştir..
<O:P</O:P
Örnek 2:
ALTER TABLE ozluk1
MODIFY baba_adi CHAR (25);
<O:P</O:P
Ozluk tablosunda var “baba_adi” alanını 25 olarak genişleten SQL komutunu yazılabilir.
<O:P</O:P
Örnek 3:
ALTER TABLE ozluk1
DROP baba_adi.
<O:P</O:P
Ozluk1 tablosunda var olan “baba_adi” alanını silen SQL komutunu yazınız.
Örnek 4:
ALTER TABLE ozluk1
RENAME TABLE ozluk2.
<O:P</O:P
“Ozluk1” tablosunun adını “Ozluk2” olarak değiştiren SQL komutudur.
<O:P</O:P
Örnek 5:
ALTER TABLE ozluk2
RENAME TABLE adi ograd.
<O:P</O:P
Ozluk2 tablosundaki “adi” alanının adını “ograd” olarak değiştiren SQL komutudur..
<O:P</O:P
Tablo Silme:<O:P</O:P
<O:P</O:P
Tablolara ihtiyaç kalmadığı zaman silmeye yarar.
<O:P</O:P
DROP TABLE <tablo adı>.
<O:P</O:P
Örnek 1:
DROP TABLE ozluk2.
<O:P</O:P
Ozluk2 tablosunu silen SQL komutunu yazılabilir, burada tablodaki bilgilerde yok olacaktır.
INSERT INTO
· TABLOYA YENİ KAYITLAR EKLER.
· INSERT INTO TABLO
· VALUES (DEGER1, DEGER2,..)
INSERT INTO
· AYRICA YENİ DEĞERLERİN HANGİ SÜTUNLARA EKLENECEĞİ BELİRTİLEBİLİR.
· INSERT INTO TABLO (ALAN1, ALAN2,...)
· VALUES (DEGER1, DEGER2,..)
INSERT INTO
· INSERT INTO PERSONEL (AD, DYERI)
· VALUES (“ÖZCAN”, ”ANKARA”
· VERİ GİRİLMEYEN ALANLAR BOŞ KALIR!!!!
UPDATE
· ALANLARI GÜNCELLEŞTİRMEYE VEYA DEĞİŞTİRMEYE YARAR.
· UPDATE TABLOADI SET ALANADI1=DEGER1
· WHERE ALANADI2=DEĞER2
UPDATE
· SOYADI RASMAN OLAN PERSONELİN ADINI NİMET YAPMAK İÇİN;
· UPDATE PERSONEL
· SET AD = ‘NİMET‘
· WHERE SOYAD = 'RASMAN”
UPDATE
· EĞER SOYADI RASMAN OLAN PERSONELİN ADRES VE ŞEHRİNİ DEĞİŞTİRMEK İSTERSENİZ;
· UPDATE PERSONEL
· SET ADRES = ‘CUMHURİYET BUL: NO:12', ŞEHİR = ‘İZMİR‘
· WHERE SOYAD = 'RASMAN‘ AND AD=“ALİ”
DELETE
· TABLODAN SATIR SİLMEK İÇİN KULLANILIR.
· RASMAN SOYADLI PERSONELİ TABLODAN SİLMEK İÇİN;
· DELETE FROM PERSONEL
· WHERE SOYAD = 'RASMAN'
ALINTIDIR!!!!
Yapısal Sorgulama Dili olan SQL, ilişkisel veritabanlarındaki bilgileri sorgulamak için standart kullanımı olan bir dildir. Standart bir dil olmasına karşılık, çeşitli veritabanlarında SQL kullanımları arasında farklılıklar vardır. SQL komutları ile, tablolara yeni kayıt girme, varolan kayıtları sorgulama (arama ve listeleme), varolan bilgileri değiştirme ve varolan kayıtları silme işlemleri yapılabilir.
Üzerinde sql komutlarını uygulayacağımız, örnek olarak ozluk ve notlar tablosundan birkaç kayıt verilsin.
Ozluk tablosundaki alan isimleri ve örnek veriler;
ogr_no adi soyadi cinsiyeti
88050071 Muhittin Altınkaya E
89050020 Selda Anar K
91050099 Yahya Demircan E
Notlar tablosundaki alan isimleri ve örnek veriler;
ogr_no kodu donem sube vize final basari
88050071 A308 1998-99/2 A 45 60 60
88050071 A401 1998-99/1 B 50 94 94
89050020 A308 1998-99/2 A 50 50 50
89050020 A307 1998-99/1 A 80 40 45
91050099 A308 1997-98/2 A 20 60 50
91050099 A308 1998-99/2 B 60 60 66
91050099 A401 1998-99/1 A 80 80 94
91050099 A445 1997-98/1 A 0 0 0
91050099 A445 1998-99/1 A 60 60 66
Bu noktadan sonraki örnekleri yukarıdaki değerleri göz önünde tutarak inceleyiniz.
SQL FONKSİYONLARI
SQL’de kullanılan fonksiyonlar vardır, bu fonksiyonlar ekrana sadece tek değer görüntülerler.
SUM(DISTINCT] alan_adi) Belirtilen alan için toplam fonksiyonu (sayısal alanlarda)
COUNT(*) Toplam kayıt sayısı
COUNT(DISTINCT alan_adi) Belirtilen alana göre farklı olan kayıtların sayısı
MAX([DISTINCT] alan_adi) Belirtilen alanda en büyük değer
MIN(DISTINCT] alan_adi) Belirtilen alanda en küçük değer
AVG([DISTINCT] alan_adi) Belirtilen alanda ortalama değeri.
DISTINCT parametresi ile belirtilen alanda bulunan bilgilerden aynı olanlarından sadece birinin seçilmesini sağlar.
Örnek 1:
SELECT COUNT(*) FROM notlar.
Sonucunda ekrana gelecek kayıt sayısı 9 dur.
Örnek 2:
SELECT COUNT(DISTINCT ogr_no) FROM notlar.
Sql ifadesinde ekrana gelecek kayıt sayısı 3 olacaktır.
Örnek 3:
SELECT MAX(basari) FROM notlar.
En büyük basari notunu, ekrana 94 olarak görüntüler. En büyük değer kaç tane olursa olsun bir tanesi görüntülenir.
Örnek 4:
SELECT COUNT(*) FROM ozluk.
Ozluk tablosundaki kayıt sayısını 3 olarak verecektir.
SORGULAMA
SELECT [ALL|DISTINCT] { *|alan_adi_listesi}
[INTO değişken_listesi ]
FROM tablo-ismi
[WHERE koşul]
[GROUP BY alan_adi1 [ , alan_adi2] ...]
[HAVING search-condition]
[ORDER BY siralama_alanlari]
şeklinde genel bir ifadesi vardır.
Buradaki ve genelde bilgisayar dünyasında yardım (help) menülerinde kullanılan işaretler,
[ ] seçimlik
{ } zorunlu
< > zorunlu
| veya anlamına gelmektedir.
Şartsız kayıt sorgulama:
Herhangi bir tabloya ait bilgi alanlarındaki bilgilerin listesini almak için;
SELECT <alan adı [,alan adı1,...]> FROM <tablo adı>.
ifadesi kullanılır.
Örnek 1:
SELECT adi, soyadi FROM ozluk.
Ozluk tablosundaki tüm öğrencilerin adını ve soyadını ekrana görüntüleyecektir.
Örnek 2:
SELECT vize*10 FROM notlar.
Notlar tablosundaki tüm öğrencilerin vize notunu 10 ile çarpımını ekrana görüntüleyecektir. Burada vizelerin 10 ile çarpımı sadece ekrana görüntülenecek tabloda ise değişmeyecektir.
Örnek 3:
SELECT SUM(basari) FROM notlar.
Select sum(isdn_kapasite,isdn_kullanılan,pots_kapasite) from n02 where nod=corlu and nod=merzifon and nod=adana
(bu şartın gerçekleşmedi durumunda n02 tablosundaki verilen dğişkenlerin toplamı ekrana gelir)
Öğrencilerin başarı notlarının toplamını ekrana verecektir.
Örnek 4:
SELECT adi + soyadi FORMAT “x(25)” FROM ozluk.
Öğrencilerin adı ve soyadını bitişik yazan SQL ifadesidir.
Bu durumda iki alanın birleşmesi sonucunda karakter sayısı artacağı için yeni bir format belirtmek gerekir.Karakter alanlarda varsayılan görüntüleme 8 karakterdi, burada iki bilinin birleşmesi yeni bir bilgi alanı gibi davranacağından format belirtmek gereklidir.
Örnek 5:
SELECT * FROM notlar.
Notlar tablosundaki bütün bilgi alanlarının içeriklerini ekrana görüntüleyecektir (* joker gibi kullanılmaktadır,”*” ile kullanımda select ile from arasına başka ifade yazılmaz).
Örnek 6:
DEF VAR sayi AS INT
SELECT COUNT(*) INTO sayi FROM notlar.
Şeklinde bir kullanımla kayıt sayısı, “sayi” değişkeni içine aktarılmış olur, böylece elde edilen kayıt sayısı programın devamında amaca göre kullanılabilir.
Burada into parametresi kullanıldığı için sql sonucunda ekran hiçbir görüntü gelmeyecektir.
Örnek 7:
DEF VAR ksayisi AS INT.
DEF VAR ntoplam AS INT.
SELECT COUNT(*),SUM(basari) INTO ksayisi,ntoplam
FROM notlar.
Kayıt sayısı “ksayisi” değişkenine, basari notlarının toplamı da “ntoplam” değişkeni içine aktarılmış olacaktır.
Tek kayıt sorgulama:
Herhangi bir tabloya ait kayıtlardan birer tanesinin listesini almak için;
SELECT DISTINCT <alan adı [,alan adı1]> FROM <tablo adı>.
ifadesi kullanılır. Burada distinct’den sonra yazılan alanların aynı olanlardan birer tanesi listelenir.
Örnek 1:
SELECT DISTINCT kodu FROM notlar.
Sorgu sonucu listelenecek kayıtlar;
Kodu
A308
A401
A307
A445
Bu örnekte notlar tablosunda bir ders, birden fazla olmasına rağmen, sadece her dersten bir tanesi görüntülenir.
Örnek 1
SELECT DISTINCT kodu, ogr_no FROM notlar.
Sorgu sonucu olarak (örnek kayıtlardan)
kodu ogr_no
A308 88050071
A401 88050071
A308 89050020
A307 89050020
A308 91050099
A401 91050099
A445 91050099
Notlar tablosunda sadece kodu ve ogr_no alanındaki kayıtlardan aynı olanlardan birer tanesini listelenmiştir.
SQL ifadelerini yazarken eğer cümle bir satırı aşıyorsa, daha anlaşılır olması açısından alt alta yazarak devam edilebilir.
Sorgu sonucu dönen kayıtları sıralama:
Herhangi bir tablodaki kayıtları herhangi bir alan adına göre azalan (artan) sırada sıralayabilmek için;
SELECT <alan adı>
FROM <tablo adı>
ORDER BY <alan adı1> [,alan_listesi] DESC | ASC.
ifadesi kullanılır (varsayılan olduğu için artan sırada olacaksa ASC kullanılmaz).
Örnek 1:
SELECT ogr_no, adi, soyadi FROM ozluk
ORDER BY soyadi DESC.
Öğrencilerin numara , ad ve soyadlarını , soyadı sıralı olarak Z’den A’ya sıralayarak ekrana görüntüler.
Örnek 2:
SELECT ogr_no, basari FROM notlar ORDER BY basari DESC.
Öğrencinin numara ve başarı notlarını, başarı notuna göre azalan sırada ekran görüntüler.
Örnek 3:
SELECT ogr_no, basari FROM notlar ORDER BY basari
DESC,ogr_no DESC.
Öğrencinin numara ve başarı notlarını, başarı notuna göre azalan sırada listelerken notu aynı olanları da numarasına göre azalan sırada ekranda görüntüler.
Şartlı kayıt sorgulama:
Bir tabloda istenilen şarta uygun kayıtların listesi için;
SELECT <alan_adlari> FROM <tablo adı> WHERE <koşullar>
ifadesi kullanılır.
Örnek 1:
SELECT adi, soyadi, ogr_no FROM ozluk WHERE soyadı = “ “ .
Ozluk tablosundaki soyadı boş olan kayıtların ad,soyad ve numaralarını ekranda görüntüler.
Örnek 2:
SELECT ogr_no, basari FROM notlar WHERE basari = 100.
Notlar tablosundaki başarı notu 100 olan öğrencilerin numaralarını ve başarı notlarını listeler.
Bir alan içinde birden fazla değeri sağlayan kayıtları listelemek için;
Örnek 4:
SELECT adi, soyadi FROM ozluk WHERE soyadi = “demircan”
AND soyadi =”demirel”.
Bir alan içinde, birden fazla değeri sağlayan kayıtların listelenmesi, IN ifadesiyle daha kolay ve anlaşılır yazılabilir.
SELECT <alan_adlari> FROM <tablo adı>
WHERE <alan adı> IN (değer1, değer2).
ifadesi kullanılır.
Örnek 5:
SELECT adi, soyadi FROM ozluk
WHERE soyadi IN (“demircan”,”demirel”
.Ozluk tablosunda soyadı demircan ve demirel olan öğrencilerin ad ve soyadlarını listeler.
Boş ve dolu alanlara göre sorgu:
Boş alanları listelemek için;
SELECT <alan adı> FROM <tablo adı> WHERE <alan adı> IS NULL.
Örnek 1:
SELECT ogr_no, adi, soyadi FROM ozluk
WHERE cinsiyeti IS NULL.
Cinsiyet alanı boş olan öğrencilerin numaralarını, ad ve soyadlarını listeler.
Boş olmayan alanları listelemek için;
SELECT <alan adı> FROM <tablo adı>
WHERE <alan adı> IS NOT NULL.
ifadeleri kullanılır.
Örnek 2:
SELECT ogr_no, adi, soyadi FROM ozluk
WHERE cinsiyeti IS NOT NULL.
Cinsiyet alanı boş olmayan olan öğrencilerin numaralarını, ad ve soyadlarını listeler.
Tam olmayan bilgiye göre sorgu:
İstenilen değer ile başlayan kayıtları listelemek için;
SELECT <alan adı> FROM <tablo adı>
WHERE <alan adı> LIKE “<deger>%”.
Örnek 1:
SELECT adi,soyadi FROM ozluk WHERE adi LIKE “A%”.
Adı “B” ile başlayan kayıtların adı ve soyadını listeler.
İstenilen değer ile biten kayıtları listelemek için;
SELECT <alan adı> FROM <tablo adı>
WHERE <alan adı> LIKE “%<deger>”.
Örnek 2:
SELECT adi,soyadi FROM ozluk WHERE adi LIKE “%A”.
Adı “A” ile biten kayıtların adı ve soyadını listeler.
İçinde herhangi bir yerde istenilen değer geçen kayıtları listelemek için;
SELECT <alan adı> FROM <tablo adı>
WHERE <alan adı> LIKE “%<deger>%”.
Örnek 3:
SELECT adi,soyadi FROM ozluk WHERE adi LIKE “%HY%”.
Adı içinde “HY” geçen kayıtların adı ve soyadını listeler.
İki Tabloyu Beraber Sorgulama (Tabloya Alias [Geçici İsim] Verme):<O:P</O:P
<O:P</O:P
SELECT <alanlar> FROM tablo1,tablo2 WHERE koşullar.
<O:P</O:P
Birden fazla tablodan aynı anda bilgi getirilmesi gerektiğinde, ortak alanlar üzerinden birleştirme işlemleri yapılır. Birleştirme işlemi koşullar bölümünde yapılır, ortak olan alanlar eşleştirilir.
<O:P</O:P
Örnek 1:
SELECT o.adi, o.soyadi, o.ogr_no, n.basari<O:P</O:P
FROM ozluk o,notlar n<O:P</O:P
WHERE o.ogr_no=n.ogr_no and n.kodu=’A308’.
<O:P</O:P
A308 dersinde final notu 100 olan öğrencilerin adlarını, soyadlarını, numaralarını ve başarı notlarını listeler. Burada “o” ozluk tablosuna, “n” notlar tablosuna verilmiş geçici isimlerdir. Bu geçici isimler sayesinde sql i daha anlaşılır ve kısa yazmak mümkündür.
<O:P</O:P
Örnek 2:
SELECT DISTINCT ogr_no, adi, soyadi
FROM ozluk o, notlar n
WHERE o.ogr_no = n.ogr_no AND n.kodu = “A206”.
<O:P</O:P
A206 dersini alan tüm öğrencilerin numaralarını, ad ve soyadlarını listeler.
<O:P</O:P
Kayıtları Gruplama:<O:P</O:P
<O:P</O:P
Kayıtları, belirli alanlara göre gruplayarak sorgu yapılmasını sağlar.
<O:P</O:P
Örnek 1:
SELECT kodu,count(*) FROM notlar
WHERE ogr_no = “91050099”
GROUP BY ogr_no,kodu.
<O:P</O:P
Bu örnekte 91050099 nolu öğrencinin, aldığı dersleri ve bu dersleri kaç kez aldığını listeler. Örnek kayıtlara göre aşağıdaki sonuç elde edilir.
<O:P</O:P
Kodu Count
A308 2
A401 1
A445 2
<O:P</O:P
Kayıt girme:<O:P</O:P
<O:P</O:P
Sql de tablolara yeni kayıt ekleme “Veri İşleme” bölümünde anlatılmıştır.
<O:P</O:P
Kayıt güncelleme:<O:P</O:P
<O:P</O:P
Sql de tablolarda varolan kayıtları güncelleme (bilgi düzeltme) işlemi “Veri İşleme” bölümünde anlatılmıştır.
<O:P</O:P
Kayıt silme:<O:P</O:P
<O:P</O:P
Sql de tablolardan varolan kayıtları tamamen silme işlemi “Veri İşleme” bölümünde anlatılmıştır.
<O:P</O:P
<O:P</O:P
SQL VERİTABANI KOMUTLARI<O:P</O:P
<O:P</O:P
Sql de veritabanı komutları kalıcıdır, hatırlanırsa 4GL deki gibi oluşturulan geçici tablolar program durduğunda yok olmaktaydı.
<O:P</O:P
Tablo oluşturma:<O:P</O:P
<O:P</O:P
Yeni bir tablo oluşturmaya yarar.
<O:P</O:P
CREATE TABLE <tablo adı> alan1 {tip} [özellikler],
alan2 {tip} [özellikler],
…
[Unique (alan1,…, alan2)].
<O:P</O:P
Özellikler, 4GL de değişken özelliklerini taşımaktadır..
<O:P</O:P
<O:P</O:P
Örnek 1:
CREATE TABLE ozluk1
(ogr_no char(8) not null,
adi char(15) not null,
soyadi char(15) not null,
sinifi int,
d_tarihi date,
cinsiyeti char(1),
ilce_kodu char(4) LABEL "Doğum Yeri”,
harc_kredi logical,
adres1 char(30),
adres2 char(30),
adres3 char(30));
<O:P</O:P
Ozluk tablosunun özelliklerini hatta aynısını SQL komutunu ile yukarıdaki gibi “ozluk1” tablosu oluşturulmaktadır.
<O:P</O:P
“Not Null” özelliği bu alanların zorunlu olarak doldurulması yani boş geçilemez olduğunu ifade etmektedir.
<O:P</O:P
<O:P</O:P
Tablo adı değiştirme:<O:P</O:P
<O:P</O:P
“Alter” komutu ile tablo yapısı değiştirilir.
<O:P</O:P
Bir tablonun adı da değiştirilebilir.
ALTER TABLE <eski tablo adı><O:P</O:P
RENAME TABLE <yeni tablo adı>.
<O:P</O:P
Tabloya alan ekleme:<O:P</O:P
<O:P</O:P
Tablolara yeni bir alan eklenebilmektedir.<O:P</O:P
ALTER TABLE <tablo adı>
ADD <alan adı> tip [[Label “ …”] [Format][Column Label]].
<O:P</O:P
<O:P</O:P
<O:P</O:P
<O:P</O:P
Tablodan alan silme:<O:P</O:P
<O:P</O:P
Var olan alanlar silinebilir.
ALTER TABLE <tablo adı>
DROP <alan adı>.
<O:P</O:P
Tabloda alan adları değiştirme:<O:P</O:P
<O:P</O:P
Bir tabloya ait alanların da adı değiştirilebilir.
ALTER TABLE <tablo adı>
RENAME TABLE <eski alan adı> <yeni alan adı>.
<O:P</O:P
Tabloda alan güncelleme:<O:P</O:P
<O:P</O:P
Var olan alanların özellikleri değiştirilebilmektedir.
ALTER TABLE <tablo adı>
MODIFY <alan adı> tip [[Label “ …”] [Format]
[Column Label]].
<O:P</O:P
Örnek 1:
ALTER TABLE ozluk1
ADD baba_adi CHAR (15).
<O:P</O:P
Ozluk1 tablosuna öğrencinin baba adını girilebilmesi için, “baba_adi” adında bir alan eklenmiştir..
<O:P</O:P
Örnek 2:
ALTER TABLE ozluk1
MODIFY baba_adi CHAR (25);
<O:P</O:P
Ozluk tablosunda var “baba_adi” alanını 25 olarak genişleten SQL komutunu yazılabilir.
<O:P</O:P
Örnek 3:
ALTER TABLE ozluk1
DROP baba_adi.
<O:P</O:P
Ozluk1 tablosunda var olan “baba_adi” alanını silen SQL komutunu yazınız.
Örnek 4:
ALTER TABLE ozluk1
RENAME TABLE ozluk2.
<O:P</O:P
“Ozluk1” tablosunun adını “Ozluk2” olarak değiştiren SQL komutudur.
<O:P</O:P
Örnek 5:
ALTER TABLE ozluk2
RENAME TABLE adi ograd.
<O:P</O:P
Ozluk2 tablosundaki “adi” alanının adını “ograd” olarak değiştiren SQL komutudur..
<O:P</O:P
Tablo Silme:<O:P</O:P
<O:P</O:P
Tablolara ihtiyaç kalmadığı zaman silmeye yarar.
<O:P</O:P
DROP TABLE <tablo adı>.
<O:P</O:P
Örnek 1:
DROP TABLE ozluk2.
<O:P</O:P
Ozluk2 tablosunu silen SQL komutunu yazılabilir, burada tablodaki bilgilerde yok olacaktır.
INSERT INTO
· TABLOYA YENİ KAYITLAR EKLER.
· INSERT INTO TABLO
· VALUES (DEGER1, DEGER2,..)
INSERT INTO
· AYRICA YENİ DEĞERLERİN HANGİ SÜTUNLARA EKLENECEĞİ BELİRTİLEBİLİR.
· INSERT INTO TABLO (ALAN1, ALAN2,...)
· VALUES (DEGER1, DEGER2,..)
INSERT INTO
· INSERT INTO PERSONEL (AD, DYERI)
· VALUES (“ÖZCAN”, ”ANKARA”
· VERİ GİRİLMEYEN ALANLAR BOŞ KALIR!!!!
UPDATE
· ALANLARI GÜNCELLEŞTİRMEYE VEYA DEĞİŞTİRMEYE YARAR.
· UPDATE TABLOADI SET ALANADI1=DEGER1
· WHERE ALANADI2=DEĞER2
UPDATE
· SOYADI RASMAN OLAN PERSONELİN ADINI NİMET YAPMAK İÇİN;
· UPDATE PERSONEL
· SET AD = ‘NİMET‘
· WHERE SOYAD = 'RASMAN”
UPDATE
· EĞER SOYADI RASMAN OLAN PERSONELİN ADRES VE ŞEHRİNİ DEĞİŞTİRMEK İSTERSENİZ;
· UPDATE PERSONEL
· SET ADRES = ‘CUMHURİYET BUL: NO:12', ŞEHİR = ‘İZMİR‘
· WHERE SOYAD = 'RASMAN‘ AND AD=“ALİ”
DELETE
· TABLODAN SATIR SİLMEK İÇİN KULLANILIR.
· RASMAN SOYADLI PERSONELİ TABLODAN SİLMEK İÇİN;
· DELETE FROM PERSONEL
· WHERE SOYAD = 'RASMAN'
ALINTIDIR!!!!
