Yazdır 12 Haziran 2010 Cumartesi (Hit: 48693)

Kayıt Sorgulama (select)

İstenilen kayıtları tablolardan çekip ekranda göstermek için yani sorgulama yapmak için aşağıdaki SQL komutu kullanılır.

select alan1, alan2, ... from tablo_adi1, tablo_adi2, ... where koşul;

Buradaki select ile from arasındaki alan1, alan2, .... ifadesi sorgulama sonucunda ekranda görünmesini istediğimiz alanlardır. Eğer kayıtlara ait tüm alanları ekranda görmek isterseniz burada yıldız (*) işaretini kullanmalısınız. from' dan sonra ise sorgulamanın yapıldığı tabloların adları sırasıyla yazılır. Son olarak da where ifadesinden sonra koşul(lar) belirtilir.

Okul veritabanı

 

Örnek: ogrenciler tablosundaki tüm kayıtları ve bunların tüm alanlarını ekranda gösterelim.

select * from ogrenciler;

Burada tüm kayıtları görmek istediğimiz için herhangi bir koşul belirtmedik. Dolayısıyla ogrenciler tablosundaki tüm kayıtlar çekildi. Yıldız (*) ifadesini kullanarak da çekilen tüm kayıtların bütün alanlarını ekranda göstermiş olduk.

 

Örnek: ogrenciler tablosundaki tüm erkek öğrencilerin ekranda tüm bilgilerini gösterelim.

select * from ogrenciler where cinsiyeti='e';

 

Örnek: ogrenciler tablosundaki tüm erkek öğrencilerin ekranda sadece ad ve soyadlarını gösterelim.

select adi, soyadi from ogrenciler where cinsiyeti='e';

 

Örnek: ogrenciler tablosundaki 12blsa sınıfındaki tüm kız öğrencilerin ekranda tüm bilgilerini gösterelim.

select * from ogrenciler where cinsiyeti='k' and sinif_kodu='12blsa';

 

Örnek: ogrenciler tablosundaki 12blsb sınıfındaki numarası 50'den küçük öğrencilerin numaralarını, adlarını ve soyadlarını ekranda gösterelim.

select ogrenci_no, adi, soyadi from ogrenciler where ogrenci_no<50 and sinif_kodu='12blsb';

 

Örnek: ogrenciler tablosundaki adı Ali yada Mustafa olan öğrencilerin tüm bilgilerini ekranda gösterelim.

select * from ogrenciler where adi='Ali' or adi='Mustafa';

 

Örnek: notlar tablosundaki 54 nolu öğrencinin tüm notlarını ekranda gösterelim.

select * from notlar where ogrenci_no=54;

 

Örnek: notlar tablosunda geçer not alan öğrencileri listeleyelim.

select * from notlar where notu>=45;

 

Örnek: notlar tablosundaki mat dersinden alınan geçer notları ekranda gösterelim.

select * from notlar where ders_kodu='mat' and notu>=45;

 

Örnek: notlar tablosunda mat dersinden 70 ile 84 arasında not alanları ekranda gösterlim.

select * from notlar where ders_kodu='mat' and (notu between 70 and 84);

Bir alandaki değeri, belirtilen aralıkta olan kayıtları ifade etmek için alan_adi between min and max ifadesi kullanılır.

Buraya kadar olan örneklere dikkat ederseniz tek tablo üzerinde sorgulama yapılmıştır. Sonraki örneklerimizde birden fazla tablo kullanmaya çalışacağız.

Birden fazla tablo kullanılan sorgularda tabloların arasında ilişki yani ortak alanların bulunması gerekir. Bu ortak alanlar where ifadesinden sonra eşitlenerek ilişkili tablolar birleştirilmiş olur. Tablolara birleştirilerek ekranda daha anlamlı sonuçlar gösterilebilir.

Örneğin; select * from ogrenciler; sogusu ile ekranda öğrencilerin tüm bilgileri görünür. Bunlardan biri olan sinif_kodu da ekranda görünür. Sınıf kodu yerine ekranda sınıfın adı görünse daha anlaşılır ve güzel olur. Şimdi ekranda gösterilecek olan öğrencini numarası, adı, soyadı ve cinsiyeti ogrenciler tablosunda iken sınıf adı siniflar tablosundadır. Dolayısıyla yazacağımız sorguda iki tane tablo kullanmak zorundayız. Aşağıdaki örnekte bunu yapmaya çalışalım.

 

