Ms-Sql Fonksiyonları ve Veritabanı Komutları Örnekli Acıklama

Egitim Dökümanları

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 2003-04/2 A 45 60 60
88050071 A401 2003-04/1 B 50 94 94
89050020 A308 2003-04/2 A 50 50 50
89050020 A307 2003-04/1 A 80 40 45
91050099 A308 2003-04/2 A 20 60 50
91050099 A308 2003-04/2 B 60 60 66
91050099 A401 2003-04/1 A 80 80 94
91050099 A445 2003-04/1 A 0 0 0
91050099 A445 2003-04/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 FROM .

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.

Öğ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 FROM .

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
FROM
ORDER BY [,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 FROM WHERE
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 FROM
WHERE IN (değer1, değer2).
ifadesi kullanılır.

Örnek 5:
SELECTadi, 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 FROM WHERE 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 FROM
WHERE 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 FROM
WHERE LIKE “%”.

Ö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 FROM
WHERE LIKE “%”.

Ö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 FROM
WHERE LIKE “%%”.

Ö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):

SELECT FROM tablo1,tablo2 WHERE koşullar.

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.

Örnek 1:
SELECT o.adi, o.soyadi, o.ogr_no, n.basari
FROM ozluk o,notlar n
WHERE o.ogr_no=n.ogr_no and n.kodu=’A308’.

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.

Örnek 2:
SELECT DISTINCT ogr_no, adi, soyadi
FROM ozluk o, notlar n
WHERE o.ogr_no = n.ogr_no AND n.kodu = “A206”.

A206 dersini alan tüm öğrencilerin numaralarını, ad ve soyadlarını listeler.

Kayıtları Gruplama:

Kayıtları, belirli alanlara göre gruplayarak sorgu yapılmasını sağlar.

Örnek 1:
SELECT kodu,count(*) FROM notlar
WHERE ogr_no = “91050099”
GROUP BY ogr_no,kodu.

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.

Kodu Count
A308 2
A401 1
A445 2

Kayıt girme:

Sql de tablolara yeni kayıt ekleme “Veri İşleme” bölümünde anlatılmıştır.

Kayıt güncelleme:

Sql de tablolarda varolan kayıtları güncelleme (bilgi düzeltme) işlemi “Veri İşleme” bölümünde anlatılmıştır.

Kayıt silme:

Sql de tablolardan varolan kayıtları tamamen silme işlemi “Veri İşleme” bölümünde anlatılmıştır.

SQL VERİTABANI KOMUTLARI

Sql de veritabanı komutları kalıcıdır, hatırlanırsa 4GL deki gibi oluşturulan geçici tablolar program durduğunda yok olmaktaydı.

Tablo oluşturma:

Yeni bir tablo oluşturmaya yarar.

CREATE TABLE alan1 {tip} [özellikler],
alan2 {tip} [özellikler],

[Unique (alan1,…, alan2)].

Özellikler, 4GL de değişken özelliklerini taşımaktadır..

Örnek 1:
CREATE TABLE ozluk1
(ogr_no char( 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));

Ozluk tablosunun özelliklerini hatta aynısını SQL komutunu ile yukarıdaki gibi “ozluk1” tablosu oluşturulmaktadır.

“Not Null” özelliği bu alanların zorunlu olarak doldurulması yani boş geçilemez olduğunu ifade etmektedir.

Tablo adı değiştirme:

“Alter” komutu ile tablo yapısı değiştirilir.

Bir tablonun adı da değiştirilebilir.
ALTER TABLE
RENAME TABLE .

Tabloya alan ekleme:

Tablolara yeni bir alan eklenebilmektedir.
ALTER TABLE
ADD tip [[Label “ …”] [Format][Column Label]].

Tablodan alan silme:

Var olan alanlar silinebilir.
ALTER TABLE
DROP .

Tabloda alan adları değiştirme:

Bir tabloya ait alanların da adı değiştirilebilir.
ALTER TABLE
RENAME TABLE .

Tabloda alan güncelleme:

Var olan alanların özellikleri değiştirilebilmektedir.
ALTER TABLE
MODIFY tip [[Label “ …”] [Format]
[Column Label]].

Örnek 1:
ALTER TABLE ozluk1
ADD baba_adi CHAR (15).

Ozluk1 tablosuna öğrencinin baba adını girilebilmesi için, “baba_adi” adında bir alan eklenmiştir..

Örnek 2:
ALTER TABLE ozluk1
MODIFY baba_adi CHAR (25);

Ozluk tablosunda var “baba_adi” alanını 25 olarak genişleten SQL komutunu yazılabilir.

Örnek 3:
ALTER TABLE ozluk1
DROP baba_adi.

Ozluk1 tablosunda var olan “baba_adi” alanını silen SQL komutunu yazınız.
Örnek 4:
ALTER TABLE ozluk1
RENAME TABLE ozluk2.

“Ozluk1” tablosunun adını “Ozluk2” olarak değiştiren SQL komutudur.

Örnek 5:
ALTER TABLE ozluk2
RENAME TABLE adi ograd.

Ozluk2 tablosundaki “adi” alanının adını “ograd” olarak değiştiren SQL komutudur..

Tablo Silme:

Tablolara ihtiyaç kalmadığı zaman silmeye yarar.

DROP TABLE .

Örnek 1:
DROP TABLE ozluk2.
Ozluk2 tablosunu silen SQL komutunu yazılabilir, burada tablodaki bilgilerde yok olacaktır.

Alıntıdır..

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.