
Üye
Offline
Güven:
+2
(2 oy)
|
16.10.2007/SALI 3 DERS VERİ TABANI
Alan : Sütun
Kayıt : Satır
Birincil anahtar : Boş geçilemez,tekrarlanamaz,her zaman diğer bilgilerden farklı olarak onların üstünde olan ve doğruluğu kesin olan bir bilgidir.Örn;TC kimlik no gibi…
Öğrenci
Satış
Notlar
Nosu
urun_ismi
Nosu
Adı
Fiyati
Y1
M.notu
Adedi
Y2
T.notu
KDV
Y3
Select(alan isimleri) From Topla İsmi ;
Select , M.notu from ogrenci ;
Select * from ogrenci ;
Ürün adedini , KDV siz fiyatını gösteren kod ?
Select urun_ismi adedi,(fiyat * adeti)from satış ;
Ürün adedini , KDV li fiyatını gösteren kod ?
Select urun_ismi , adedi , (fiyat * adet * KDV / 100) + (fiyat * adet) from satış ;
Öğrencinin nosu ve Y1 , Y2 ,Y3 gösteren kod ?
Select nosu , Y1 , Y2 , Y3 from notlar ;
Öğrencinin nosunu ve notlarının ortalamasını gösteren kod ?
Select nosu , ((Y1+Y2+Y3+)/3) as ort from notlar ;
SQL KOMUTLARI YAZIM KURALLARI
Sql deyimleri büyük harf küçük harf ayrımından etkilenmez.
Bir sql deyimi bir satırda ve ya birkaç satırda yazılabilir.
Sadece komutları ve ya alan ve ya topla isimlerini bölmemiz gerekir.Sql deyimin bittiği yerde belirlemek üzere “;” işareti konur.
Aritmetik İfadeler
Sql komutları içinde hesaplama işlemleri gerçekleştirilebilir.İşlem önceliği diğer programlama dilleri ile aynıdır.Yani bölme ve çarpma birincil önceliğe toplama ve çıkarma ikincil önceliğe sahiptir.
personel
Pers_no
Pers_adı
Ücret
Tüm personellere yılbaşı dolayısıyla maasının % 20 si kadar ikramiye verilmektedir.buna göre ;
a) Verilecek ikramiyeyi ve personelin adını yazan kod ?
b) Personelin isimlerini ve maaşla birlikte alacağı net tutar ?
a) select pers_adı , (ucret * 20) /100 from personel ;
b) Select pers_adı , (ucret + ucret + 20) / 100 from personel ;
NOT : Null bir ortamda işlem yapılırsa işlemin sonucu yine null olur.
Sütunlar İçin Takma İsim Kullanımı
Tabloda geçerli olan alan ismi yerine kendi belirleyeceğimiz bir alan ismi kullanabiliriz.Bunun için alan isminden sonra “as” ve hangi isim için kullanılacaksa o yazılır.İki kelime ise [,] konur.
Select pers_adı , (ucret * 20) / 100 as ikramiye from personel ;
Sütunların İçeriklerini Birleştirme
Tabloda kayıtlı iki ve ya daha fazla alan sorgu sonucunda tek sütun başlığı altında görüntülenecekse “&” karakteri ile birleştirilerek gösterilebilir.
Pers_adı
Pers_no
Ücret
Ali
1
100
Veli
2
2000
Nuri
3
3000
Personel
Ali 1 (gibi)
Select pers_adı & pers_no as personel , ucret from personel ;
Ya da
Select pers_adı & pers_no as personel ucret from personel ;
Satış Tablosu
Nosu
Müşteri
Satılan_ürün
Fiyat
Adet
İndirim
1
“
“
“
“
“
2
“
“
“
“
“
3
“
“
“
“
“
1_) Tablodaki tüm bilgilere ilaveten ürünün indirimsiz satış fiyatını toplam isimli bir sütunda gösteren kod ?
2_) Müşteri ve satılan ürün alanlarını bu iki alan arasına ( _ ) işareti koyarak Alışveriş isimli bir sütunda göstererek yan sütunun da indirimli satış fiyatını İndirimli satış fiyatı diye isim vererek gösteren kod ?
1_) Select nosu , musteri , satılan_urun , fiyat , adet , indirim (fiyat * adet) as toplam from satış tablosu ;
2_) Select musteri & “_” & satılan_urun as alısveris , (fiyat * adet – fiyat * adet / 100) as [indirimli fiyat] from satış tablosu ;
Çift Satırlar
Bir tabloda bulunan her hangi bir alanın içerdiği farklı verilerin aynı alanlarını birer kere göstermek için “Distinct” komutu kullanılır.
Personel Tablosu
Adı
Görevi
Ali
Şef
Veli
Memur
Nuri
Şef
Bedri
Memur
Select gorev from personel ;
Select Distinct gorev from personel ;
Verilerin Sınıflandırılması
Veri tabanında verilerin alınması esnasında bazı kısaltmalar koyarak verinin hepsinin değil de sadece şarta uygun olanlarını listeleyebiliriz.Bunun için “Where” kullanılır.
Select alan ismi from tablo ismi ;
Where koşul ;
*_)Personel tablosunda görevi şef olanları listeleyin.
Personel Tablosu
Ucret
Adı
Gorevi
2000
Ali
Şef
2000
Veli
Şef
1000
Nuri
memur
Select adı from personel ;
Where gorev = “ şef “ ;
Karşılaştırma Operatörleri
Ø , > , >= , <= , <> , =
Ø Bunlardır.
*_) Maaşı 900 ytl den fazla olanların adını ve görevini gösteren kod ?
select adı , gorevi from personel ;
Where ucret <900 ;
Diğer Karşılaştırma İşlemleri
Between – and : Verilen aralıkta karşılaştırma işlemlerini yapar.
Between başlangıç and bitiş ;
*_) Personel tablosuna ücreti 850 ile 950 arasında yer alan personellerin görevini gösteren kod ?
Select Distinct gorev from personel ;
Where ucret between 850 and 950 ;
İn : Sütun değerlerinin bir listedeki değerlerle karşılaştırılması söz konusu ise in kullanılır.
*_) Görevi işçi ve memur olanların ad ve ücretlerini gösteren kod ?
Select adı,ucret from personel ;
Where gorevin (“işçi”,”memur”) ;
Like : Bir string ifadenin içerdiği verinin belli bir kurallara göre denetime tabi tutulmasını sağlar.
Where adı like “A*”
Strateji Tablosu
Sehir
Bolge
Yönetici_no
Hedef
Satış
İst
Marmara
100
10000
8000
Ank
İç Anadolu
110
11000
11500
İzm
Marmara
120
10500
9000
Tablodaki var olan bölge isimlerini listeleyen kod ?
Tabloya göre her şehrin hedef ile satışı ne kadar aştığı ve şehir ismini gösteren kod ?
İstanbul ve İzmir şehrine ait tüm verileri göstererek listeleyen kod ?
Satış hedefini doldurmayan yöneticileri listeleyen kod ?
Select Distinct bolge from strateji ;
Select sehir(satış-hedef)as fark from strateji ;
Select * from strateji ;
Where sehir in(“İstanbul”,”İzmir”) ;
Select yonetici_no from strateji ;
Where satıs<hedef ;
*_) select * from ogrenci
Where ad like”V*” ;
Ogrenci Tablosu
Adı
Soyadı
Bolumu
Ali
Çakır
Bilgisayar
Veli
“
Elektronik
Nuri
“
Bilgisayar
İsminin 3. harfi i olan öğrencinin adını ve soyad bilgilerini gösteren kod ?
Select adı , soyadı from ogrenci ;
Where ad like “??i*” ;
Mantıksal Operatörler
And : İki tarafında bulunan şartın ikisinin birlikte doğru olması sonucunda true değerini üreten operatörlerdir.
Personel Tablosu
Pers_no
Gorevi
Ucreti
1
Şef
2000
2
Şef
2000
3
memur
1000
Gorevi şef olanlardan ücreti 1150 den fazla olanlara ait personel numaralarını ve ücretlerini görüntüleyen kod ?
Select pers_no , Ucreti from personel ;
Where ((gorevi =”sef”) and (Ucreti > 1150 )) ;
Select * from personel ;
Where ((gorevi in (“memur”,”şef”)) and (ucret<1150)) ;
Or : iki yanında bulunan şartlardan her hangi birinin sağlanması durumunda doğru sonucu üreten operatördür.
Select * from personel ;
Where ((gorevi=”memur” or gorevi=”sef”) and (ucret>1150)) ;
Not : Verilen şartın tersini alır .
Görevi şef olmayanlardan 1150 den fazla maaş alanların pers_no sunu ve görevini gösteren kod ?
Select pers_no , gorevi from personel ;
Where (not (gorevi=şef”) and (ucret>1150));
Görevi işçi veya memur olmayanlardan 1150 den daha fazla maaş alanların tüm bilgilerini gösteren kod ?
Select * from personel ;
Where (not (gorevi=”işçi” or gorevi=”memur”) and (ucret<1150)) ;
Fonksiyonlar
Boolean Fonksiyonlar
Isnumber : Her hangi bir alanın sayı olup olmadığını denetler.
Isnull : Her hangi bir alanın boş olup olmadığını denetler.
Isdate : Tarih verisi içerip içermediğini kontrol eder.
Donusum Fonksiyonları
Cint ( ) : Sayıya dönüştürmek için kullanılır.
Cdate ( ) : Tarihe dönüştürmek için kullanılır.
Chr ( ) : karaktere dönüştürmek için kullanılır.
Ascıı ( ) : ASCII karaktere dönüştürmek için kullanılır.
Personel tablosuna göre 16.11.2006 da ise başlayanların bütün bilgilerini gösteren kod ?
Select * from personel ;
Where cdate(başlangıç)<# 11/16/2006 # ;
Personelin maaşının %20 si kadar ikramiye alacağını var sayarak Pers_adı ve alacağı toplam parayı görüntüleyen kod ?
Select adı , cint(ucret) * 1,2 from personel ;
Where ısnumeric(ucret) ;
İki farklı tabloda bütün verileri görüntüleyen kod ?
Select * from personel , kisi ;
Where pers_no=cint(pers_no) ;
Personelin ise girdiği alanı içeren başlangıç alanındaki verinin boş bırakıldığı yerleri bulunduran kayıtların tüm verilerini gösteren kod ?
Select * from personel ;
Where isnull(baslangıc) ;
String Fonksiyonları
Ucase : String fonksiyonlarını büyük harfe çevirir.
Lcese : Parametre olarak aldığı alanı küçük harfe çevirir.
Len : parametre olarak verilen string in uzunluğunu geri döndürür.
Trim : string in sağında ve solundaki boşlukları kaldırır.
Ltrim : string in solundaki boşlukları kaldırır
Rtrim : string in sağında boşlukları kaldırır
Personel tablosundaki ad ve soyadı küçük harflerle yazan ayrıca ücreti de görüntüleyen kod ?
Select ucase(adı) , ucase(soyad) , ucret from personel ;
Select * from personel ;
Where len(ad) > [karakter uzunluğu girin] ;
İnstr (str1,str2) : birinci string içinde ikinci stringi arar.
Str1 bugun
Str2 gun
Strcamp(str1,str2) : İki stringi karşılaştırır ve eğer eşitlerse “0” değerini döndürür.Birinci büyükse “1” , ikinci büyükse “-1” değerini döndürür.
Str1=ara
Str2=ara
İkinci ismi ali olanların bütün verilerini gösteren kod ?
Select * from personel ;
Where instr(ad,”ali”)>2 ;
Where strcamp(ad,”Can”)=0 ;
Sayısal Fonksiyonlar
Abs ( ) : Sayının mutlak değerini bulur.
Sqr ( ) : Sayının karekökünü bulur.
Round ( ) : Sayıyı en yakın tam sayıya yuvarlar.
Tabloya göre öğrencinin aritmetik ve geometrik ortalamasını bulunuz ?
Select nosu , round ((Y1+Y2)/2) as [aritmetik ort] sqr(Y1*Y2) as geometrik from notlar ;
Özet (Grup) Fonksiyonları
Count ( ) : Kayıt sayısını döndürür.
Avg ( ) : Aritmetik ortalamayı geri döndürür.
Sum ( ) : Bir sütunun toplamını bulur
Min ( ) : Bir sütundaki minimum değeri döndürür.
Max ( ) : Bir sütundaki maksimum değeri döndürür.
Personel Tablosu
Alan_adı
Veri türü
Pers_no
Metin
Yevmiye
Sayı
Gun
Sayı
Mesai
Sayı
Mesainin saatini 10 lira olduğunu varsayarak maaşı 100 ytl yi geçenlerin sayısını bulan kod ?
Select count(*) from personel ;
Where (yevmiye*gun+mesai*10>100) ;
Personelin ortalama çalışma gününü tam sayı olarak bulan kod ?
Select round(avg(gun)) as [ortalama gun] from personel ;
Personele 6 ay içinde işletmenin dağıtacağı toplam parayı bulan kod ?
Select sum(yevmiye*gun+mesai*10) as toplam from personel ;
En fazla gun çalışana ait bilgileri gösteren kod ?
Select max(gun) from personel ;
Ya da
Select * from personel ;
Where gun=(select max(gun) from personel ) ;
En fazla maaş alanı bulan kod ?
Select pers_no , (yevmiye*gun+mesai*10) as maas from personel ,
Where (yevmiye*gun+mesai*10)=(select max(yevmiye*gun+mesai*10)from personel) ;
VİZEDEN SONRASI
SIRALAMA İŞLEMLERİ
Tabloların satırlarının herhangi bir sutuna göre sıralandırılması için “ORDER BY” kullanılır.
Select * from tablo1;
Where şart
Ordey by alanismi ASC,DESC
ASC :küçükten büyüge dogru sıralama yapmak için kullanılır bu yazılmasada order by bu şekilde sıralar bunu yazılı kabul eder .
DESC: büyükten küçüge yanı ters sıralama yapılmak istendigi zaman kullanılır .
Örn: personelin tüm bilgilerini personelin işe giriş tarihine gore en yakın zamanda ilk işe girine dogru sıralayan kodu yazınız .
Select * from personel
Ordey by başlangıc Desc : günümüzden geçmişe dogru sıralama yapar
Örn: Maaşı en dusuk olandan en büyüge dogru sıralayacak ve adını ücretini görüntüleyecek kodu yazınız .
Select adi,ucreti from personel
Ordey by ucret ASC
Örn: Personelin tüm bilgilerini bolum nosu küçükten büyüge ücreti büyükten küçüge olacak şekilde sıralayarak görüntüleyen kodu yazınız.
Select * from personel
Ordey by bolum_no, ucret DESC
GRUPLANDIRMA İŞLEMLERİ
Bir tablonun satırları gruplara ayrılarak grup fonksiyonlarının bunlara uygulanması saglanabilir bu amaçla select deyimi içinde “GORUP BY ” deyimi kullanılır .
Örn: select alan from tablo
Where
Group by alan
Ordey by alan
Örn: Bolumlere toplam olarak ne kadar maaş odendigini bulan kodu yazınız
Select bolum_no,sum(ucret) from personel
Group by bolum_no
Örn: Her bolumde verilen en yuksek maaş ve bolum isimini görüntüleyen kodu yazınız .
Select gorev,avg(uccret),count(*) from personel
Group by gorev
Örn: Her bir bolumde ortak görevde çalışanların ortalama maaşını en az ücretini ve sayısını bulan kodu yazınız .
Select bol_no,gorev,avg(ucret),min(ucret),count(*) from personel
Group by bol_no, gorev
Ordey by gorev DESC
Group by da dikkat edilmesi gereken hususlar:
Group by da sutunların takma isimleri kullanılmaz
Group by da tanımlanan grupların verilen alana göre artan sıralaması söz konusudur.Tersine çevirmek için ordey by kullanılır.
Group by ile birlikte verilen alan select ile from arasında yer almak mecburiyetinde degildir.
Gruplamaya ilişkin bir kısıtlama getirilecekse “Having” deyimi kullanılır.
Örn: En az maaşı 2000ytl olan gorevlinin ismini ve en az maaşı alan çalışanların sayısını görüntüleyen kodu yazınız
Select gorev,min(ucret),count(*) from personel
Group by gorev
Having min(ucret)>= 2000
Örn:Adı P harfi ile Y arasındaki harfle başlayan görevlerin ,personellerin görevlerini ve ortalama ucretlerini görüntüleyen kodu yazınız.
Select gorev,avg(ucret) from personel
Group by gorev
Having gorev like ‘[P-Y]%’
Having deyiminde grub oluşturacak herhangi bir kayıta ait sınırlandırma getirilmek istenirse yine where deyimi kullanılır eger havign deyiminden sonra kullanılırsa hata olur .
Örn: Adı A ile D arasında olan personellerin aynı görevde olanların ortalama ucretlerini ve görev adlarını görüntüleyen kodu yazınız .
Select gorev,avg(ucret) from personel
Where pers_adı like ‘[A-D]%’
Gruop by gorev
Örn: bolum adı yazılım ve donanım olanlarda kaçar kişi çalıştıgını gösteren kodu yazınız .
Select bol_no,count(*) from personel
Group by bol_no
Having bol_no in(select bolum_no from bolum
Where bolum=’yazılım’or bolum=’donanım’)
Arkadaşlar personel taplosu elimde olmadıgı için çizmedim ama sorulardan personel tablosu içindeki elemanları çıkarabilirsiniz tşk ederim.
|
|