-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTabloOlusturmaListelemeIslemleri.sql
71 lines (44 loc) · 3.33 KB
/
TabloOlusturmaListelemeIslemleri.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
create database lab3
use lab3
create table personel(
per_no int primary key, -- unique + not null şartlarını da sağlıyor.
isim varchar(10),
soyisim varchar(10),
yas int,
cinsiyet char(1),
kent varchar(15),
ulke varchar(15),
maas int);
insert into personel values(1, 'Ahmet', 'Yilmaz', 20, 'E', 'Ankara', 'Turkiye', 2000);
insert into personel values(2, 'Mehmet', 'Efe', 22, 'E', 'Ankara', 'Turkiye', 2000);
insert into personel values(3, 'Ayse', 'Can', 23, 'K', 'Istanbul', 'Turkiye', 2500);
insert into personel values(4, 'Fatma', 'Ak', 35, 'K', 'Istanbul', 'Turkiye', 2000);
insert into personel values(5, 'Ahmet', 'Yalcin', 29, 'E', 'Istanbul', 'Turkiye', 2600);
insert into personel values(6, 'Ellen', 'Seth', 40, 'K', 'New York', 'ABD', 3000);
insert into personel values(7, 'Hans', 'Miller', 39, 'E', 'Paris', 'Fransa', 3700);
insert into personel values(8, 'Frank', 'Casarre', 25, 'E', 'Ankara', 'Turkiye', 2000);
insert into personel values(9, 'Abbas', 'Demir', 25, 'E', 'Adana', 'Turkiye', 1500);
select * from personel
-- SORU 1 : Maaş : 3500, 3600, 3700, 4000 olan kayıtları getiren sorguyu yazınız.
select * from personel where maas in(3500, 3600, 3700, 4000); -- maas = 3500 or maas = 3600 olarak da yazılabilir ama uzun olur.
-- SORU 2 : Yaşı 20 ile 30 arasında olan erkeklerin isim, soyisim, yaş değerlerini ekrana yaz.
select isim, soyisim, yas from personel where cinsiyet = 'E' and (yas >= 20 and yas <= 30); -- uzun yol
select isim, soyisim, yas from personel where cinsiyet = 'E' and (yas between 20 and 30); -- between kısayol olarak daha mantıklı
-- SORU 3 : Ülke Türkiye olan ismi 'A' ya da 'F' ile başlayan, maaşı 1500 tl'den büyük olan kayıtları soy isimleri alfabetik olacak şekilde yaz.
select * from personel where maas > 1500 and (isim like('A%') or isim like('F%')) and ulke = 'Turkiye' order by soyisim asc;
-- SORU 4 : İsmi 'A' ile başlayan ya da 's' ile biten erkeklerin isme göre alfabetik sırala. ya da yerine ve olsaydı -> or yerine and koyardık.
select * from personel where isim like('A%') or isim like('%s') and (cinsiyet = 'E') order by isim asc; -- default asc zaten yazmaya gerek yok.
-- SORU 5 : İsmi 5 harfli olan personelin maaşını büyükten küçüğe sıralayın.
select * from personel where isim like '_____' order by maas desc; -- desc : azalan sıralama.
-- length ile hesaplama
select * from personel;
select * from personel where len(isim)=5;
-- SORU 6 : Personel tablosundan ülkesi Türkiye olmayan maaşı 2000'den büyük olan, isimlerinde 'aef' harfleri bulunan kişlerin isim, soyisim ve yaş bilgilerini
-- soyisimleri ters sözlük sıralı sorguyu yazdırınız.
select isim, soyisim, maas from personel where ulke <> 'Turkiye' and maas > 2000 and isim like '%[aefAEF]%' order by soyisim desc;
-- SORU 7 : Personel tablosunda ülkesi Almanya olmayan soyismi 3 harften fazla olan veya Y ile başlayan ismi 4 harften uzun olan
-- yaşı 35'den fazla olan
select * from personel where ulke <> 'Almanya' and ((len(soyisim)>=3) or (soyisim like 'Y%')) and (len(isim)>=4) and (yas < 35);
-- SORU 8 : maaşı yaşının 100 katından fazla olan personelin, isim yaş ve %10 zamlı maaşını göster. Maaşa göre sıralı
select isim, yas, maas + maas * 0.1 zamliMaas from personel where maas > yas * 100 order by maas desc;
-- zamliMaas yazmanın nedeni zamlı halinin sütun adını vermek.