Dahiler.net
 
Dahiler.net KAYIT OL
  Detaylı Arama   
 
Şifremi Hatırlat
 
Yeni Konu Oluştur Anasayfa » GENEL » Sql
Kullanıcı Adı:   Şifre:  
   Veritabanı Ders Notları
Yazar Mesaj
dalgın_semai
Ekleme Tarihi: 21.03.2008 14:43


Ü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.
Profil
1
Moderator/Sorumlu: KRALMAS
Bu Mesajı Okuyanlar: 1 Ziyaretçi

Mesaj Yazabilmek İçin Üye Olmanız Gerekmektedir. (Ücretsiz)
 
 


Copyright By Dahiler.net 1999-2007
Coded & Designed By: Dahiler.net


 
     
Web Stats