Ms Access

Access Veritabanı Sorgu Örnekleri (Sorgu Tasarımı)

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ı

ms-access-veritabani-iliskili

ACCESS VERİTABANI SORGULARI

  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.

screenshot_4

 

 

 

 

[divider]

VERİTABANI SORGULARI

Sorgu 1: Öğrencilerin adını soyadını listelemek için gerekli sorguyu yapınız.

screenshot_1

SQL CÜMLESİ

SELECT ogrenci.ograd, ogrenci.ogrsoyad
FROM ogrenci;

 

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

screenshot_2

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

SQL CÜMLESİ

SELECT ogrenci.*
FROM ogrenci
WHERE (((ogrenci.ograd)="Cemil"));

 

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

screenshot_3

SQL CÜMLESİ

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

 

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

screenshot_5

SQL

SELECT ogrenci.*
FROM ogrenci
WHERE (((ogrenci.ograd) Like "*a*"));

 

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

screenshot_6

SQL:

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.

screenshot_7

SQL:

SELECT ogrenci.*
FROM ogrenci
WHERE (((ogrenci.ograd) Like "a*")) OR (((ogrenci.cinsiyet)="E"));

 

 

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

screenshot_8

SQL:

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.

screenshot_9

SQL

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.

screenshot_10

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.

screenshot_11

SQL

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.

SELECT TOP 20 kitap.*
FROM kitap
ORDER BY kitap.sayfasayisi DESC;

 

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

SELECT kitap.*
FROM kitap
WHERE (((kitap.kitapno) Like "*3"));

 

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

SELECT ogrenci.*
FROM ogrenci
WHERE ((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 ogrenci
WHERE (((Month(Date()))=Month([dtarih])) AND ((Day(Date()))=Day([dtarih])));

 

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

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.

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

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

 

Yöntem 2

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.

screenshot_12

SQL

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.

screenshot_13

SQL:

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

screenshot_14

SQL:

SELECT ogrenci.*, ogrenci.dtarih
FROM ogrenci
WHERE ((Month([dtarih])=4));

 

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

screenshot_15

SQL:

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.

 

screenshot_16

SQL:

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.

screenshot_17

SQL:

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.

screenshot_18

SQL:

SELECT ogrenci.*
FROM ogrenci
WHERE (((ogrenci.ogrno) In (9,13,21,17)));

 

Sorgu 26: Sayfa sayısı en fazla olan kitabı getirin

screenshot_19

Büyükten küçüğe doğru sıralayıp, tek kayıt gösterin

SQL:

SELECT TOP 1 kitap.*, kitap.sayfasayisi
FROM kitap
ORDER BY kitap.sayfasayisi DESC;

 

Sorgu 27: En yaşlı öğrenciyi bulunuz.

screenshot_20

Doğum tarihine göre artan sıralama yapıp 1 tane kayıt gösterilir.

SQL:

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.

screenshot_21

screenshot_22

-Ş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.

screenshot_23

count

 

Sorgu 29: Her sınıftaki kız öğrenci sayısını bulunuz.

count2

SQL

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.

count3

SQL:

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.

screenshot_24

SQL:

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.

count4

 

SQL:

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.)

SELECT ogrenci.ograd, ogrenci.ogrsoyad, ogrenci.sinif
FROM ogrenci
WHERE ((Not ([sinif]="10A" Or [sinif]="10B")));

 

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

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.)

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.

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

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.

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;

 

Yorum

Yorum Yap