Access

Access Basit Veritabanı Sorgu Örnekleri – Çalışma Soruları ve Cevapları

Bu yazıda Access’ te kutuphane veritabanını kullanarak hazırlanmış sorgu örneklerini göreceksiniz.

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 SORULAR VE CEVAPLARI

  1. Öğrencilerin adını soyadını listelemek için gerekli sorguyu yapınız.
  2. Adı Cemil olan öğrencilerin kayıtlarını getirin
  3. Öğrenci numarası 15ten küçük olan öğrencileri listeleyin.
  4. Adında a harfi geçen öğrencileri listeleyiniz.
  5. Adı a harfi ile başlayan erkek öğrencileri listeleyiniz.
  6. Adı a harfi ile başlayan yada erkek olan öğrencileri listeleyin.
  7. 10A sınıfının erkek öğrencilerini listeleyiniz.
  8. Adının içinde a harfi geçmeyen öğrencileri listeleyin.
  9. 10A sınıfının Erkek yada 10B sınıfının Kız öğrencilerini listeleyiniz.
  10. 9A veya 9Bnin Erkek öğrencilerini listeleyiniz.
  11. Kitapları sayfa sayısına göre listeleyip, sayfa sayısı en fazla olan 20 kitabı getirin.
  12. Numarası 3 ile biten öğrencileri listeleyin.
  13. 5. ayda doğan öğrencileri listeleyin.
  14. Öğrencilerin adını, soyadını, doğum tarihini ve yaşını listeleyiniz.
  15. Doğum günü bugün olan öğrencileri listeleyin.
  16. Sayfa sayısı çift olan kitapları listeleyin.
  17. Adının ilk harfi ile soyadının ilk harifi aynı olan öğrencileri listeleyin.
  18. Adının son harfi ile soyadının son harfi aynı olan öğrencileri listeleyin.
  19. 9A sınıfı öğrencilerinin hangi tarihte kitap alıp getirdiklerini listeleyiniz.
  20. Derya BALCI isimli yazarın kitaplarını listeleyiniz.
  21. Nisan ayında doğan öğrencileri bulunuz.
  22. Nisan ayında kitap alan öğrencileri getiriniz.
  23. Doğum gününde kitap alan öğrencileri listeleyin.
  24. Dram türünde kitap okuyan 9A sınıfı öğrencilerini listeleyiniz.
  25. Numarası 9,13,21,17 olan öğrencileri listeleyiniz.
  26. Sayfa sayısı en fazla olan kitabı getirin.
  27. En yaşlı öğrenciyi bulunuz.
  28. Her sınıfta kaç öğrenci olduğunu bulunuz.
  29. Her sınıftaki kız öğrenci sayısını bulunuz.
  30. Her öğrencinin okuduğu kitap sayısını bulunuz.
  31. En çok okunan kitabı bulunuz.
  32. Her öğrencinin okuduğu kitap sayısını listeleyin. Ama kitap okumayanların yanında “0” yazsın.
  33. 10A veya 10B sınıfından olmayan öğrencileri listeleyin.
  34. Hiç kitap almayan öğrencileri listeleyiniz.
  35. Kitap alıp teslim etmeyen öğrencileri listeleyin.
  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.
  37. Alınan kitapların kitap numarasını, adını kaç defa alındığını (alınmayan kitapların yanında 0 olsun) listeleyin.
  38. Öğ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İ

 SELECT ogrenci.ograd, ogrenci.ogrsoyadFROM ogrenci; 

Sorgu 2: Adı Cemil olan öğrencilerin kayıtlarını getirin.

Tasarım sekmesi -> Çalıştır komutunu veriniz.

SQL CÜMLESİ

 SELECT ogrenci.*FROM ogrenciWHERE (((ogrenci.ograd)=”Cemil”)); 

Sorgu 3: Öğrenci numarası 15ten küçük olan öğrencileri listeleyin.

SQL CÜMLESİ

 SELECT ogrenci.*FROM ogrenciWHERE (((ogrenci.ogrno)<15)); 

