SQL Komutları

(SELECT — INSERT — UPDATE — DELETE — TRANCATE — WHERE — AND / OR — DISTINCT — ORDER BY — TOP)

Ebruozdil
5 min readDec 28, 2023

SELECT KOMUTU

Verileri çekmemize, sorgulamamıza yarayan bir komuttur ve sytax'ı (yazım şekli ) şu şekildedir;

SELECT KOLON1, KOLON2, KOLON3, … FROM TABLOADI WHERE <ŞARTLAR>

USE ETRADE --kullandığımız şemayı burda belirtebiliriz
SELECT ID, CITY, BIRTHDATE FROM CUSTOMERS;

SELECT [ID], [CITY] FROM CUSTOMERS;
SELECT * FROM CUSTOMERS;
-- * sembolü CUSTOMERS tablosundaki bütün kolonları getirmemizi sağlar.

INSERT KOMUTU

Bir tabloya yeni kayıtlar eklemek için kullandığımız komuttur.
Hangi tablonun hangi kolonuna hangi değerleri atacağımızı belirtiyoruz.

INSERT INTO TABLOADI (KOLON1, KOLON2, KOLON3, …) 
VALUES (DEĞER1, DEĞER2, DEĞER3, …)

INSERT INTO CUSTOMERS(ID, CUSTOMERNAME, CITY, BIRTHDATE, DISTRICT, GENDER)
VALUES (5, 'MEHMET ÖZAL', 'ANTALYA','1990-12-21','ALANYA','E')

UPDATE KOMUTU

Update komutunu olan bir veriyi güncellemek, değiştirmek için kullanırız.

UPDATE TABLOADI SET COLUMN1=VALUE1, COLUMN2=VALUE2,...
WHERE <ŞARTLAR>

UPDATE CUSTOMERS
SET NATION='TR'

--bu örnekte customers tablosunun nation kolonunun değerlerini güncelledik.
--where koşulu koymazsak tüm kolonu günceller

--tek seferde birden fazla kolonu da aşağıdaki gibi güncelleyebiliriz.
SET CUSTOMERS
SET NATION='US', AGE='40'


---------------------------------------ek örnek
--eğer BIRTDATE verisi varsa DATEDIFF fonksiyonu ile yaşı otomatik hesaplatıp güncelleyebiliriz.
SELECT DATEDIFF(YEAR,'1980-12-11','2020-01-01') --iki tarih arasındaki farkı aldık.
SELECT DATEDIFF(YEAR,'1980-12-11',GETDATE()) --tarihle şimdi arasındaki zamanı hesapladık.

UPDATE CUSTOMERS
SET NATION='TR', AGE=DATEDIFF(YEAR,BIRTHDATE,GETDATE())

DELETE KOMUTU

DELETE komutu kayıt silmek için kullandığımız bir komuttur.

DELETE 
FROM TABLOADI
WHERE <ŞARTLAR>

--WHERE koşulu koymazsak tablodaki tüm verileri siler.
DELETE
FROM CUSTOMERS
WHERE AGE<15 --15 yaşından küçük müşterileri siler.

DELETE
FROM CUSTOMERS --tüm müşterileri siler. Tablo boşalmış olur.

TRANCATE KOMUTU

TRANCATE komutu tabloyu ilk oluşturduğumuz haline getirir. İçindeki tüm verileri siler.

Delete komutundan farkı;
- Delete komutu ile 100 kayıt silip tabloyu boşalttıysak ilk kaydımız 101 olarak yerini alır.Fakat Truncate ile sildiğimizde 1. kayıt olarak kaydedilir.
- Truncate işlemi çok hızlıyken Delete işlemi daha yavaştır.

TRUNCATE 
FROM TABLOADI

TRUNCATE
FROM CUSTOMERS

WHERE ŞARTI

WHERE şartı SQL’ de en çok kullandığımız komutlardandır. Bir data seti içerisinde verdiğimiz kriterlere göre verilerimizi filtrelemek amacıyla kullanılır. Bunu sadece veriyi çekerken değil; silerken, güncellerken hatta eklerken bile kullanırız.

SELECT KOLON1, KOLON2, KOLON3, … 
FROM TABLOADI
WHERE <ŞARTLAR>

DELETE
FROM TABLOADI
WHERE <ŞARTLAR>

Hadi gelin bu WHERE şartlarında kullandığımız operatörlere bakalım;

