barisskann / fsweb-s17g2-sql-insert-update

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SQL Sorgu Alıştırmaları

Bu hafta SQL sorguları üzerine çalışıyorsunuz. Bugünkü alıştırmada sizin için hazırladığımız veritabanında aşağıda istediğimiz sonuçları elde etmenize yarayan SQL sorgularını oluşturacaksınız.

Proje Kurulumu

Projeyi forklayın ve clonlayın. Tamamladığınızda da pushlayın.

Kütüphane Bilgi Sistemi

Bu veritabanı, bir okulun kütüphanesinden öğrencilerin aldıkları kitapların bilgisini barındırmaktadır.

#Tablolar ogrenci tablosu öğrencilerin listesini tutar. islem tablosu öğrencilerin kütüphaneden aldıkları kitapların bilgilerini tutar kitap tablosu kütüphanedeki kitapların bilgisini tutar yazar tablosu kitapların yazarları bilgisini tutar tur tablosu kitapların türlerini tutar.

Tablo ilişiklerini görmek için [ktphn.png] dosyasına göz atın.

Yazdığınız sorguları buradan test edebilirsiniz: [https://ergineer.com/assets/materials/fkg36so5-kutuphanebilgisistemi-sql/]

Görevler

Aşağıda istenilen sonuçlara ulaşabilmek için gerekli SQL sorgularını yazın.

1) ÖRNEK SORU: Yazar tablosunu KEMAL UYUMAZ isimli yazarı ekleyin.

insert yazar (yazarad,yazarsoyad) values ("KEMAL ","UYUMAZ ")




2) Biyografi türünü tür tablosuna ekleyiniz.
insert tur (turadi) VALUES ("Biyografi ")


3) 10A sınıfı olan ÇAĞLAR ÜZÜMCÜ isimli erkek, sınıfı 9B olan LEYLA ALAGÖZ isimli kız ve sınıfı 11C olan Ayşe Bektaş isimli kız öğrencileri tek sorguda ekleyin. 

insert ogrenci (ograd,ogrsoyad,sinif,cinsiyet) 
values("ÇAĞLAR","ÜZÜMCÜ","10A","E"),
("LEYLA","ALAGÖZ","9B","K"),
("Ayşe","Bektaş","11C","K")


4) Öğrenci tablosundaki rastgele bir öğrenciyi yazarlar tablosuna yazar olarak ekleyiniz.

INSERT INTO yazar (yazarad, yazarsoyad)
SELECT ograd, ogrsoyad FROM ogrenci ORDER BY RAND() LIMIT 1;

5) Öğrenci numarası 10 ile 30 arasındaki öğrencileri yazar olarak ekleyiniz.

insert into yazar (yazarad,yazarsoyad) 

select ograd,ogrsoyad from ogrenci where ogrno between 30 and 50

6) Nurettin Belek isimli yazarı ekleyip yazar numarasını yazdırınız.
(Not: Otomatik arttırmada son arttırılan değer @@IDENTITY değişkeni içinde tutulur.)

INSERT INTO yazar (yazarad, yazarsoyad)
VALUES ('Nurettin', 'Belek');

SELECT @@IDENTITY AS 'Yeni Yazar Numarası';


7) 10B sınıfındaki öğrenci numarası 3 olan öğrenciyi 10C sınıfına geçirin.

update ogrenci set sinif="10C" 

where ogrno=3

8) 9A sınıfındaki tüm öğrencileri 10A sınıfına aktarın

SET SQL_SAFE_UPDATES = 0;
update ogrenci set sinif ="10A"

where trim(sinif)="9A"

9) Tüm öğrencilerin puanını 5 puan arttırın.

	SET SQL_SAFE_UPDATES = 0;
update ogrenci set puan=puan+5


10) 25 numaralı yazarı silin.

SET SQL_SAFE_UPDATES = 0;

delete from yazar where yazarno=25

11) Doğum tarihi null olan öğrencileri listeleyin. (insert sorgusu ile girilen 3 öğrenci listelenecektir)

SET SQL_SAFE_UPDATES = 0;

select * from ogrenci where dtarih is null

12) Doğum tarihi null olan öğrencileri silin. 
SET SQL_SAFE_UPDATES = 0;

delete from ogrenci where dtarih is null

13) Kitap tablosunda adı a ile başlayan kitapların puanlarını 2 artırın.

	SET SQL_SAFE_UPDATES = 0;

update kitap set puan=puan+2 where kitapadi LIKE "a%"

14) Kişisel Gelişim isimli bir tür oluşturun.

insert tur (turadi) values("Kişisel Gelişim")



15) Kitap tablosundaki Başarı Rehberi kitabının türünü bu tür ile değiştirin.

SET SQL_SAFE_UPDATES = 0;

update kitap k left join tur t on t.turno=k.turno set t.turadi="Kişisel Gelişim" where k.kitapadi="Başarı Rehberi"

16) Öğrenci tablosunu kontrol etmek amaçlı tüm öğrencileri görüntüleyen "ogrencilistesi" adında bir prosedür oluşturun.





17) Öğrenci tablosuna yeni öğrenci eklemek için "ekle" adında bir prosedür oluşturun.

CREATE DEFINER=`root`@`localhost` PROCEDURE `Ekle`(ad VARCHAR(50), soyad VARCHAR(50), cinsiyet VARCHAR(10), dtarih DATE, sinif INT, puan INT)

BEGIN INSERT INTO ogrenci (ograd, ogrsoyad, cinsiyet, dtarih, sinif, puan) VALUES (ad, soyad, cinsiyet, dtarih, sinif, puan); END

18) Öğrenci noya göre öğrenci silebilmeyi sağlayan "sil" adında bir prosedür oluşturun.

CREATE DEFINER=root@localhost PROCEDURE ogrenci_sil(id INT) BEGIN delete from ogrenci where ogrno=id; END

19) Öğrenci numarasını kullanarak kolay bir biçimde öğrencinin sınıfını değiştirebileceğimiz bir prosedür oluşturun.

CREATE DEFINER=root@localhost PROCEDURE update_class(id INT,class varchar(5) ) BEGIN update ogrenci set sinif=class where ogrno=id; END

20) Öğrenci adı ve soyadını "Ad Soyad" olarak birleştirip, ad soyada göre kolayca arama yapmayı sağlayan bir prosedür yazın.

CREATE DEFINER=`root`@`localhost` PROCEDURE `find_student`(name varchar(50) )

BEGIN select concat(trim(ograd),trim(ogrsoyad)) as ad from ogrenci o where concat(trim(ograd),trim(ogrsoyad)) =name ; END

21) Daha önceden oluşturduğunu tüm prosedürleri silin.


#Esnek görevler (Esnek görevlerin hepsini Select in Select ile gerçekleştirmeniz beklenmektedir.)
22) Select in select yöntemiyle dram türündeki kitapları listeleyiniz.

select * from kitap

where turno=(select turno from tur where trim(turadi)="Dram" )

23) Adı e harfi ile başlayan yazarların kitaplarını listeleyin.

SELECT * FROM kitap WHERE yazarno IN (SELECT yazarno FROM yazar WHERE yazarad LIKE 'e%')



24) Kitap okumayan öğrencileri listeleyiniz.

select * from ogrenci 

where ogrno not in (select ogrno from islem)

25) Okunmayan kitapları listeleyiniz

select * from kitap 
where kitapno not in (select kitapno from islem)


26) Mayıs ayında okunmayan kitapları listeleyiniz.

select * from kitap 

where kitapno not in (select kitapno from islem where atarih LIKE "_____05%")

About