-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathday3_Select.sql
More file actions
218 lines (161 loc) · 7.65 KB
/
day3_Select.sql
File metadata and controls
218 lines (161 loc) · 7.65 KB
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
-------- SELECT - WHERE --------
CREATE TABLE ogrenciler
(
id NUMBER(9),
isim VARCHAR2(50),
adres VARCHAR2(100),
sinav_notu NUMBER(3)
);
DROP TABLE ogrenciler;
INSERT INTO ogrenciler VALUES(123, 'Ali Can', 'Ankara',75);
INSERT INTO ogrenciler VALUES(124, 'Merve Gul', 'Ankara',85);
INSERT INTO ogrenciler VALUES(125, 'Kemal Yasa', 'Istanbul',85);
SELECT * FROM ogrenciler;
/* ============================================================================
Verileri SELECT komutu ile veritabanından çekerken filtreleme yapmak için
Syntax
--------
SELECT ile birlikte WHERE komutu kullanılabilir.
SELECT sutün1, sutün2
...
FROM tablo_adı WHERE koşul;
==============================================================================*/
-- ORNEK 1: SINAV NOTU 80 DEN BUYUK OLAN TUM OGRENCILERIN BILGILERINI LISTELE...
SELECT * FROM ogrenciler
WHERE sinav_notu>80;
--=====================================================================
-- ORNEK 2: ADRESI ANKARA OLAN OGRENCILERIN ISIM ADRES BILGILERI LISTELE...
SELECT isim, adres FROM ogrenciler --once sec soruda isim ve adres giriliyor.
WHERE adres='Ankara'; --sonra sarti gir.
--=====================================================================
-- ORNEK 3: ID SI 124 OLAN OGRENCILERIN TUM BILGILERINI SIL...
DELETE FROM ogrencıler
WHERE id=124;
SELECT * FROM ogrenciler;
-- NOT : DELETE ISLEMI YAPILDIKTAN SONRA "SELECT * FROM table"
-- YAZILMALI KI DEGISIKLIGI GOREBILELIM.
CREATE TABLE personel
(
id CHAR(5),
isim VARCHAR2(50),
maas NUMBER(5)
);
drop table personel;
INSERT INTO personel VALUES('10001', 'Ahmet Aslan', 7000);
INSERT INTO personel VALUES( '10002', 'Mehmet Yilmaz' ,12000);
INSERT INTO personel VALUES('10003', 'Meryem ', 7215);
INSERT INTO personel VALUES('10004', 'Veli Han', 5000);
INSERT INTO personel VALUES('10005', 'Mustafa Ali', 5500);
INSERT INTO personel VALUES('10005', 'Ayse Can', 4000);
SELECT * FROM personel;
-- ORNEK 4 ID SI 10002 ILE 10005 ARASINDA OLAN PERSONELIN BILGILERINI LISTELE
--1.YOL
SELECT * FROM personel
WHERE id BETWEEN '10002' AND '10005'
-- 2.YOL
SELECT * FROM personel
WHERE id >= '10002' AND id <= '10005';
-- ORNEK 5 Mehmet Yilmaz ile Veli Han arasındaki personel bilgilerini listele
-- sql bu durumda alfabetik siralamaya bakarak filtreliyecek.
SELECT* FROM personel
WHERE isim BETWEEN 'Mehmet Yilmaz' AND 'Veli Han';
-- isim = 'Mehmet Yilmaz' and isim ='Veli Han' seklinde yazilmaz.
--ORNEK 6 10002 -10004 ARASINDA OLMAYAN PERSONELIN ID VE MAASINI LISTELE...
SELECT id,maas FROM personel
WHERE id NOT BETWEEN '10002' AND '10004';
-- between de belirtilenler dahildir. not between de bunlarin disindakiler olacak.
--==============================================================================
-------- SELECT - IN --------
/* ======================= SELECT - IN ======================================
IN birden fazla mantıksal ifade ile tanımlayabileceğimiz durumları
tek komutla yazabilme imkânı verir
SYNTAX:
-------
SELECT sutun1,sutun2, ...
FROM tablo_adı
WHERE sutun_adı IN (deger1, deger2, ...);
/* ========================================================================== */
-- ORNEK 7: MAASI 4000, 5000, VE 7000 OLAN PERSONELIN BILGILERINI LISTELE...
SELECT * FROM personel
WHERE maas IN (4000,5000,7000); -- PARANTEZ ICINDEKI HERKESI AL DEMEK.
-- *** NOT BETWEEN 4000 AND 7000 OLSAYDI 5500 ARAYA GIRERDI.
--2.YOL
SELECT * FROM personel
WHERE maas = 4000 OR maas = 7000 OR maas=5000;
-- ORNEK 8 VELI HAN ILE AHMET ASLAN ARASINDAKILERI BULAN LISTE...
SELECT * FROM personel
WHERE isim IN('Veli Han','Ahmet Aslan');
/*======================= SELECT - LIKE ======================================
NOT:LIKE anahtar kelimesi, sorgulama yaparken belirli patternleri
kullanabilmemize olanak sağlar.
SYNTAX:
-------
SELECT sutün1, sutün2,…
FROM tablo_adı WHERE sütun LIKE pattern
PATTERN İÇİN
-------------
% ---> 0 veya daha fazla karakteri belirtir.
_ ---> Tek bir karakteri temsil eder.
==================================================== */
-- ORNEK ismi A harfi ile baslayanlari listele?
SELECT * FROM personel WHERE ısim LIKE 'A%';
-- Ornek 9: ismi n harfi ile bitenleri listeleyiniz
SELECT * FROM personel WHERE isim LIKE'%n';
-- Ornek 10: isminin 2. harfi e olanları listeleyiniz
SELECT * FROM personel WHERE ısim LIKE '_e%';
-- Ornek 11: isminin 2. harfi e olup diğer harflerinde y olanları listeleyiniz
SELECT * FROM personel WHERE isim LIKE '_e%y%';
-- Ornek 12: ismi A ile başlamayanları listeleyiniz
SELECT * FROM personel WHERE ısim NOT LIKE 'A%';
-- Ornek 13: isminde a harfi olmayanları listeleyiniz
SELECT * FROM personel WHERE isim NOT LIKE '%a%';
-- Ornek 14: maaşının son 2 hanesi 00 olmayanları listeleyiniz
SELECT * FROM personel WHERE maas NOT LIKE '%00';
-- Ornek 15: maaşının 4000 olmayanları listeleyiniz
SELECT * FROM personel WHERE maas NOT LIKE '4000';
-- ORNEK18: maaşı 5 haneli olanları listeleyiniz
SELECT * FROM personel WHERE maas LIKE'_____';
-- ORNEK20: 1. harfi A ve 7.harfi A olan personeli listeleyiniz.
SELECT * FROM personel WHERE maas LIKE 'A_____a%';
/*======================= SELECT - REGEXP_LIKE ================================
Daha karmaşık pattern ile sorgulama işlemi için REGEXP_LIKE kullanılabilir.
Syntax:
--------
REGEXP_LIKE(sutun_adı, ‘pattern[] ‘, ‘c’ ] )
-- 'c' => case-sentisitive demektir ve default case-sensitive aktiftir.
-- 'i' => incase-sentisitive demektir.
/* ========================================================================== */
CREATE TABLE kelimeler
(
id NUMBER(10) UNIQUE,
kelime VARCHAR2(50) NOT NULL,
harf_sayisi NUMBER(6)
);
INSERT INTO kelimeler VALUES (1001, 'hot', 3);
INSERT INTO kelimeler VALUES (1002, 'hat', 3);
INSERT INTO kelimeler VALUES (1003, 'hit', 3);
INSERT INTO kelimeler VALUES (1004, 'hbt', 3);
INSERT INTO kelimeler VALUES (1005, 'hct', 3);
INSERT INTO kelimeler VALUES (1006, 'adem', 4);
INSERT INTO kelimeler VALUES (1007, 'selim', 5);
INSERT INTO kelimeler VALUES (1008, 'yusuf', 5);
INSERT INTO kelimeler VALUES (1009, 'hip', 3);
INSERT INTO kelimeler VALUES (1010, 'HOT', 3);
INSERT INTO kelimeler VALUES (1011, 'hOt', 3);
INSERT INTO kelimeler VALUES (1012, 'h9t', 3);
INSERT INTO kelimeler VALUES (1013, 'hoot', 4);
INSERT INTO kelimeler VALUES (1014, 'haaat', 5);
-- ORNEK21: İçerisinde 'hi' bulunan kelimeleri listeleyeniz
select *from kelimeler where kelime lıke '%hi%'; --1.yol
select *from kelimeler where REGEXP_LIKE (kelime, 'hi');
--ORNEK22: İçerisinde 'ot' veya 'at' bulunan kelimeleri listel buyuk kucuk harfe duyarsiz olacak.
select *from kelimeler where REGEXP_LIKE (kelime, 'at|ot','i'); -- sql de veya yazilimi | seklindedir.
--ORNEK24: 'ho' veya 'hi' ile başlayan kelimeleri büyük-küçük harfe dikkat etmeksizin listeleyeniz
select *from kelimeler where REGEXP_LIKE (kelime, '^ho|^hi','i'); -- ^ bu kullanim baslangic icin
--ORNEK25: Sonu 't' veya 'm' ile bitenleri büyük-küçük harfe dikkat etmeksizin listeleyeniz
select *from kelimeler where REGEXP_LIKE (kelime, 't$|m$','i'); -- $ bu kullanim bitis icin.
--ORNEK26: h ile başlayıp t ile biten 3 harfli kelimeleri büyük-küçük harfe dikkat etmeksizin listeleyeniz (like ile olmaz case sensitive 'h_t')
select *from kelimeler where REGEXP_LIKE (kelime,'h[a-zA-Z0-9]t','i'); --[oa]vs biseyler yazarsak icindekiler de olabilir.
--bu kullanım bir ust konudaki like ile cozulemez cunku case sensitive kullanamıyoruz.
--ORNEK28: İçinde m veya i veya e olan kelimelerin tüm bilgilerini listeleyiniz.
select *from kelimeler where REGEXP_LIKE (kelime, 'm|i|e'); -- veya nin bu sekilde kullanimi