=        -Eşittir
<> -Eşit değildir
> -Büyüktür
> -Küçüktür
>= -Büyük eşittir
<= -Küçük eşittir
BETWEEN -Arasındadır
LIKE -İle başlar, İle biter, İçerir
IN -İçindedir
NOT LIKE -İle başlamaz, İle bitmez, İçermez
NOT IN -İçinde değildir

Burada sadece tanımlamasını yapmak istedim. Hadi aşağıda örnekleriyle beraber neymiş inceleyelim.

=        -Eşittir
SELECT * FROM CUSTOMERS WHERE CITY='ISTANBUL'
--ISTANBUL'daki müşterileri getiririz.

<> -Eşit değildir
SELECT * FROM CUSTOMERS WHERE CITY<>'ISTANBUL'
--ISTANBUL dışındaki müşterileri getiririz.

> -Büyüktür
SELECT * FROM CUSTOMERS WHERE BIRTHDAY>'1990-01-01'
--bu sorguyla verilen tarihten sonra doğanları getirmiş oluruz.

< -Küçüktür
SELECT * FROM CUSTOMERS WHERE BIRTHDAY<'1990-01-01'
--bu sorguyla verilen tarihten önce doğanları getirmiş oluruz.

>= -Büyük eşittir
<= -Küçük eşittir
--nunlarda yazılan değeri de dahil etmiş oluruz

BETWEEN -Arasındadır
SELECT * FROM CUSTOMERS WHERE AGE BETWEEN 20 AND 30
--20 ile 30 yaş arasındakileri getirir.

LIKE -İle başlar, İle biter, İçerir
SELECT * FROM CUSTOMERS WHERE CUSTOMERNAME LIKE 'EBRU%'
--ismi EBRU ile başlayan müşterileri getirir.
SELECT * FROM CUSTOMERS WHERE CUSTOMERNAME LIKE '%ÖZDIL'
--ismi ÖZDIL ile biten müşterileri getirir.
SELECT * FROM CUSTOMERS WHERE CUSTOMERNAME LKE '%SU%'
--isminin içerisinde SU geçenleri getirir.

IN -İçindedir
SELECT * FROM CUSTOMERS WHERE CITY IN('ISTANBUL','ANKARA','BURSA')
--ISTANBUL,ANKARA ve BURSA ilindeki müşterileri getirir.

NOT LIKE -İle başlamaz, İle bitmez, İçermez
--LIKE'ın tam tersi olarak;
SELECT * FROM CUSTOMERS WHERE CUSTOMERNAME NOT LIKE 'EBRU%'
--ismi EBRU ile başlaMAyan müşterileri getirir.
SELECT * FROM CUSTOMERS WHERE CUSTOMERNAME LIKE '%ÖZDIL'
--ismi ÖZDIL ile bitMEYen müşterileri getirir.
SELECT * FROM CUSTOMERS WHERE CUSTOMERNAME LKE '%SU%'
--isminin içerisinde SU geçMEYenleri getirir.

NOT IN -İçinde değildir
SELECT * FROM CUSTOMERS WHERE CITY NOT IN('ISTANBUL','ANKARA','BURSA')
--ISTANBUL,ANKARA ve BURSA ilinde OLMAYAN müşterileri getirir.
SELECT * FROM CUSTOMERS WHERE CITY IN('ISTANBUL','ANKARA','BURSA')

UPDATE CUSTOMERS SET GENDER='ERKEK' WHERE GENDER='E'

DELETE FROM CUSTOMERS WHERE ID=18

AND / OR OPERATÖRLERİ

Birden fazla şartı beraber kullanmak için ve veya operatörlerini kullanıyoruz.

SELECT * FROM CUSTOMERS WHERE CITY='İSTANBUL' AND DISTRICT='ÜSKÜDAR' OR DISTRICT='SARIYER'

--AND operatöründe istediğimiz koşulların hepsini karşılayan veriler getirilir.
--OR operatöründe ise en az birini sağlaması yeterlidir.

SELECT * FROM CUSTOMERS WHERE CITY='İSTANBUL' AND DISTRICT='Beylikdüzü'
--AND operatörü ile şehri İSTANBUL ve bölgesi Beylikdüzü olan verileri getirdik.

SELECT * FROM CUSTOMERS WHERE CITY='İSTANBUL' AND DISTRICT='Beylikdüzü' AND DISTRICT='Esenler'
--Şehri İSTANBUL ilçesi hem Beylikdüzü hem Esenler olan kayıtları getiremediği için boş döner.

