Veri Tabanı Yönetim Sistemleri 2
Soru : Kimlik tablosundaki 2016 girişli Erkek ve Kız öğrenci sayıları bulunarak tanımlanan Yerel Değişkenlere (ve Tablo Değişkenine) aktarılacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
-- Değişken Tanımları yapılır --------------------------------------------- Declare @Mevcutlar Table ( N_Kız int, N_Erkek int, N_Toplam int ) DEclare @n_Kiz int, @n_Erkek int -- 2016 girişli KIZ sayıları değişkene aktarılır ----------------- Select @n_Kiz = Count(*) From Kimlik Where Numara like '16%' AND Cinsiyet = 'K' -- 2016 girişli ERKEK sayıları değişkene aktarılır ----------------- Select @n_Erkek = Count(*) From Kimlik Where Numara like '16%' AND Cinsiyet = 'E' -- Öğrenci Sayıları Tablo Değişkenine aktarılır Insert Into @Mevcutlar Values(@n_Kiz, @n_Erkek, @n_Kiz + @n_Erkek) -- Sonuçlar elde edilir Select * From @Mevcutlar |
Soru : Kimlik tablosundaki öğrencilerin cinsiyetlerini ‘Erkek’, ‘Kız’ olacak şekilde veren SQL cümlesini yazınız.
1 2 3 4 5 6 |
Select Ad, Soyad, Cinsiyet, Case Cinsiyet When 'E' Then 'Erkek' When 'K' Then 'Kız' Else 'Bilinmiyor' End as Cinsiyet_Acik From Kimlik |
Soru :Kimlik tablosundan ad soyad bilgisini ‘S.DİŞLİTAŞ’ şeklinde veren SQL cümlesini yazınız.
1 |
Select Upper(Left(LTrim(Ad),1))+'.'+Upper(LTrim(Soyad)) From Kimlik |
Soru : Verilen sayının faktoriyelini hesaplayan SQL cümlesini yazınız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Declare @Sayi int, @x int, @Faktoriyel bigint Set @Sayi = 5 -- Döngü -- Set @x = @Sayi Set @Faktoriyel = 1 Tur: Set @Faktoriyel = @Faktoriyel * @x Set @x = @x - 1 --Çıkış Kontrol -- If @x = 0 Goto Son Goto Tur Son: -- Faktoriyel sonucu -- Print RTrim(Cast(@Sayi as Char(10)) )+ '! = ' + Cast(@Faktoriyel as Char(10)) |
Soru : WHILE çevrim kontrol komutunu kullanarak verilen sayının faktoriyelini hesaplayan SQL cümlesini yazınız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Declare @sayi int Set @sayi = 5; Declare @say int Set @say = 1; Declare @faktoriyel int Set @faktoriyel = 1; while(@say <= @sayi) Begin set @faktoriyel = @faktoriyel*@say; Set @say=@say+1 End print @faktoriyel |
Soru : ‘tmp_kimlik’ adında geçici tablo oluşturunuz. geçici olduğunu gözlemleyiniz.
1 2 3 4 5 |
Create Table tempdb..tmp_kimlik ( numara int, ad char(20), soyad char (20) ) |
Soru : Parametre olarak Okul Numarasını alarak öğrencinin geçtiği dersleri veren saklı Prosedürü yazınız ve kullanımını örneklendiriniz
1 2 3 4 5 6 7 8 9 |
-- Prosedür Oluşturma -- Create Procedure sp_Karteks @Numara char(9) as Select* From Notlar Where Numara = @Numara AND Aciklama = 'Geçer' -- Kullanım Örneklendirmesi -- Exec sp_Karteks '164526018' |
Soru : Parametre olarak ‘E’/’K’ cinsiyet bilgisini alarak geriye ilgili mevcut değerini geri döndüren saklı Prosedürü yazınız (RETURN ile ) ve kullanımını örneklendiriniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
-- Prosedür Oluşturma -- Create Proc sp_Liste_return @Cinsiyet Char(1) as Declare @Mevcut int Select @Mevcut = Count(*) From Kimlik where Cinsiyet = @Cinsiyet return (@Mevcut) -- Kullanım Örneklendirmesi -- Declare @N int Exec @N = sp_Liste_return 'E' Select @N as mevcut |
Soru : Donem ID ve DersKodu parametrelerini alarak sınıf mevcudunu Erkek sayısı, Kız sayısı ve toplam olarak veren Store Procedure tanımlanacaktır. Buna göre;
a) sp_DersListe adın prodesür tanımını T-SQL dilinde yazınız.
b) sp_DersListe prosedürü için örnek veriniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
-- Procedure Tanımı -- Alter Procedure sp_DersListe @Donem_ID int, @DersKodu Char(7) as Declare @nE int, -- Erkek Mevcut @nK int -- Kız Mevcut -- Erkek Mevcut Bul Select @nE = Count(n.Numara) From Notlar as n Left Outer Join Kimlik as k on (n.Numara = k.Numara) Where n.Donem_ID = @Donem_ID AND n.DersKodu = @DersKodu AND k.Cinsiyet = 'E' -- Kız Mevcut Bul Select @nK = Count(n.Numara) From Notlar as n Left Outer Join Kimlik as k on (n.Numara = k.Numara) Where n.Donem_ID = @Donem_ID AND n.DersKodu = @DersKodu AND k.Cinsiyet = 'K' -- İstatistikler Select @nE as Erkek_Mevcut, @nK as Kız_Mevcut, @nE + @nK as Toplam_Mevcut -- Procedure Kullanımı -- Exec sp_DersListe 2, '4526106' |
Soru : Dönem ve Ders ID değeri parametrik olarak alan ve ilgili ders için öğrenci mevcudunu geri döndüren Saklı Prosedür (Store Procedure) tanımlanacaktır. Buna göre;
a) sp_Mevcut adında bir prosedürü T-SQL dilinde yazınız.
b) sp_Mevcut adlı prosedürü kullanan T-SQL cümlesini yazınız.
1 2 3 4 5 6 7 8 9 10 11 12 |
-- Prosedür Tanımı -- Create Procedure sp_Mevcut @L_Donem_Adi_ID int, @D_Ders_ID int as Select Count(*) as Mevcut From Karteks Where D_Ders_ID = @D_Ders_ID AND L_Donem_Adi_ID = @L_Donem_Adi_ID -- Prosedür Kullanımı -- Exec sp_Mevcut 1, 1021 |
Soru : Dönem ve Ders ID değeri parametrik olarak alan ve ilgili ders için öğrenci mevcudunu RETURN ile geri döndüren Saklı Prosedür (Store Procedure) tanımlanacaktır.
Buna göre;
a) sp_Mevcut adında bir prosedürü T-SQL dilinde yazınız.
b) sp_Mevcut adlı prosedürü kullanan T-SQL cümlesini yazınız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
-- Prosedür Tanımı -- Create Procedure sp_Mevcut_R @L_Donem_Adi_ID int, @D_Ders_ID int as Declare @Mevcut int Select @Mevcut = Count(*) From Karteks Where D_Ders_ID = @D_Ders_ID AND L_Donem_Adi_ID = @L_Donem_Adi_ID Return (@Mevcut) -- Prosedür Kullanımı -- Declare @n int Exec @n = sp_Mevcut_R 1, 1021 Select @n as Mevcut |
Soru : Dönem ve Ders ID değeri parametrik olarak alan ve ilgili ders için öğrenci mevcudunu OUTPUT ile geri döndüren Saklı Prosedür (Store Procedure) tanımlanacaktır.
Buna göre;
a) sp_Mevcut adında bir prosedürü T-SQL dilinde yazınız.
b) sp_Mevcut adlı prosedürü kullanan T-SQL cümlesini yazınız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
-- Prosedür Tanımı -- Create Procedure sp_Mevcut_Output @L_Donem_Adi_ID int, @D_Ders_ID int, @Mevcut int Output as Select @Mevcut = Count(*) From Karteks Where D_Ders_ID = @D_Ders_ID AND L_Donem_Adi_ID = @L_Donem_Adi_ID -- Prosedür Kullanımı -- Declare @n int Exec sp_Mevcut_Output 1, 1021, @n output Select @n as Mevcut |