Accesste sorgu tasarımı kullanarak kütüphane veritabanı üzerinde çeşitli sorgulamalar yapacağım. Sorgulama için grafik ekranın yanı sıra sorgulama işlemini yapan SQL Cümlesini de sorgu örneklerinin altına ekleyeceğim.
NOT: İfadede Tanımlanmamış Say Hatası için Sorgu 28 üzerinde sorunun çözümü açıklanmıştır. Sorgu 28 ile hatanın çözümünü bulabilirsiniz.
Sorgulamada kullanılacak kütüphane veritabanı
ACCESS VERİTABANI SORGULARI
- Öğrencilerin adını soyadını listelemek için gerekli sorguyu yapınız.
- Adı Cemil olan öğrencilerin kayıtlarını getirin
- Öğrenci numarası 15ten küçük olan öğrencileri listeleyin.
- Adında a harfi geçen öğrencileri listeleyiniz.
- Adı a harfi ile başlayan erkek öğrencileri listeleyiniz.
- Adı a harfi ile başlayan yada erkek olan öğrencileri listeleyin.
- 10A sınıfının erkek öğrencilerini listeleyiniz.
- Adının içinde a harfi geçmeyen öğrencileri listeleyin.
- 10A sınıfının Erkek yada 10B sınıfının Kız öğrencilerini listeleyiniz.
- 9A veya 9Bnin Erkek öğrencilerini listeleyiniz.
- Kitapları sayfa sayısına göre listeleyip, sayfa sayısı en fazla olan 20 kitabı getirin.
- Numarası 3 ile biten öğrencileri listeleyin.
- 5. ayda doğan öğrencileri listeleyin.
- Öğrencilerin adını, soyadını, doğum tarihini ve yaşını listeleyiniz.
- Doğum günü bugün olan öğrencileri listeleyin.
- Sayfa sayısı çift olan kitapları listeleyin.
- Adının ilk harfi ile soyadının ilk harifi aynı olan öğrencileri listeleyin.
- Adının son harfi ile soyadının son harfi aynı olan öğrencileri listeleyin.
- 9A sınıfı öğrencilerinin hangi tarihte kitap alıp getirdiklerini listeleyiniz.
- Derya BALCI isimli yazarın kitaplarını listeleyiniz.
- Nisan ayında doğan öğrencileri bulunuz.
- Nisan ayında kitap alan öğrencileri getiriniz.
- Doğum gününde kitap alan öğrencileri listeleyin.
- Dram türünde kitap okuyan 9A sınıfı öğrencilerini listeleyiniz.
- Numarası 9,13,21,17 olan öğrencileri listeleyiniz.
- Sayfa sayısı en fazla olan kitabı getirin.
- En yaşlı öğrenciyi bulunuz.
- Her sınıfta kaç öğrenci olduğunu bulunuz.
- Her sınıftaki kız öğrenci sayısını bulunuz.
- Her öğrencinin okuduğu kitap sayısını bulunuz.
- En çok okunan kitabı bulunuz.
- Her öğrencinin okuduğu kitap sayısını listeleyin. Ama kitap okumayanların yanında “0” yazsın.
- 10A veya 10B sınıfından olmayan öğrencileri listeleyin.
- Hiç kitap almayan öğrencileri listeleyiniz.
- Kitap alıp teslim etmeyen öğrencileri listeleyin.
- Alınan kitapların kitap numarasını, adını ve kaç defa alındığını kitap numaralarına göre artan sırada listeleyiniz.
- Alınan kitapların kitap numarasını, adını kaç defa alındığını (alınmayan kitapların yanında 0 olsun) listeleyin.
- Öğrencilerin adı soyadı ve aldıkları kitabın adı listelensin.
Sorgu tasarımı kullanarak sorgulama için OLUŞTUR -> SORGU TASARIMI -> Sorgulama yapılacak tablolar şeklinde seçim yapıldıktan sonra aşağıdaki sorgulamaları yapıyoruz.
Sorgulamaların alt kısmında sorgu seçeneklerini taptıktan sonra TASARIM sekmesindeki ÇALIŞTIR komutu ile sorgularımızı çalıştırıyoruz.
Sorgumayı grafik ekran yerine SQL cümlesi ile yapmak için SQL görümüne geçip gerekli sql sorgusunu yazabiliriz.
[divider]
VERİTABANI SORGULARI
Sorgu 1: Öğrencilerin adını soyadını listelemek için gerekli sorguyu yapınız.
SQL CÜMLESİ
1 2 3 4 |
SELECT ogrenci.ograd, ogrenci.ogrsoyad FROM ogrenci; |
Sorgu 2: Adı Cemil olan öğrencilerin kayıtlarını getirin
Tasarım sekmesi -> Çalıştır komutunu veriniz.
SQL CÜMLESİ
1 2 3 4 5 |
SELECT ogrenci.* FROM ogrenci WHERE (((ogrenci.ograd)="Cemil")); |
Sorgu 3: Öğrenci numarası 15ten küçük olan öğrencileri listeleyin.
SQL CÜMLESİ
1 2 3 4 5 |
SELECT ogrenci.* FROM ogrenci WHERE (((ogrenci.ogrno)<15)); |
Sorgu 4: Adında a harfi geçen öğrencileri listeleyiniz.
SQL
1 2 3 4 5 |
SELECT ogrenci.* FROM ogrenci WHERE (((ogrenci.ograd) Like "*a*")); |
Sorgu 5: Adı a harfi ile başlayan erkek öğrencileri listeleyiniz.
SQL:
1 2 3 4 5 |
SELECT ogrenci.* FROM ogrenci WHERE (((ogrenci.ograd) Like "a*") AND ((ogrenci.cinsiyet)="E")); |
Sorgu 6: Adı a harfi ile başlayan yada erkek olan öğrencileri listeleyin.
SQL:
1 2 3 4 5 |
SELECT ogrenci.* FROM ogrenci WHERE (((ogrenci.ograd) Like "a*")) OR (((ogrenci.cinsiyet)="E")); |
Sorgu 7: 10A sınıfının erkek öğrencilerini listeleyiniz.
SQL:
1 2 3 4 5 |
SELECT ogrenci.* FROM ogrenci WHERE (((ogrenci.cinsiyet)="E") AND ((ogrenci.sinif)="10A")); |
Sorgu 8: Adının içinde a harfi geçmeyen öğrencileri listeleyin.
SQL
1 2 3 4 5 |
SELECT ogrenci.* FROM ogrenci WHERE (((ogrenci.ograd) Not Like "*a*")); |
Sorgu 9: 10A sınıfının Erkek yada 10B sınıfının Kız öğrencilerini listeleyiniz.
1 2 3 4 5 |
SELECT ogrenci.* FROM ogrenci WHERE (((ogrenci.sinif)="10A") AND ((ogrenci.cinsiyet)="E")) OR (((ogrenci.sinif)="10B") AND ((ogrenci.cinsiyet)="K")); |
Sorgu 10: 9A veya 9Bnin Erkek öğrencilerini listeleyiniz.
SQL
1 2 3 4 5 |
SELECT ogrenci.* FROM ogrenci WHERE (((ogrenci.cinsiyet)="E") AND ((ogrenci.sinif)="9A" Or (ogrenci.sinif)="9B")); |
Sorgu 11: Kitapları sayfa sayısına göre listeleyip, sayfa sayısı en fazla olan 20 kitabı getirin.
1 2 3 4 5 |
SELECT TOP 20 kitap.* FROM kitap ORDER BY kitap.sayfasayisi DESC; |
Sorgu 12: Numarası 3 ile biten öğrencileri listeleyin.
1 2 3 4 5 |
SELECT kitap.* FROM kitap WHERE (((kitap.kitapno) Like "*3")); |
Sorgu 13: 5. ayda doğan öğrencileri listeleyin.
1 2 3 4 5 |
SELECT ogrenci.* FROM ogrenci WHERE ((Month([dtarih])=5)); |
Sorgu 14: Öğrencilerin adını, soyadını, doğum tarihini ve yaşını listeleyiniz.
1 2 3 4 |
SELECT ogrenci.ograd, ogrenci.ogrsoyad, ogrenci.dtarih, Year(Date())-Year([dtarih]) AS Yaş FROM ogrenci; |
Sorgu 15: Doğum günü bugün olan öğrencileri listeleyin.(Öğrenci kaydı olmayabilir. Listelemeden önce birkaç öğrencinin doğum gününü değiştirin)
1 2 3 4 5 |
SELECT ogrenci.* FROM ogrenci WHERE (((Month(Date()))=Month([dtarih])) AND ((Day(Date()))=Day([dtarih]))); |
Sorgu 16: Sayfa sayısı çift olan kitapları listeleyin.
1 2 3 4 5 |
SELECT kitap.* FROM kitap WHERE (([sayfasayisi] Mod 2=0)); |
Sorgu 17: Adının ilk harfi ile soyadının ilk harfi aynı olan öğrencileri listeleyin.
1 2 3 4 5 |
SELECT ogrenci.*, ogrenci.ograd FROM ogrenci WHERE ((Left([ograd],1)=Left([ogrsoyad],1))); |
Sorgu 18: Adının son harfi ile soyadının son harfi aynı olan öğrencileri listeleyin.(Not: Veriler SQL Serverdan çevrildiği için sabit uzunluk sorunu oluşmuştur. Trim metodu ile boşlukları temizleyip sorguyu yazabilirsiniz.)
Yöntem 1
1 2 3 4 5 |
SELECT ogrenci.*, ogrenci.ograd FROM ogrenci WHERE ((Right(Trim([ograd]),1)=Right(Trim([ogrsoyad]),1))); |
Yöntem 2
1 2 3 4 5 |
SELECT ogrenci.*, ogrenci.ograd FROM ogrenci WHERE ((Mid(StrReverse(Trim([ograd])),1,1)=Mid(StrReverse(Trim([ogrsoyad])),1,1))); |
Sorgu 19: 9A sınıfı öğrencilerinin hangi tarihte kitap alıp getirdiklerini listeleyiniz.
SQL
1 2 3 4 5 |
SELECT ogrenci.ogrno, ogrenci.ograd, ogrenci.ogrsoyad, ogrenci.sinif, islem.atarih, islem.vtarih, kitap.kitapadi FROM kitap INNER JOIN (ogrenci INNER JOIN islem ON ogrenci.ogrno = islem.ogrno) ON kitap.kitapno = islem.kitapno WHERE (((ogrenci.sinif)="9A")); |
Sorgu 20: Derya BALCI isimli yazarın kitaplarını listeleyiniz.
SQL:
1 2 3 4 5 |
SELECT kitap.kitapadi FROM yazar INNER JOIN kitap ON yazar.yazarno = kitap.yazarno WHERE (((yazar.yazarad)="Derya") AND ((yazar.yazarsoyad)="BALCI")); |
Sorgu 21: Nisan ayında doğan öğrencileri bulun
SQL:
1 2 3 4 5 |
SELECT ogrenci.*, ogrenci.dtarih FROM ogrenci WHERE ((Month([dtarih])=4)); |
Sorgu 22: Nisan ayında kitap alan öğrencileri getiriniz.
SQL:
1 2 3 4 5 |
SELECT ogrenci.* FROM ogrenci INNER JOIN islem ON ogrenci.ogrno = islem.ogrno WHERE ((Month([atarih])=4)); |
Sorgu 23: Doğum gününde kitap alan öğrencileri listeleyin.
SQL:
1 2 3 4 5 |
SELECT ogrenci.*, islem.atarih FROM ogrenci INNER JOIN islem ON ogrenci.ogrno = islem.ogrno WHERE ((Month([atarih])=Month([ogrenci].[dtarih]) And Day([atarih])=Day([ogrenci].[dtarih]))); |
Sorgu 24: Dram türünde kitap okuyan 9A sınıfı öğrencilerini listeleyiniz.
SQL:
1 2 3 4 5 |
SELECT ogrenci.*, kitap.kitapadi FROM tur INNER JOIN (kitap INNER JOIN (ogrenci INNER JOIN islem ON ogrenci.ogrno = islem.ogrno) ON kitap.kitapno = islem.kitapno) ON tur.turno = kitap.turno WHERE (((ogrenci.sinif)="9A") AND ((tur.turadi)="Dram")); |
Sorgu 25: Numarası 9,13,21,17 olan öğrencileri listeleyiniz.
SQL:
1 2 3 4 5 |
SELECT ogrenci.* FROM ogrenci WHERE (((ogrenci.ogrno) In (9,13,21,17))); |
Sorgu 26: Sayfa sayısı en fazla olan kitabı getirin
Büyükten küçüğe doğru sıralayıp, tek kayıt gösterin
SQL:
1 2 3 4 5 |
SELECT TOP 1 kitap.*, kitap.sayfasayisi FROM kitap ORDER BY kitap.sayfasayisi DESC; |
Sorgu 27: En yaşlı öğrenciyi bulunuz.
Doğum tarihine göre artan sıralama yapıp 1 tane kayıt gösterilir.
SQL:
1 2 3 4 5 |
SELECT TOP 1 ogrenci.* FROM ogrenci ORDER BY ogrenci.dtarih; |
Sorgu 28: Her sınıfta kaç öğrenci olduğunu bulunuz.
Bu işlem için Access verisyonlarında farklılık olduğu için açıklama yapılması gerekiyor.
-Tasarım /Toplamlar sembolüne tıklandığında sorgulama alanında toplam satırı açılacaktır.
-Şekildeki gibi say komutunu veriyoruz. Access verisyonalında farklılık olduğu için İfadede tanımlanmamış say işlemi hatası verebilir.
-Tasarım görünümünden -> Sql Görümününe geçip sorguda geçen Say komutunu Count olarak değiştirin.
-Son hali aşağıdaki gibi olacaktır.
Sorgu 29: Her sınıftaki kız öğrenci sayısını bulunuz.
SQL
1 2 3 4 5 |
SELECT ogrenci.sinif, Count(ogrenci.cinsiyet) AS Saycinsiyet FROM ogrenci GROUP BY ogrenci.sinif; |
Sorgu 30:Her öğrencinin okuduğu kitap sayısını bulunuz.
SQL:
1 2 3 4 5 |
SELECT ogrenci.ogrno, ogrenci.ograd, ogrenci.ogrsoyad, Count(islem.islemno) AS Sayislemno FROM ogrenci INNER JOIN islem ON ogrenci.ogrno = islem.ogrno GROUP BY ogrenci.ogrno, ogrenci.ograd, ogrenci.ogrsoyad; |
Sorgu 31: En çok okunan kitabı bulunuz.
SQL:
1 2 3 4 5 6 |
SELECT TOP 1 islem.kitapno, kitap.kitapadi, Count(islem.kitapno) AS Saykitapno FROM kitap INNER JOIN islem ON kitap.kitapno = islem.kitapno GROUP BY islem.kitapno, kitap.kitapadi ORDER BY Count(islem.kitapno) DESC; |
Sorgu 32: Her öğrencinin okuduğu kitap sayısını listeleyin. Ama kitap okumayanların yanında “0” yazsın.
SQL:
1 2 3 4 5 6 |
SELECT ogrenci.ogrno, ogrenci.ograd, ogrenci.ogrsoyad, Count(islem.kitapno) AS Saykitapno FROM ogrenci LEFT JOIN islem ON ogrenci.ogrno = islem.ogrno GROUP BY ogrenci.ogrno, ogrenci.ograd, ogrenci.ogrsoyad ORDER BY Count(islem.kitapno); |
Sorgu 33: 10A veya 10B sınıfından olmayan öğrencileri listeleyin. ( Sınıfı 10A veya 10B olan öğrencileri bulup değilini alarak sonucu bulabiliriz.)
1 2 3 4 5 |
SELECT ogrenci.ograd, ogrenci.ogrsoyad, ogrenci.sinif FROM ogrenci WHERE ((Not ([sinif]="10A" Or [sinif]="10B"))); |
Sorgu 34: Hiç kitap alamayan öğrencileri listeleyiniz.
1 2 3 4 5 |
SELECT ogrenci.ograd, ogrenci.ogrsoyad, islem.atarih FROM ogrenci LEFT JOIN islem ON ogrenci.ogrno = islem.ogrno WHERE (((islem.atarih) Is Null)); |
Sorgu 35: Kitap alıp teslim etmeyen öğrencileri listeleyin. (Not: Veriler boş çıkabilir. Bir tane öğrencinin vtarih alanını temizleyip sorgulayın.)
1 2 3 4 5 6 |
SELECT ogrenci.ograd, ogrenci.ogrsoyad, islem.vtarih, islem.atarih FROM ogrenci LEFT JOIN islem ON ogrenci.ogrno = islem.ogrno WHERE (((islem.vtarih) Is Null) AND ((islem.atarih) Is Not Null)) ORDER BY islem.vtarih; |
Sorgu 36: Alınan kitapların kitap numarasını, adını ve kaç defa alındığını kitap numaralarına göre artan sırada listeleyiniz.
1 2 3 4 5 6 |
SELECT kitap.kitapno, kitap.kitapadi, Count(islem.islemno) AS Sayislemno FROM kitap INNER JOIN islem ON kitap.kitapno = islem.kitapno GROUP BY kitap.kitapno, kitap.kitapadi ORDER BY kitap.kitapno; |
Sorgu 37: Alınan kitapların kitap numarasını, adını kaç defa alındığını (alınmayan kitapların yanında 0 olsun) listeleyin
1 2 3 4 5 6 |
SELECT kitap.kitapno, kitap.kitapadi, Count(islem.islemno) AS adet FROM kitap LEFT JOIN islem ON kitap.kitapno = islem.kitapno GROUP BY kitap.kitapno, kitap.kitapadi, islem.kitapno ORDER BY Count(islem.islemno); |
Sorgu 38: Öğrencilerin adı soyadı ve aldıkları kitabın adı listelensin.
1 2 3 4 |
SELECT kitap.kitapadi, ogrenci.ogrsoyad, kitap.kitapadi FROM ogrenci INNER JOIN (kitap INNER JOIN islem ON kitap.kitapno = islem.kitapno) ON ogrenci.ogrno = islem.ogrno; |
abi bana yardımcı olurmusunuz
müthiş kaynak teşekkürler
harika bir anlatım ve bol örnek
teşekkürler
[…] access veritabanı sorguları için ilgili makaleyi […]