SELECT * FROM CUSTOMERS WHERE CITY='İSTANBUL' AND DISTRICT='Esenler' AND GENDER='ERKEK'
--Bütün şartları sağlayan veriler getirilir.

------------------AND operatörü koşulların kesişimini OR operatörü birleşimini getiriyor.

SELECT * FROM CUSTOMERS WHERE CITY='İSTANBUL' OR CITY='İZMİR'
--şehri İSTANBUL veya İZMİR olanları getirir.

--OR operatörünün işlevi IN'le de yazılabilir. Bir kaç örneğine bakalım;
SELECT * FROM CUSTOMERS WHERE CITY='İSTANBUL' OR CITY='İZMİR' OR CITY='BURSA'
SELECT * FROM CUSTOMERS WHERE CITY IN('İSTANBUL','İZMİR','BURSA')
--bu sorgular birbirine eşdeğerdir.
SELECT * FROM CUSTOMERS WHERE BIRTHDATE BETWEEN '19900101' AND '19981231'
SELECT * FROM CUSTOMERS WHERE BIRTHDATE>='19900101' AND BIRTHDATE<='19981231'

SELECT * FROM CUSTOMERS WHERE NOT BIRTHDATE BETWEEN '19900101' AND '19981231'
SELECT * FROM CUSTOMERS WHERE BIRTHDATE<='19900101' OR BIRTHDATE>='19981231'

DISTINCT KOMUTU

DISTINCT komutunu sorguladığımız verilerde tekrar eden verileri tekilleştirmekte kullanırız. Örneğin bir mağazada bir müşteri 10

SELECT DISTINCT
KOLON1, KOLON2, KOLON3, …
FROM TABLOADI
WHERE <ŞARTLAR>

SELECT DISTINCT CITY
FROM CUSTOMERS
--müşterilerin bulunduğu farklı şehirleri listeler

SELECT CITY, DISTRICT FROM CUSTOMERS
WHERE CITY='ISTANBUL'
--ISTANBUL şehrinde bulunan müşterilerin şehir ve bölge bilgilerini listeler.

SELECT DISTINCT CITY, DISTRICT FROM CUSTOMERS
WHERE CITY='ISTANBUL'
----ISTANBUL şehrinde bulunan müşterilerin farklı şehir ve bölge bilgilerini listeler.

ORDER BY KOMUTU

Listelediğimiz verileri sıralamak için kullandığımız komuttur. Bu sıralama belirtilen kolona göre yapılır. Ve varsayılan olarak artan (küçükten büyüğe) sıradadır. ORDER BY için sözdizimi (syntax - sintaks) aşağıdaki gibidir:

SELECT
KOLON1, KOLON2, KOLON3,...
FROM TABLOADI
WHERE <ŞARTLAR>
ORDER BY KOLON1 ASC, KOLON2 DESC, KOLON3 ASC

SELECT kolon_adı(ları)
FROM tablo_adı
ORDER BY kolon_adı(ları) ASC|DESC

--Birden fazla sıralama yapabiliriz örneğin,
ORDER BY AGE ASC, CUSTOMERNAME DESC
--burda öncelikli yaşa göre aynı zamanda isme göre sıralar


/*Burada sıralamanın azalan (büyükten küçüğe)
şekilde olmasını istiyorsak DESC anahtar kelimesini kullanırız.
Artan şekilde olması için ASC yazmamız veya hiç bir şey yazmamamız yeterlidir */


SELECT * FROM CUSTEMERS
--dediğimizde varsayılan olarak id' ye göre küçükten büyüğe sıralar.
--bu da aşağıdaki yazılışa eş değerdir.
SELECT * FROM CUSTEMERS ORDER BY ID ASC

TOP KOMUTU

Çekilen veri setinin hepsini görmek yerine bir kısmını görmemizi sağlayan komuttur. Örneğin 10 tanesini getirsin, %20 sini getirsin istediğimizde kullanabiliriz.

SELECT TOP N
KOLON1, KOLON2, KOLON3,...
FROM TABLOADI
WHERE <ŞARTLAR>

SELECT TOP 20
* FROM CUSTEMERS
ORDER BY CUSTOMERNAME
--ilk 20 müşteriyi getirip, müşteri adına göre sıralar.

SELECT TOP 100 PERCENT
* FROM CUSTEMERS
ORDER BY CUSTOMERNAME
--%100'ünü getirir.

--

--