Sql Sorgu Komutları açıklamaları ve SQL Örnekleri ile bu sorgular kullanılarak hazırlanmış örnek çalışma soruları ve cevapları.
musterino
ad
soyad
dtarih
sehir
cinsiyet
puan
1
Ahmet
Cansever
1956-02-19 00:00:00.000
İstanbul
E
64
2
Mehmet
Aydın
1976-02-19 00:00:00.000
Samsun
E
55
3
Aliye
Seven
1966-06-10 00:00:00.000
Konya
K
45
4
Burak
Sayın
1996-02-19 00:00:00.000
İstanbul
E
23
5
Beyza
Kılıç
1955-12-30 00:00:00.000
Manisa
K
85
SQL SELECT
musteri tablosunda bulunan ad, soyad sütunlarını listelemek için;
1
Select ad,soyad FROM musteri
musteri tablosunda bulunan tüm kayıtları listelemek için;
1
Select *From musteri
SQL SELECT DISTINCT
Bir tabloda bir sütun yinelenen değerleri içerebilir. Distinct ile farklı değerleri listeleyebiliriz.
1
SELECT DISTINCT sehir FROM musteri;
SQL WHERE
Where anahtar sözcüğü ile sadece belirlenen kurala uygun olan kayıtların listelenmesini sağlayabiliriz.
Örneğin musteri tablosunda sehir sütunu İstanbul olan kayıtları listelemek için;
1
SELECT * FROM musteri WHERE sehir=’istanbul’
yada cinsiyet “K” olan kayıtları listelemek için;
1
SELECT * FROM musteri WHERE cinsiyet=’K’
Where ile kullanabileceğimiz operatörler;
Operator
Açıklama
=
Eşit
<>
EşitDeğil. Note: Bazı versiyonlarda “!=” kullanılabilir.
>
Büyüktür
<
Küçüktür.
>=
Büyük Eşit
<=
Küçük Eşit
BETWEEN
arasında
LIKE
Örüntü arama
IN
Bir sütun için birden çok olası değerleri belirtmek için
SQL AND – OR Kullanımı
AND Operatörü 1. Koşul ve 2. Koşulun doğru olması durumunda çalışır.
Örneğin musteri tablosunda Cinsiyeti “E” ve Şehri “İstanbul” olanları listelemek için;
1
SELECT * FROM musteriWHERE sehir=’İstanbul’AND cinsiyet=’E’
OR operatörü 1. Koşul yada 2. Koşulun doğru olması durumunda çalışır.
Örneğin musteri tablosunda şehri İstanbul yada Samsun olanları listelemek için;
1
SELECT * FROM musteriWHERE sehir=’İstanbul’OR sehir=’Samsun’
AND ve OR operatörü birliktede kullanılabilir.
Örnek olarak musteri tablosunda cinsiyeti ‘K’ olan ve Şehri “Konya” yada “Manisa” olanları listelemek için.
1
SELECT * FROM musteriWHERE cinsiyet=’K’AND (City=’Konya’ OR City=’Manisa’)
SQL ORDER BY Kullanımı
ORDER BY, varsayılan olarak artan düzende kayıtları sıralar. Azalan kayıtları sıralamak için DESC anahtar sözcüğünü kullanabilirsiniz.
Örnek olarak musteri tablosundaki kayıtları ad sütünuna göre artan ve azan olarak sıralayalım.
1
SELECT * FROM musteriORDER BY ad
Azalan sıralama örneği;
1
SELECT * FROM musteriORDER BY ad DESC
INSERT INTO Kullanımı
Kayıt eklemek için kullanılır.
örnek olarak musteri tablosuna bir kayıt ekleyelim.
1
INSERT INTO musteri(ad, soyad, dtarih, sehir, cinsiyet, puan)VALUES (‘Ali’,’Şahin’,’2000-10-12′,’Burdur’,’E’,68)
SQL UPDATE kullanımı
Kayıtlar üzerinde değişiklik güncelleme yapmak için kullanılır.
Örnek olarak musterino su 3 olan kaydın puanını 90 olarak değiştirelim.
1
UPDATE musterilerSET puan=90 WHERE musterino=3
SQL DELETE Kullanımı
Tablodan kayıt silmek için kullanılır.
Örnek olarak musterino su 4 olan kaydı silmek için
1
DELETE FROM musterilerWHERE musterino=4
musteriler tablosundaki tüm kayıtları silmek için
1
DELETE * FROM musteriler
SQL SELECT TOP Kullanımı
Belirtilen sayıda kaydı görüntülemek için kullanılır. örnek olarak musteriler tablosundaki ilk 5 kaydı listeleylim.
123
SELECT TOP 5 * FROM musteriler
SQL LIKE Kullanımı
Belirtilen bir değeri aramak için kullanılır. Örnek olarak musteriler tablosunda şehri S ile başlayan kayıtları listeleyelim.
1
SELECT * FROM musterilerWHERE sehir LIKE ‘s%’
Şehri s ile biten kayıtları listelemek için;
1
SELECT * FROM musterilerWHERE sehir LIKE ‘%s’
Şehrin içerisinde “tan” bulunan kayıtları listelemek için;
1234
SELECT * FROM musterilerWHERE sehir LIKE ‘%tan%’
SQL YER TUTUCU KARAKTERLER
musteriler tablosunda adı “al” ile başlayan kayıtları listelemek için;
1
SELECT * FROM musterilerWHERE AD LIKE ‘al%’
musteriler tablosunda adı “al” ile biten kayıtları listelemek için;
1
SELECT * FROM musterilerWHERE AD LIKE ‘%al’
musteriler tablosunda ismi A ile başlayıp ondan sonraki 2 karakteri herhangi bir harf olan ve e ile devam eden ve ondan sonraki harfi belli olmayan kayıtları listeleyelim.(Adı Ahmet olanları listeleyeceğiz. :))
1
SELECT * FROM musterilerWHERE ad LIKE ‘A _ _ e _’
Adı a ile b ile yada s ile başlayan kayıtları listeleyelim.
1
SELECT * FROM musterilerWHERE adLIKE ‘[abs]%’
şimdide tam tersi a ile b ile yada s ile başlamayan kayıtları listeleyelim.
1
SELECT * FROM musterilerWHERE adLIKE ‘[!abs]%’
SQL IN Kullanımı
IN operatörü, WHERE yan tümcesinde birden fazla değer belirlemenizi sağlar. Örnek olarak şehri İstanbul ve Konya olan kayıtları listeleyelim.
1
SELECT * FROM musterilerWHERE sehir IN (‘İstanbul’,’Konya’)
SQL BETWEEN KULLANIMI
Between operatörü belirli kriterler arasındaki kayıtları listelemek için kullanılır. Sayı metin yada tarih aralığı verilebilir.
Örnek olarak musteriler tablosunda puanı 70 ile 90 arasında olan kayıtları listeleyelim.
1
SELECT * FROM musterilerWHERE puanNOT BETWEEN 70 AND 90
Doğum tarihi 01/01/1996 ile 01/01/2006 arasındaki kişileri listelemek için;
1
SELECT * FROM musterilerWHERE dtarih BETWEEN ’01/01/1996′ AND ’01/01/2006′
musteriler tablosunda adı C ve E arasında olan kayıtları listeleyelim.
1
SELECT * FROM musterilerWHERE ad BETWEEN ‘C’ AND ‘E’
SQL ALIASES Kullanımı
SQL tablosunda yer alan sütunlara geçici bir ad vermek için kullanılır.
1
SELECT ad AS ADI, soyad AS SOYADI,dtarih AS [DOĞUM TARİHİ]FROM musteriler
SQL JOIN Kullanımı
Orders ve Customers tablolarını kullanarak oluşturulan örneği inceleyelim.
Örnek olarak musteriler tablosundaki toplam kayıt sayısını bulalım.
1
SELECT COUNT(*) FROM musteriler;
Şimdide musteriler tablosunda kaç farklı şehir olduğunu bulalım.
1
SELECT COUNT(DISTINCT sehir) FROM musteriler;
Şimdi de Şubat ayında doğan Müşterileri sayısını bulalım.
1
SELECT COUNT (*) FROM musteriler WHERE MONTH(dtarih)=2
Aşağıdaki SQL Deyimi ise “Orders” tablosundan “CustomerID” = 7 ye ait siparişlerin sayısını bulur.
1
SELECT COUNT(CustomerID) AS OrdersFromCustomerID7 FROM OrdersWHERE CustomerID=7
SQL ROUND Kullanımı
Ondalıklı sayıyı yuvarlamak için kullanılır.
1
SELECT urunadi, ROUND(fiyat,0) AS YuvarlanmisFiyatFROM urunler
SQL LEN() KULLANIMI
LEN () işlevi, bir metin alanındaki değerin uzunluğunu döndürür. Örnek olarak musteriler tablosunda ad alanını yanına soyad uzunluklarını yazdıralım.
1
SELECT ad,LEN(soyad) as soyaduzunluguFROM musteriler;
SQL NOW() Kullanımı
NOW fonksiyonu sistem tarih ve saatini döndürür.
Örnek olarak Aşağıdaki SQL deyimi “Products” tablosundan bugün için ürün adını ve fiyatını seçelim.
1
SELECT ProductName, Price, Now() AS PerDateFROM Products;
SQL MAX Kullanımı
MAX () işlevi, seçilen sütunun en büyük değeri döndürür.
Örnek olarak musteriler tablosunda en yüksek puanı görüntüleyelim.
1
Select MAX(puan) AS EnyuksekPuan FROM musteriler
Şimdide en yüksek puana sahip müşterileri ad ve soyadı ile listeleyelim.
1
SELECT ad,soyad,puanFROM musteriler WHERE puan =(SELECT MAX(puan)FROM musteriler)
SQL MIN Kullanımı
MIN() işlevi, seçilen sütunun en küçük değeri döndürür.
Ogrenciler tablosunda en düşük puanı görüntüleyelim.
1
Select MIN(puan) AS EndusukPuan FROM ogrenciler
Şimdide en düşük puana sahip ogrencileri ad ve soyadı ile listeleyelim.
1
SELECT ad,soyad,puanFROM ogrencilerWHERE puan =(SELECT MAX(puan)FROM ogrenciler)
SQL Örnek Çalışma Soruları
SELECT KOMUTU İLE İLGİLİ SQL SORGULARI
Öğrenci tablosundaki tüm kayıtları listeleyin.
123
select * from ogrenci
Öğrenci tablosundaki öğrencinin adını ve soyadını ve sınıfını listeleyin.
123
select ograd,ogrsoyad,sinif from ogrenci
Öğrenci tablosundaki cinsiyeti Kız ve Sınıfı 10A olan öğrencileri listeleyiniz.
1
select * from ogrenci where cinsiyet=’K’ and sinif=’10A’
Öğrenci tablosundaki 10A veya 10B sınıfındaki öğrencilerin adını, soyadını ve sınıfını listeleyiniz.
1
Select ograd, ogrsoyad, sinif from ogrenci where sinif=’10A’ or sinif=’10B’
Öğrenci tablosundaki öğrencinin adını, soyadını ve numarasını okul numarası olarak listeleyiniz.
1
select ograd,ogrsoyad,ogrno as ‘okul numarası’ from ogrenci
kitap tablosundaki sayfa sayısı 50 ile 200 arasında olan kitapların adını ve sayfa sayısını listeleyiniz.
1
select * from kitap where sayfasayisi between 50 and 200
Öğrenci tablosunda adı Fidan, İsmail ve Leyla olan öğrencileri listeleyiniz.
1
select * from ogrenci where ograd in (‘Fidan’,’İsmail’,’Leyla’)
Öğrenci tablosundaki sınıfı 9A olan Erkekleri veya sınıfı 9B olan kızların adını, soyadını, sınıfını ve cinsiyetini listeleyiniz.
1
select ograd,ogrsoyad,sinif,cinsiyet from ogrenci where (sinif=’9A’ and cinsiyet=’E’) or (sinif=’9B’ and cinsiyet=’K’)
Öğrenci tablosunda doğum yılı 1989 olan öğrencileri listeleyiniz.
123
select * from ogrenci where dtarih between ’01/01/1989′ and ’12/31/1989′
DELETE KOMUTU İLE İLGİLİ SQL SORGULARI
1- Örnek ismini ikici harfi a olan kayıtları siler
1
DELETE FROM ogrenci WHERE adi like ‘_a%’;
2- Örnek notu 50 den küçük olan kayıtları siler
1
DELETE FROM ogrenci WHERE notu <50;
3- Örnek bilgisayar öğrencilerinin tüm not bilgilerini notlar tablsoundan silen sql komutu
1
DELETE FROM notlar WHERE no IN(SELECT no FROM ogrenci where bölüm ’531’ )
4- örnek: yazar tablosunu kaldırmak için gerekli olan sql deyimini yazınız.
1
DROP TABLE yazar
5- örnek: isimi Kamil olan öğrenciyi siliyoruz.
1
DELETE FROM tblogrenci WHERE isim=‘Kamil’;
6- elma tablosunun id nosu 15’ten büyük olan verileri siler
1
DELETE FROM elma WHERE id > ‘15’
7- elma tablosunun id nosu 3 ile 10 arasında olan verileri siler
1
DELETE FROM elma WHERE id BETWEEN 3 AND 10
8- elma tablosunun cins alanı “zonguldak” olan kayıt(lar)ı siler.
1
DELETE FROM elma WHERE cins = ‘zonguldak’
9- elma tablosundan id nosu 1 olan veriyi siler;
1
DELETE FROM elma WHERE id = ‘1’
10- Doğum yeri İzmir olan 11b sınıfındaki erkek öğrencileri silin
1
DELETE FROM ogrenci WHERE dogum_yeri=’izmir’ AND sinif=’11B’ AND cinsiyet=’E’;
LIKE KOMUTU İLE İLGİLİ SQL SORGULARI
1- ev kelimesi ile başlayan kayıtlar(eve, evde, eve giderken, evli…)
1
SELECT * FROM TabloAdi WHERE AlanAdi LIKE ‘ev%’
2- içerisinde Ankara kelimesi geçen kayıtlar
1
SELECT * FROM TabloAdi WHERE AlanAdi LIKE ‘%Ankara%’
3- karakterden oluşan, son 2 karakteri en ve ilk karakteri herhangi bir karakter olan kayıtlar(sen, ben, fen…)
1
SELECT * FROM TabloAdi WHERE AlanAdi LIKE ‘_en’
4- A ile K arasındaki tüm harflerle (A ve K dadil) başlayan tüm kayıtlar(Ahmet, Burak, Esra, Kemal…)
1
SELECT * FROM TabloAdi WHERE AlanAdi LIKE ‘[A-K]%’
5- A ile L arasındaki harfler dışındaki harfler ile başlayan tüm kayıtlar(Melih, Mustafa, Sevcan)
1
SELECT * FROM TabloAdi WHERE AlanAdi LIKE ‘[^A-L]%’
INSERT INTO KOMUTU İLE İLGİLİ SQL SORGULARI
1- Adı Ali Dursun olan yazarı yazarlar tablosuna ekleyelim;
1
Insert into yazar(yazarad,yazarsoyad) values (‘ali’,’dursun’)
2- Adı Ali Dursun olan yazarı yazarlar tablosuna ekleyelim;
1
Insert into yazar(yazarsoyad,yazarad) values (‘dursun’,’ali’)
3- Adı Ali Dursun olan yazarı yazarlar tablosuna ekleyelim;
1
Insert into yazar values (‘ali’,’dursun’) Insert into yazar values (Null,’ali’,’dursun’)
4- Adı Yaşar Kemal ve Mahmut Demir olan iki yazarı yazar tablosuna tek sorgu ile ekleyiniz.
1
Insert into yazar(yazarad,yazarsoyad) values (‘Yaşar’,’Kemal’),(‘Mahmut’,’Demir’)
5- Örn: 10C sınıfı öğrencilerinin adını soyadını yazarlar tablosuna ekleyelim
1
Insert into yazar(yazarad,yazarsoyad) Select ograd,ogrsoyad from ogrenci where sinif = ’10C’
6- Tablomuzdaki bütün alanları kopyalama:
1
INSERT INTO personel_yedek SELECT * FROM personel
7- Tablomuzdaki alanların adını değiştirerek kopyalama:
1
INSERT INTO personel_yedek (isim, sehir) SELECT ad_soyad, sehir FROM personel
8- Belli kritere göre seçilen kayıtları kopyalama
1
INSERT INTO istanbul_personelleri (isim) SELECT ad_soyad FROM personel WHERE sehir=’istanbul’
9- Kırmızı ile yazdıklarım bir öğrenci için girilecek bilgilerdir.
1
mysql_query(“INSERT INTO ogrenciler (no,isim)VALUES(´18´,´Aybars´)”);
10- Personel tablosunda sadece Personel_no ve Bölümü alanlarına veri girişi yapmak istiyorsak SQL sorgu kodu aşağıdaki şekilde olacaktır.
1
INSERT INTO PERSONEL(Personel_no, Bölümü) VALUES (18, ‘Müzik’);
ORDER BY KOMUTU İLE İLGİLİ SQL SORGULARI
1- Küçükten büyüğe sıralama için ASC anahtarını koymayabilirsiniz. Zaten default olarak sonuçlar bu şekilde geliyor
1
SELECT * FROM SONUCLAR ORDER BY OGRENCI_NO
2- Sorgularımızı DESC anahtar kelimesini kullanarak büyükten küçüğe olacak şekilde revize edelim.
1
SELECT * FROM SONUCLAR ORDER BY OGRENCI_NO DESC
3- Burada, çok sayıda alana göre sıralama, farklı sıralama kriterlerine göre gerçekleştirilebilir. Örneğin aşağıdaki SELECT komutu ile ad alanına göre artan, soyad alanına göre azalan, maas alanına göre artan sıralanmış tablo elde edilmektedir.
1
SELECT sicil,ad,soyad,maas FROM Personel ORDER BY ad ASC,soyad DESC,maas ASC;
4- Personel isimli bir tabloda sicil, ad, soyad, maas sütunları olsun. Maaşa göre artan sırada (küçükten büyüğe doğru) sıralı olarak listeleyiniz.
123
SELECT sicil,ad,soyad,maas FROM Personel ORDER BY maas ASC;
5- Her bölümdeki ortalama maaş nedir?
1
SELECT bol_no,AVG(maas) FROM Personel GROUP BY bol_no;
UPDATE KOMUTU İLE İLGİLİ SQL SORGULARI
Elemanlar tablosundan maaşı 1500 TL den az olanların maaşlarını 1800 TL olarak güncelleyin.
1
update elemanlar set maas = 1800 where maas < 1500
Şirket çalışanlarından Leyla’nın maaşını 2000 tl olarak güncelleyiniz.
1
update elemanlar set maas=2000 where ad=’leyla’
Ali işten ayrıldığı için onun yerine gelen Hakanın bilgilerini şu şekilde güncelleyiniz Ad = Hakan Maaş = 2200 Tc = 6321456.
1
update elemanlar set ad=’Hakan’, maas=2200, tc=6321456 where ad=’Ali’
elma tablosundan id nosu 1 olan veri(ler)in cins alanını amasya yapar.
1
UPDATE elma SET cins = ‘amasya’ WHERE id = ‘1’
Örnekte ‘Global Fast Foods’ veriabanındaki bir mü şterinin telefon numarası UPDATE komutu kullanılarak de ğiştirilmektedir. ‘copy_f_customers’ tablosu bu i şlemde kullanılmaktadır.
1
UPDATE copy_f_customers Set phone number=’05489752159’ WHERE id=123;
Global Fast Foods’ veritabanı kullanılarak mü şteri numarası 123 olan satır silmek için bir örnek verilmektedir.
1
DELETE FROM copy_ f_customers WHERE ID =123;
2500 tl’den fazla maaş ve 200 tl’den az prim alan personellerin primini 50 tl arttırın
1
UPDATE personel SET prim=prim+50 WHERE maas>2500 AND prim<200;
işe balsama tarihi 2015 öncesi veya primi 300 tl’nin altında olanların maaşına 100 tl zam yapın
1
UPDATE personel SET maas=maas+100 WHERE ise_baslama_tarihi<‘2015.01.01’ or prim<300;
Öğrenci listesi tablosun’da ki adı deniz olan bütün kayıtların bölümünü bilişim olarak değiştirir.
1
UPDATE OgrenciListesi SET Bolum =” Bilişim” WHERE Ad=”Deniz”;
Ogrenci Listesindeki bütün ad alanındaki verileri Deniz yapar. (bu kullanıma dikkat etmeli. Şart verilmediği için bütün ad alanındaki verileri Deniz yapacaktır.