Örnek: Ekranda tüm öğrencilerin numarasını, adını, soyadını ve sınıfının adını gösterilim.

select ogrenciler.ogrenci_no, ogrenciler.adi, ogrenciler.soyadi, siniflar.sinif_adi from ogrenciler, siniflar
where ogrenciler.sinif_kodu=siniflar.sinif_kodu;

Sorguda iki tane tablo kullanıldığı için alanların ait olduğu tabloların adı da belirtilmiştir. (ogrenciler.ogrenci_no)
İkincisi ise kullanılan tabloların ortak alanları where ifadesinden sonra eşitlenmiştir. (ogrenciler.sinif_kodu=siniflar.sinif_kodu)

 

Örnek: 12blsb sınıfındaki öğrencilerin ekranda ad, soyad ve sınıf adlarını gösterelim.

select ogrenciler.adi, ogrenciler.soyadi, siniflar.sinif_adi from ogrenciler, siniflar
where ogrenciler.sinif_kodu=siniflar.sinif_kodu and siniflar.sinif_kodu='12blsb';

 

Örnek: 22 nolu öğrencinin aldığı notları ekranda adı, soyadı, ders kodu ve notu görünecek şekilde listeleyelim.

select ogrenciler.adi, ogrenciler.soyadi, notlar.ders_kodu, notlar.notu from ogrenciler, notlar
where ogrenciler.ogrenci_no=notlar.ogrenci_no and ogrenciler.ogrenci_no=22;

Not: Burada aynı isme sahip ortak alanların dışındaki alanların önünde tablo adını belirtmeseniz de olur.

select adi, soyadi, ders_kodu, notu from ogrenciler, notlar
where ogrenciler.ogrenci_no=notlar.ogrenci_no and ogrenciler.ogrenci_no=22;

Burada ortak alanların isimleri farklı olmuş olsaydı bunlar için de tablo adını belirtmeye gerek olmayacaktı.

 

Örnek: Ekranda öğrencinin numarası, adı, soyadı, dersin adı ve notu görünecek şekilde sorgulama yapalım.

select ogrenciler.ogrenci_no, ogrenciler.adi, ogrenciler.soyadi, dersler.ders_adi, notlar.notu from ogrenciler, dersler, notlar
where ogrenciler.ogrenci_no=notlar.ogrenci_no and dersler.ders_kodu=notlar.ders_kodu;

Dikkat ederseniz burada 3 tane tablo kullandık. Bu 3 tablo arasındaki ortak alanları alarına and ifadesini koyarak eşitledik.

 

Örnek: Ekranda öğrencinin numarası, adı, soyadı, dersin adı ve sadece mat dersinin notu görünecek şekilde sorgulama yapalım.

select ogrenciler.ogrenci_no, ogrenciler.adi, ogrenciler.soyadi, dersler.ders_adi, notlar.notu from ogrenciler, dersler, notlar
where ogrenciler.ogrenci_no=notlar.ogrenci_no and dersler.ders_kodu=notlar.ders_kodu and dersler.ders_kodu='mat';

 

Örnek: 12andbls sınıfındaki öğrencilerin geo dersinden aldıkları notları ekranda öğrencinin adı, soyadı, dersin adı, sınıfın adı ve notu görünecek şekilde listeleyelim.

select ogrenciler.adi, ogrenciler.soyadi, siniflar.sinif_adi, dersler.ders_adi, notlar.notu from siniflar, ogrenciler, dersler, notlar
where siniflar.sinif_kodu=ogrenciler.sinif_kodu and ogrenciler.ogrenci_no=notlar.ogrenci_no and dersler.ders_kodu=notlar.ders_kodu and siniflar.sinif_kodu='12andbls' and dersler.ders_kodu='geo';

Burada da 4 tablo kullandık. Bu 4 tablo arasındaki ilişkili alanların yani ortak alanların hepsi eşitlendi. Sonra istenilen diğer koşullar da peşine eklendi.


Bu site meslek liselerinde bilişim bölümü web programcılığı dalında okutulan internet programcılığı dersine yardımcı olması için tasarlanmıştır. İletişim için iletisim@phpdefteri.com
Apache PHP MySQL PhpMyAdmin EasyPHP Xampp AppServ Wamp W3School

www.phpdefteri.com © 2010