SQL Sorgu Örnekleri. SQL SELECT, SQL WHERE, SQL DISTINCT, SQL AND OR, SQL ORDER BY, SQL INSERT INTO, SQL UPDATE, SQL DELETE, SQL INJECTION, SQL SELECT TOP, SQL LIKE, SQL WILDCARDS SQL IN, SQL BETWEEN, SQL ALIASES, SQL JOINS, SQL INNER JOIN, SQL SELECT INTO, SQL CREATE, SQL AVG, SQL COUNT,SQL MAX, SQL MIN, SQL LEN, SQL ROUND kullanımları ile ilgili SQL Sorgu Örnekleri.
Sql 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;
Select ad,soyad FROM musteri |
musteri tablosunda bulunan tüm kayıtları listelemek için;
Select *From musteri |
SQL SELECT DISTINCT
Bir tabloda bir sütun yinelenen değerleri içerebilir. Distinct ile farklı değerleri listeleyebiliriz.
123 | 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;
SELECT * FROM musteri WHERE sehir='istanbul' |
yada cinsiyet “K” olan kayıtları listelemek için;
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;
SELECT * FROM musteri |
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;
SELECT * FROM musteri |
AND ve OR operatörü birliktede kullanılabilir.
Örnek olarak musteri tablosunda cinsiyeti ‘K’ olan ve Şehri “Konya” yada “Manisa” olanları listelemek için.
SELECT * FROM musteri |
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.
SELECT * FROM musteri |
Azalan sıralama örneği;
SELECT * FROM musteri |
INSERT INTO Kullanımı
Kayıt eklemek için kullanılır.
örnek olarak musteri tablosuna bir kayıt ekleyelim.
INSERT INTO musteri(ad, soyad, dtarih, sehir, cinsiyet, puan) |
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.
UPDATE musteriler |
SQL DELETE Kullanımı
Tablodan kayıt silmek için kullanılır.
Örnek olarak musterino su 4 olan kaydı silmek için
DELETE FROM musteriler |
musteriler tablosundaki tüm kayıtları silmek için
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.
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.
SELECT * FROM musteriler |
Şehri s ile biten kayıtları listelemek için;
SELECT * FROM musteriler WHERE sehir LIKE '%s' |
Şehrin içerisinde “tan” bulunan kayıtları listelemek için;
SELECT * FROM musteriler |
SQL YER TUTUCU KARAKTERLER
musteriler tablosunda adı “al” ile başlayan kayıtları listelemek için;
SELECT * FROM musteriler WHERE AD LIKE 'al%' |
musteriler tablosunda adı “al” ile biten kayıtları listelemek için;
SELECT * FROM musteriler WHERE 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. :))
SELECT * FROM musteriler |
Adı a ile b ile yada s ile başlayan kayıtları listeleyelim.
SELECT * FROM musteriler |
şimdide tam tersi a ile b ile yada s ile başlamayan kayıtları listeleyelim.
SELECT * FROM musteriler |
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.
SELECT * FROM musteriler |
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.
SELECT * FROM musteriler |
Doğum tarihi 01/01/1996 ile 01/01/2006 arasındaki kişileri listelemek için;
SELECT * FROM musteriler |
musteriler tablosunda adı C ve E arasında olan kayıtları listeleyelim.
SELECT * FROM musteriler |
SQL ALIASES Kullanımı
SQL tablosunda yer alan sütunlara geçici bir ad vermek için kullanılır.
SELECT ad AS ADI, |
SQL JOIN Kullanımı
Orders ve Customers tablolarını kullanarak oluşturulan örneği inceleyelim.
OrderID | CustomerID | OrderDate |
---|---|---|
10308 | 2 | 1996-09-18 |
10309 | 37 | 1996-09-19 |
10310 | 77 | 1996-09-20 |
CustomerID | CustomerName | ContactName | Country |
---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mexico |
SELECT Orders. |
Sorgumuzu çalıştırdığımızda
OrderID | CustomerName | OrderDate |
---|---|---|
10308 | Ana Trujillo Emparedados y helados | 9/18/1996 |
10365 | Antonio Moreno Taquería | 11/27/1996 |
10383 | Around the Horn | 12/16/1996 |
10355 | Around the Horn | 11/15/1996 |
10278 | Berglunds snabbköp | 8/12/1996 |
SQL LEFT JOIN Kullanımı
SELECT Customers. |
SQL RIGHT JOIN Kullanımı
SELECT Orders.OrderID, Employees.FirstName |
SQL SELECT INTO Kullanımı
SELECT INTO deyimi bir tablodan veri seçer ve yeni bir tabloya ekler.
örnek olarak musteriler tablosunun musterilerbackup isimli yedeğini oluşturabiliriz.
SELECT *INTO musteriler |
Sadece şehri “İstanbul” olan kayıtları eklemek için;
SELECT *INTO musteriler |
SQL CREATE Kullanımı
Yeni bir database oluşturmak için;
SQL CREATE DATABASE dbname |
SQL CREATE TABLE Kullanımı
Yeni tablo oluşturmak için kullanılır.
CREATE TABLE musteriler |
SQL AVG Kullanımı
AVG () işlevi sayısal bir sütunun ortalama değerini döndürür.
Örnek olarak musteriler tablosunda puan ortalamasını bulalım.
SELECT AVG(puan) FROM musteriler |
Aşağıdaki sorguda ise musteriler tablosunda puanı, puan ortalamasının üstünde yer alan kayıtlara ait ad ve soyad verileri listelenmektedir.
SELECT ad, soyad FROM musteriler |
SQL COUNT Kullanımı
COUNT () işlevi, belirtilen ölçütlerle eşleşen satır sayısını döndürür.
Örnek olarak musteriler tablosundaki toplam kayıt sayısını bulalım.
SELECT COUNT(*) FROM musteriler; |
Şimdide musteriler tablosunda kaç farklı şehir olduğunu bulalım.
SELECT COUNT(DISTINCT sehir) FROM musteriler; |
Şimdi de Şubat ayında doğan Müşterileri sayısını bulalım.
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.
SELECT COUNT(CustomerID) AS Orders |
SQL ROUND Kullanımı
Ondalıklı sayıyı yuvarlamak için kullanılır.
SELECT urunadi, ROUND(fiyat,0) AS YuvarlanmisFiyat FROM 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.
SELECT ad,LEN(soyad) as soyaduzunlugu FROM 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.
1234 | 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.
Select MAX(puan) AS EnyuksekPuan FROM musteriler |
Şimdide en yüksek puana sahip müşterileri ad ve soyadı ile listeleyelim.
SELECT ad,soyad,puan |
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.
Select MIN(puan) AS EndusukPuan FROM ogrenciler |
Şimdide en düşük puana sahip ogrencileri ad ve soyadı ile listeleyelim.
SELECT ad,soyad,puan |
SQL Örnek Çalışma Soruları
SELECT KOMUTU İLE İLGİLİ SQL SORGULARI
- Öğrenci tablosundaki tüm kayıtları listeleyin.
select * from ogrenci |
- Öğrenci tablosundaki öğrencinin adını ve soyadını ve sınıfını listeleyin.
select ograd,ogrsoyad,sinif from ogrenci |
- Öğrenci tablosundaki cinsiyeti Kız ve Sınıfı 10A olan öğrencileri listeleyiniz.
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.
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.
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.
select * from kitap where sayfasayisi between 50 and 200 |
- Öğrenci tablosunda adı Fidan, İsmail ve Leyla olan öğrencileri listeleyiniz.
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.
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.
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
DELETE FROM ogrenci WHERE adi like ‘_a%’; |
2- Örnek notu 50 den küçük olan kayıtları siler
DELETE FROM ogrenci WHERE notu <50; |
3- Örnek bilgisayar öğrencilerinin tüm not bilgilerini notlar tablsoundan silen sql komutu
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.
DROP TABLE yazar |
5- örnek: isimi Kamil olan öğrenciyi siliyoruz.
DELETE FROM tblogrenci WHERE isim=‘Kamil’; |
6- elma tablosunun id nosu 15’ten büyük olan verileri siler
DELETE FROM elma WHERE id > ‘15’ |
7- elma tablosunun id nosu 3 ile 10 arasında olan verileri siler
DELETE FROM elma WHERE id BETWEEN 3 AND 10 |
8- elma tablosunun cins alanı “zonguldak” olan kayıt(lar)ı siler.
DELETE FROM elma WHERE cins = ‘zonguldak’ |
9- elma tablosundan id nosu 1 olan veriyi siler;
DELETE FROM elma WHERE id = ‘1’ |
10- Doğum yeri İzmir olan 11b sınıfındaki erkek öğrencileri silin
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…)
SELECT * FROM TabloAdi WHERE AlanAdi LIKE ‘ev%’ |
2- içerisinde Ankara kelimesi geçen kayıtlar
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…)
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…)
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)
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;
Insert into yazar(yazarad,yazarsoyad) values (‘ali’,’dursun’) |
2- Adı Ali Dursun olan yazarı yazarlar tablosuna ekleyelim;
Insert into yazar(yazarsoyad,yazarad) values (‘dursun’,’ali’) |
3- Adı Ali Dursun olan yazarı yazarlar tablosuna ekleyelim;
Insert into yazar |
4- Adı Yaşar Kemal ve Mahmut Demir olan iki yazarı yazar tablosuna tek sorgu ile ekleyiniz.
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
Insert into yazar(yazarad,yazarsoyad) Select ograd,ogrsoyad from ogrenci where sinif = ’10C’ |
6- Tablomuzdaki bütün alanları kopyalama:
INSERT INTO personel_yedek SELECT * FROM personel |
7- Tablomuzdaki alanların adını değiştirerek kopyalama:
INSERT INTO personel_yedek (isim, sehir) SELECT ad_soyad, sehir FROM personel |
8- Belli kritere göre seçilen kayıtları kopyalama
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.
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.
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
SELECT * FROM SONUCLAR ORDER BY OGRENCI_NO |
2- Sorgularımızı DESC anahtar kelimesini kullanarak büyükten küçüğe olacak şekilde revize edelim.
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.
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.
SELECT sicil,ad,soyad,maas FROM Personel ORDER BY maas ASC; |
5- Her bölümdeki ortalama maaş nedir?
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.
update elemanlar set maas = 1800 where maas < 1500 |
- Şirket çalışanlarından Leyla’nın maaşını 2000 tl olarak güncelleyiniz.
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.
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.
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.
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.
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
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
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.
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.
UPDATE OgrenciListesi SET ad="Deniz"