Sorgu 4: Adında a harfi geçen öğrencileri listeleyiniz.

SQL

 SELECT ogrenci.*FROM ogrenciWHERE (((ogrenci.ograd) Like “*a*”)); 

Sorgu 5: Adı a harfi ile başlayan erkek öğrencileri listeleyiniz.

SQL:

 SELECT ogrenci.*FROM ogrenciWHERE (((ogrenci.ograd) Like “a*”) AND ((ogrenci.cinsiyet)=”E”)); 

Sorgu 6: Adı a harfi ile başlayan yada erkek olan öğrencileri listeleyin.

SQL:

 SELECT ogrenci.*FROM ogrenciWHERE (((ogrenci.ograd) Like “a*”)) OR (((ogrenci.cinsiyet)=”E”)); 

Sorgu 7: 10A sınıfının erkek öğrencilerini listeleyiniz.

SQL:

 SELECT ogrenci.*FROM ogrenciWHERE (((ogrenci.cinsiyet)=”E”) AND ((ogrenci.sinif)=”10A”)); 

Sorgu 8: Adının içinde a harfi geçmeyen öğrencileri listeleyin.

SQL

 SELECT ogrenci.*FROM ogrenciWHERE (((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.

 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

 SELECT ogrenci.*FROM ogrenciWHERE (((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.

 SELECT TOP 20 kitap.*FROM kitapORDER BY kitap.sayfasayisi DESC

Sorgu 12: Numarası 3 ile biten öğrencileri listeleyin.

 SELECT kitap.*FROM kitapWHERE (((kitap.kitapno) Like “*3”)); 

Sorgu 13: 5. ayda doğan öğrencileri listeleyin.

 SELECT ogrenci.*FROM ogrenciWHERE ((Month([dtarih])=5)); 

Sorgu 14: Öğrencilerin adını, soyadını, doğum tarihini ve yaşını listeleyiniz.

 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)

 SELECT ogrenci.*FROM ogrenciWHERE (((Month(Date()))=Month([dtarih])) AND ((Day(Date()))=Day([dtarih]))); 

Sorgu 16: Sayfa sayısı çift olan kitapları listeleyin.

 SELECT kitap.*FROM kitapWHERE (([sayfasayisi] Mod 2=0)); 

Sorgu 17: Adının ilk harfi ile soyadının ilk harfi aynı olan öğrencileri listeleyin.

 SELECT ogrenci.*, ogrenci.ogradFROM ogrenciWHERE ((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

 SELECT ogrenci.*, ogrenci.ogradFROM ogrenciWHERE ((Right(Trim([ograd]),1)=Right(Trim([ogrsoyad]),1))); 

Yöntem 2

 SELECT ogrenci.*, ogrenci.ogradFROM ogrenciWHERE ((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

 SELECT ogrenci.ogrno, ogrenci.ograd, ogrenci.ogrsoyad, ogrenci.sinif, islem.atarih, islem.vtarih, kitap.kitapadiFROM kitap INNER JOIN (ogrenci INNER JOIN islem ON ogrenci.ogrno = islem.ogrno) ON kitap.kitapno = islem.kitapnoWHERE (((ogrenci.sinif)=”9A”)); 

Sorgu 20: Derya BALCI isimli yazarın kitaplarını listeleyiniz.

SQL:

 SELECT kitap.kitapadiFROM yazar INNER JOIN kitap ON yazar.yazarno = kitap.yazarnoWHERE (((yazar.yazarad)=”Derya”) AND ((yazar.yazarsoyad)=”BALCI”)); 

Sorgu 21: Nisan ayında doğan öğrencileri bulun

SQL:

 SELECT ogrenci.*, ogrenci.dtarihFROM ogrenciWHERE ((Month([dtarih])=4)); 

Sorgu 22: Nisan ayında kitap alan öğrencileri getiriniz.

SQL:

 SELECT ogrenci.*FROM ogrenci INNER JOIN islem ON ogrenci.ogrno = islem.ogrnoWHERE ((Month([atarih])=4)); 

Sorgu 23:  Doğum gününde kitap alan öğrencileri listeleyin.

SQL:

 SELECT ogrenci.*, islem.atarihFROM ogrenci INNER JOIN islem ON ogrenci.ogrno = islem.ogrnoWHERE ((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:

 SELECT ogrenci.*, kitap.kitapadiFROM tur INNER JOIN (kitap INNER JOIN (ogrenci INNER JOIN islem ON ogrenci.ogrno = islem.ogrno) ON kitap.kitapno = islem.kitapno) ON tur.turno = kitap.turnoWHERE (((ogrenci.sinif)=”9A”) AND ((tur.turadi)=”Dram”)); 

Sorgu 25:  Numarası 9,13,21,17 olan öğrencileri listeleyiniz.

SQL:

 SELECT ogrenci.*FROM ogrenciWHERE (((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:

 SELECT TOP 1 kitap.*, kitap.sayfasayisiFROM kitapORDER 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:

 SELECT TOP 1 ogrenci.*FROM ogrenciORDER 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

 SELECT ogrenci.sinif, Count(ogrenci.cinsiyet) AS SaycinsiyetFROM ogrenciGROUP BY ogrenci.sinif; 

Sorgu 30:Her öğrencinin okuduğu kitap sayısını bulunuz.

SQL:

 SELECT ogrenci.ogrno, ogrenci.ograd, ogrenci.ogrsoyad, Count(islem.islemno) AS SayislemnoFROM ogrenci INNER JOIN islem ON ogrenci.ogrno = islem.ogrnoGROUP BY ogrenci.ogrno, ogrenci.ograd, ogrenci.ogrsoyad; 

Sorgu 31: En çok okunan kitabı bulunuz.

SQL:

 SELECT TOP 1 islem.kitapno, kitap.kitapadi, Count(islem.kitapno) AS SaykitapnoFROM kitap INNER JOIN islem ON kitap.kitapno = islem.kitapnoGROUP BY islem.kitapno, kitap.kitapadiORDER 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:

 SELECT ogrenci.ogrno, ogrenci.ograd, ogrenci.ogrsoyad, Count(islem.kitapno) AS SaykitapnoFROM ogrenci LEFT JOIN islem ON ogrenci.ogrno = islem.ogrnoGROUP BY ogrenci.ogrno, ogrenci.ograd, ogrenci.ogrsoyadORDER 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.)

 SELECT ogrenci.ograd, ogrenci.ogrsoyad, ogrenci.sinifFROM ogrenciWHERE ((Not ([sinif]=”10A” Or [sinif]=”10B”))); 

Sorgu 34: Hiç kitap alamayan öğrencileri listeleyiniz.

 SELECT ogrenci.ograd, ogrenci.ogrsoyad, islem.atarihFROM ogrenci LEFT JOIN islem ON ogrenci.ogrno = islem.ogrnoWHERE (((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.)

 SELECT ogrenci.ograd, ogrenci.ogrsoyad, islem.vtarih, islem.atarihFROM ogrenci LEFT JOIN islem ON ogrenci.ogrno = islem.ogrnoWHERE (((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.

 SELECT kitap.kitapno, kitap.kitapadi, Count(islem.islemno) AS SayislemnoFROM kitap INNER JOIN islem ON kitap.kitapno = islem.kitapnoGROUP BY kitap.kitapno, kitap.kitapadiORDER 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

 SELECT kitap.kitapno, kitap.kitapadi, Count(islem.islemno) AS adetFROM kitap LEFT JOIN islem ON kitap.kitapno = islem.kitapnoGROUP BY kitap.kitapno, kitap.kitapadi, islem.kitapnoORDER BY Count(islem.islemno); 

Sorgu 38: Öğrencilerin adı soyadı ve aldıkları kitabın adı listelensin.

 SELECT kitap.kitapadi, ogrenci.ogrsoyad, kitap.kitapadiFROM ogrenci INNER JOIN (kitap INNER JOIN islem ON kitap.kitapno = islem.kitapno) ON ogrenci.ogrno = islem.ogrno; 

Yorum yap