SQL

SQL (Structured Query Language), “Yapısal Sorgulama Dili
Temel SQL Komutları

SELECT: Veritabanındaki tablolardan, kayıtları sorgular.

                    SELECT * FROM TABLOADI    =    Tablonun bütün alanlarını çağırır.

Kullanımı:
                    SELECT
                    KOLON1, KOLON2, KOLON3,...
                    FROM TABLOADI
                    WHERE <ŞARTLAR>

Ör: Tablonun bütün alanlarını getirme.
    SELECT * FROM CUSTOMERS

Ör: Tablonun belirli alanlarını getirme. (Şehir, Cinsiyet)
    SELECT CITY, GENDER FROM CUSTOMERS

Ör: Tablonun belirli alanlarında, şarta uyan sonuçları getirme. (Şehir "AYDIN" olanları getir)
    SELECT CITY, GENDER FROM CUSTOMERS  WHERE CITY = 'Aydın'

---   ---   ---

INSERT INTO ile Tablolara Veri Eklemek:
[dbo].[vize]         --Veritabanı
select * from [dbo].[vize] --Veritabanı içeriğini listele

Kullanımı:
INSERT INTO Veritabanı (Kolon_adı) SELECT Eklenecek_değer --Açıklama
INSERT INTO [dbo].[vize] (CitizienshipNumber) SELECT 12345678901 --Örnek Kullanımı

DELETE ile Tablodan Veri Silmek:
Kullanımı:
DELETE FROM Veritabanı WHERE Kolon_adı = 12345678901  -- Veritabanı, Kolon ve Silinecek değer
DELETE FROM [dbo].[vize] WHERE CitizienshipNumber = 12345678901 --Örnek Kullanımı


Tekrar Eden Kayıtları Listeleme:
Kullanımı:
Select Kolon_adı from Veritabanı GROUP BY Kolon_adı HAVING COUNT(*) > 1
--1 den fazla tekrar eden değerler (Açıklama)

Select CitizienshipNumber from [dbo].[vize] GROUP BY CitizienshipNumber HAVING COUNT(*) > 1 
--Örnek Kullanımı

Tekrar Etmeyen Kayıtları Listeleme:
Kullanımı:
Select Kolon_adı from Veritabanı GROUP BY Kolon_adı HAVING COUNT(*) > 0
--0 değeri ile, tekrar etmeyen kayıtları alınabildiğini tecrübe ettim.
---   ---   ---

INSERT: Tabloya yeni kayıt ekler.
Kullanımı:
                    INSERT INTO TABLOADI
                    (KOLON1, KOLON2, KOLON3,...)
                    VALUES
                    (DEĞER1, DEĞER2, DEĞER3,...)

Ör: Tabloya yeni bir kayıt eklenmesi.
INSERT INTO CUSTOMERS (CUSTOMERNAME, CITY, BIRTHDATE, DISTRICT, GENDER)
VALUES ('Muhammed Yusuf OLGUN', 'Aydın', '1980-01-01', 'Merkez', 'E')

Durum: Kodun yazımı sonrası, aşağıda "bu işlemden etkilenen satır sayısını" bildirir.

Çıktı: Tabloyu bir daha sorguladığımızda (SELECT * FROM CUSTOMERS), eklenen yeni kayıt görünür.



ALTER TABLE: Bir tablonun özelliklerini değiştirir.
Kullanımı:
                    ALTER TABLE TABLO ADI
                    ADD KOLON ADI VERİ TİPİ;

Ör: Tabloya, Yeni bir Sütun ("AGE" = "Yaş") ekleme. 
ALTER TABLE CUSTOMERS ADD AGE INT

Kodun yazılmasından sonraki sorguda, "AGE" Sütununun eklendiği görülmektedir.



DATEDIFF: İki tarih arasındaki farkı verir.

Ör: İki tarih arasındaki farkı yıl olarak alma.
SELECT DATEDIFF(YEAR, '1980-10-15','2021-01-01')

Ör: İlk tarih ile Şimdiki Tarih arasındaki farkı, yıl olarak alma.
SELECT DATEDIFF(YEAR, '1980-10-15',GETDATE())



UPDATE: Bir tablodaki kaydın bir yada daha fazla alanını günceller, değiştirir.
Kullanımı:
                    UPDATE TABLOADI
                    SET COLUMN1=VALUE1, SET COLUMN2=VALUE2...
                    WHERE <ŞARTLAR>

Tablodaki mevcut durum.

Ör:
 İlgili Kolon başlıkları altındaki içeriklerin 
"NULL" yerine uygun ifadelerin eklenmesi.
"NATION"- (TURKEY) ve "RENK" (MAVI) bilgisiyle güncellenmesi.
Komutun yazılması ile etkilenen satır sayısını bildirir.
UPDATE CUSTOMERS SET NATION='TURKEY' , RENK='MAVI'

Çıktı: Yeni bilgilerle, ilgili kolonlarda güncelleme tamamlandı.

Ör: Tablodaki "BIRTHDATE" alanındaki tarih ile "Şimdiki tarih" farkının alınarak gerçek yaş bilgisinin "AGE" alanına işlenmesi. (UPDATE formülü ile DATEDIFF formülünün birleştirilmesi)
Mevcut durum:

Kodun yazılması: (UPDATE TABLOADI SET COLUMN1=VALUE)
UPDATE CUSTOMERS SET AGE=DATEDIFF(YEAR,BIRTHDATE,GETDATE())

Çıktı:



DELETE: Bir tabloyu veya tablodan istenen kayıttı siler.
Kullanımı:
                    DELETE
                    FROM TABLOADI
                    WHERE <ŞARTLAR>

Ör: Tablonun tamamını silme.
DELETE FROM CUSTOMERS

Ör: Tablodan istenen kayıttı silme. ("ID" bilgisi "10" olan satırı sil)
SELECT FROM CUSTOMERS WHERE ID=10

Kodun çalışmasından sonra, etkilenen satır bilgisi mesaj alanına yansır.

Çıktı: Komutun çalışmasından sonra, "ID" bilgisi "10" olan satırın silindiği görünür.


TRUNCATE: Tablonun tamamını siler.
* TRUNCATE komutu ile tablonun tamamı silinmektedir. 
* DELETE komutunda kullanılan WHERE koşulu ile filtreleme yapılamaz. Identity de baştan başlar.
* DELETE komutundan farklı olarak, Eğer silme yapılan tabloda identity column (otomatik artan id kolonu) varsa TRUNCATE işleminden sonra bu kolon 1 den başlar. DELETE işleminde ise kaldığı yerden devam eder.
* Eğer tablonuzda Foreign key içeren içeren sütun varsa TRUNCATE işlemi yapılamaz.  (Foreign key nedir? "SQL içerinde SQL Primary Key veya SQL Unique ile birlikte iki tabloyu ilişkilendirmek için kullanılan bir kısıtlamadır.)

Kullanımı:
                    TRUNCATE TABLE TABLOADI

Ör: Tablonun tamamını silme.
TRUNCATE TABLE CUSTOMERS

Kodun yazılmasından sonra:

Sonuç, işlem tamamlandı.



WHERE ŞARTLARI:
= Eşittir
<> Eşit değildir
> Büyüktür
> Küçüktür
>= Büyüktür ya da eşittir
<= Küçüktür ya da eşittir
BETWEEN Arasındadır
LIKE ile başlar, ile biter, İçerir
IN İçindedir
NOT LİKE İle başlamaz, İle bitmez, İçermez
NOT IN İçinde değildir.
AND Ve koşulu (İkisi birlikte olması şartı) (A*B)
OR Veya koşulu (İkisinden birinin olması yeterli) (A+B)

Kullanım Örnekleri:
Şehir bilgisi İSTANBUL olanları getir.
WHERE CITY='İSTANBUL'
WHERE CITY<>'İSTANBUL'

Doğum yılı Tablodaki tarihe (Büyük, Büyük eşit, Küçük) olanları getir
WHERE BIRTDATE>'1990-01-01'
WHERE BIRTDATE>='1990-01-01'
WHERE BIRTDATE<'1990-01-01'

Yaşı 20 ile 30 arasında olanlar.
WHERE AGE BETWEEN 20 AND 30

İsmi "Muhammed" ile başlayanlar
WHERE TABLOADI LIKE 'MUHAMMED%'
WHERE CUSTOMERNAME LIKE 'MUHAMMED%'

İsmi "Muhammed" ile bitenler
WHERE TABLOADI LIKE '%MUHAMMED'
WHERE CUSTOMERNAME LIKE '%MUHAMMED'

İçinde "Muhammed" ismi geçenler.
WHERE TABLOADI LIKE '%MUHAMMED%'
WHERE CUSTOMERNAME LIKE '%MUHAMMED%'

Şehir bilgisi (İSTANBUL, ANKARA ve ÇANAKKALE) olanları getir.
WHERE CITY IN ('İSTANBUL','ANKARA','ÇANAKKALE')

İsmi "Muhammed" ile bitmeyenler.
WHERE TABLOADI LIKE '%MUHAMMED%'
WHERE CUSTOMERNAME NOT LIKE '%MUHAMMED%'

(İSTANBUL, ANKARA ve ÇANAKKALE) dışındaki diğer Şehir bilgisi olanları getir.
WHERE CITY NOT IN ('İSTANBUL','ANKARA','ÇANAKKALE')

Şehri "CITY" (İl) tablosunda "İSTANBUL" olup; "DISTRICT" (İlçe) tablosunda "ÜSKÜDAR" ve "BEYLİKDÜZÜ" olanları getir.
WHERE CITY ='İSTANBUL' AND DISTRICT='ÜSKÜDAR' OR DISTRICT='BEYLİKDÜZÜ'



DISTINCT: Tekrar eden satırları tekilleştirmek amacıyla kullanılır.
Kullanımı:
                    SELECT DISTINCT
                    KOLON1, KOLON2, KOLON3,...
                    FROM TABLOADI
                    WHERE <ŞARTLAR>

Ör: Tekrar eden "Şehir" bilgisini tekilleştirerek liste sonucu verme.
SELECT DISTINCT CITY FROM CUSTOMERS
Mevcut listede Çift şehir bilgisi bulunmakta. Toplam satır sayısı 10. (Bu sayı binlerde olabilir)

"DISTINCT" komutunun çalışmasından sonra, tekrar eden satırlar tekilleşti.



ORDER BY: Sıralama Komutu (ASC "a-z sıralama"), (DESC "z-a sıralama")

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


Ör: Tablodaki "İsim" kolonunu A-Z şeklinde sırala.
SELECT * FROM CUSTOMERS ORDER BY CUSTOMERNAME ASC


A- Z Sırala
Uygulamalı Örnek:
Select TERMINAL_STATION_DESCRIPTION from [PRM].[TERMINAL_STATION]
where TERMINAL_STATION_GROUP_CODE = 'M2' and RECORD_STATUS = 'A' 
ORDER BY TERMINAL_STATION_DESCRIPTION ASC

Açıklama:
İstaston isimlerini, İstasyon db adresinde ara
M2 ve A bilgilerini ilgili tabloda içersin
Sonuçları İstasyon isimlerine göre A-Z listele


Ör: Tablodaki "Cinsiyet" kolonunu A-Z şeklinde sırala.
SELECT * FROM CUSTOMERS ORDER BY GENDER ASC

Ör: Tablodaki "İsim" A-Z şeklinde, "Doğum Tarihi" kolonunu Z-A şeklinde sırala.
SELECT * FROM CUSTOMERS ORDER BY CUSTOMERNAME ASC, BIRTHDATE DESC

Ör: Tablodaki "İsim" A-Z şeklinde, "Doğum Tarihi" kolonunu Z-A şeklinde sırala.
Tablo başlıkları yerine, Tablo "Sıra No" bilgisi de, kullanılabilmektedir. Sonuç aynıdır.
SELECT * FROM CUSTOMERS ORDER BY CUSTOMERNAME ASC, BIRTHDATE DESC



TOP: Bu komut, görmek istenen kaydın adet veya % ile belirtilen kadarını gösterir.

Kullanımı:
                    SELECT TOP N
                    KOLON1, KOLON2, KOLON3,...
                    FROM TABLOADI
                    WHERE <ŞARTLAR>

Ör: Tablonun ilk "3" Adet kaydını getirir. (Numara sayısı kadar veri getirir)
SELECT TOP 3 * FROM CUSTOMERS

Ör: Tablonun %100 'ünü getirir. (Percent kelimesi ile kullanılan değer yüzde oranı kadar listeler)
SELECT TOP 100 PERCENT * FROM CUSTOMERS

Ör: Tablonun %50 'sini getirir. 
SELECT TOP 50 PERCENT * FROM CUSTOMERS


Ör: Tablonun %50 'sini getirir. İsme göre sıralar ("ORDER BY" tek başına olsa da, default ASC yanında varmış gibi davranır.  Seçilen kolonu "A-Z" sıralar)
SELECT TOP 50 PERCENT * FROM CUSTOMERS ORDER BY CUSTOMERNAME



COUNT: Bir veritabanının satırını sayar.

Kullanımı:
                    SELECT COUNT (*) FROM TABLOADI
                    WHERE <ŞARTLAR>

Ör: "Sales" Tablosundaki tüm verileri getirir.  /Tablonun sağ alt köşesinde, satır sayısı toplamı yansır.)
SELECT * FROM SALES

Ör: "Sales" Tablosundaki tüm verileri sayar. (Satır sayısı toplam bilgisini hücrede verir.)
SELECT COUNT (*) FROM SALES



Aggregate Functions (Toplama Fonksiyonları):

Ör: "Sales" Tablosundaki "AMOUNT" (Adet) alanındaki verileri Sırala. (A-Z)
SELECT * FROM SALES ORDER BY AMOUNT


Ör: "Sales" Tablosundaki "AMOUNT" (Adet) Kolonundaki, "En Küçük Veri" 'yi getir. 
SELECT MIN(AMOUNT) FROM SALES

Ör: "Sales" Tablosundaki "AMOUNT" (Adet) Kolonundaki, "En Büyük Veri" 'yi getir. 
SELECT MAX(AMOUNT) FROM SALES

Ör: "Sales" Tablosundaki "AMOUNT" (Adet) Kolonunun "Toplam" sayısını getir. 
SELECT SUM(AMOUNT) FROM SALES

Ör: "Sales" Tablosundaki "AMOUNT" (Adet) Kolonunun "Ortalama" sayısını getir. 
SELECT AVG(AMOUNT) FROM SALES

Ör: Fonksiyonların bir arada kullanımı (MİN, MAX, SUM, AVG).
SELECT MIN(AMOUNT), MAX(AMOUNT), SUM(AMOUNT), AVG(AMOUNT) FROM SALES



GROUP BY: İlgili Kolonları Gruplar
Ör: "Sales" Tablosundaki verilerden ilk "10" tanesini, "TOTALPRICE" Grup adı vererek, Şehirlerine göre Grupla,  (Z-A) şeklinde sıralı olarak göster.
Kod:
SELECT TOP 10 
CITY, SUM(TOTALPRICE)  AS TOTALPRICE
FROM SALES 
GROUP BY CITY
ORDER BY SUM(TOTALPRICE) DESC

Ör: Bir Mağazanın Gün bazlı Satış rakamlarını getirme işlemleri
SELECT CITY, DATE2, SUM(TOTALPRICE) AS TOTALPRICE
FROM SALES WHERE CITY='ANKARA'
GROUP BY CITY, DATE2
ORDER BY CITY, DATE2

Diğer Adımlar:
1) Ankara Şehrindeki kayıtlar (12.294) Adet.
SELECT * FROM SALES WHERE CITY='ANKARA'

2) Zaman datasından Tarih - Saat ayrımı yapma (Zamanı tekilleştirebilmek için gerekli)
Convert Zaman bazlı işlemler: Tarih verisine döndür.
SELECT CONVERT(DATE, '2019-02-06 08:20:59.000')

3) Convert Zaman bazlı işlemler: Saat verisine döndür.
SELECT CONVERT(TIME, '2019-02-06 08:20:59.000')

4) Convert Zaman bazlı işlemler: Tarih-Saat verisine döndür.
SELECT CONVERT(DATETIME, '2019-02-06 08:20:59.000')

5) "DATE_" alanındaki verinin (Tarih) formatında Convert edilerek, Yeni eklenen "DATE2" alanına, aktarılması.
UPDATE SALES SET DATE=CONVERT(DATE, DATE_)

6) Ankara'daki "2019-01-01" tarihine ait kayıtları getir. (31 Adet)
SELECT * FROM SALES WHERE CITY='ANKARA' 
AND DATE2='2019-01-01' ORDER BY DATE_

Ör: Bir Günün Mağaza bazlı satış rakamlarını getirme
Kod:
SELECT DATE2, CITY, SUM(TOTALPRICE) AS TOTALPRISE
FROM SALES
WHERE DATE2='2019-01-01'
GROUP BY DATE2, CITY
ORDER BY DATE2, SUM(TOTALPRICE) DESC

Diğer Adımlar:
1) Tarih bilgisinden AY değerini öğrenme komutu örneği
SELECT DATEPART(MONTH, '2019-08-02')

2) Tarih alanı "DATE2" Ocak ayına denk gelenler için, "MONTHNAME_" Alanını "01.Ocak" yap.
UPDATE SALES SET MONTHNAME_='01.OCAK' WHERE DATEPART(MONTH, DATE2)=1 

Tarih alanı "DATE2" Ocak ayına denk gelenler, "MONTHNAME_" Alanı "01.Ocak" yapıldı.


3) Tüm datanın; Tarih alanı "DATE2" ay karşılığı, "MONTHNAME_" Alanında "01 Ocak, 02 Şubat.." şeklinde yapılması.
UPDATE SALES SET MONTHNAME_='01.OCAK' WHERE DATEPART(MONTH, DATE2)=1
UPDATE SALES SET MONTHNAME_='02.ŞUBATWHERE DATEPART(MONTHDATE2)=2
UPDATE SALES SET MONTHNAME_='03.MARTWHERE DATEPART(MONTHDATE2)=3
UPDATE SALES SET MONTHNAME_='04.NİSANWHERE DATEPART(MONTHDATE2)=4
UPDATE SALES SET MONTHNAME_='05.MAYISWHERE DATEPART(MONTHDATE2)=5
UPDATE SALES SET MONTHNAME_='06.HAZİRANWHERE DATEPART(MONTHDATE2)=6
UPDATE SALES SET MONTHNAME_='07.TEMMUZWHERE DATEPART(MONTHDATE2)=7
UPDATE SALES SET MONTHNAME_='08.AĞUSTOSWHERE DATEPART(MONTHDATE2)=8
UPDATE SALES SET MONTHNAME_='09.EYLÜLWHERE DATEPART(MONTHDATE2)=9
UPDATE SALES SET MONTHNAME_='10.EKİMWHERE DATEPART(MONTHDATE2)=10
UPDATE SALES SET MONTHNAME_='11.KASIMWHERE DATEPART(MONTHDATE2)=11
UPDATE SALES SET MONTHNAME_='12.ARALIKWHERE DATEPART(MONTHDATE2)=12

Tarih alanı "DATE2" kolonundaki ay bilgileri baz alınarak, "MONTHNAME_" Alanına artan ay bilgisi yazdırıldı.

Ör: Bir Mağazanın Aylara göre, Satış rakamlarını getirme
SELECT MONTHNAME_, SUM(TOTALPRICE) AS TOTALPRICE
FROM SALES
GROUP BY MONTHNAME_
ORDER BY MONTHNAME_

Ör: Bir Mağazada; Şehirlerin Aylara göre, Satış rakamlarını getirme.
SELECT CITY, MONTHNAME_SUM(TOTALPRICEAS TOTALPRICE
FROM SALES
GROUP BY CITY, MONTHNAME_
ORDER BY CITY, MONTHNAME_

Ör: Bir Mağazada; Aylara göre, en çok satış yapan Şehirlere göre Satış rakamlarını getirme.
SELECT MONTHNAME_, CITY, SUM(TOTALPRICEAS TOTALPRICE
FROM SALES
GROUP BY CITY, MONTHNAME_
ORDER BY MONTHNAME_, SUM(TOTALPRICE) DESC

Ör: Bir Mağazada; Kategorilere göre, Toplam tutar değerleri, Toplam Adet ve Toplam satış tutarlarını görebileceğimiz bir tablo oluşturulması. 
SELECT CATEGORY1, CATEGORY2, CATEGORY3, CATEGORY4,
SUM(TOTALPRICE) AS TOTALPRICE, 
COUNT (*) AS ROWCOUNT_, 
SUM(AMOUNT) AS TOTALAMOUNT FROM SALES
GROUP BY CATEGORY1, CATEGORY2, CATEGORY3, CATEGORY4
ORDER BY CATEGORY1, CATEGORY2, CATEGORY3, CATEGORY4

Ör: Fiş No (Mağaza bazlı) gerçek müşteri sayısı.
SELECT FICHENO, COUNT(*)
FROM SALES WHERE MONTHNAME_='01.OCAK'
AND CITY='ADANA'
GROUP BY FICHENO

Ör: Şehir bilgileri tekilleştirildikten sonra, Fiş No bazlı ve işlem adeti bazlı rapor.
SELECT 
CITY, COUNT(DISTINCT FICHENO), COUNT(*)
FROM SALES WHERE MONTHNAME_='01.OCAK'

GROUP BY CITY
ORDER BY CITY

Ör: Şehir bilgileri tekilleştirildikten sonra, Fiş No bazlı; Tekil, Genel, Toplam işlem adeti bazlı rapor.
SELECT 
CITY, COUNT(DISTINCT CUSTOMERNAME) AS TEKIL,
COUNT(DISTINCT FICHENO) CUSTOMERCOUNT,
COUNT(*) ISLEMSAYISI
FROM SALES WHERE MONTHNAME_='01.OCAK'

GROUP BY CITY
ORDER BY CITY

Ör: GROUP BY İçinde filtreleme "Having", İllere göre toplam satış rakamı "40.000" den büyük olanları getir.
SELECT CITY, SUM(TOTALPRICE)
FROM SALES
GROUP BY CITY
HAVING SUM(TOTALPRICE)>40000
ORDER BY SUM(TOTALPRICE) DESC

Ör: GROUP BY İçinde filtreleme "Having", belirtilen illere göre, toplam satış rakamı "40.000" den küçük olanları getir.
SELECT CITYSUM(TOTALPRICE)
FROM SALES
WHERE CITY IN ('ANKARA','İSTANBUL','İZMİR','AYDIN','HATAY')
GROUP BY CITY
HAVING SUM(TOTALPRICE)>40000
ORDER BY SUM(TOTALPRICE) DESC



CREATE TABLE: Yeni bir tablo oluşturur.
CREATE TABLE TEST (ID INT IDENTITY(1,1),CUSTOMERNAME VARCHAR(60))




DROP TABLE: Bir tabloyu tamamen siler.
DROP TABLE TEST



Tabloyu Script 'e çevirme.
Tablo üzerinde sağ klik/ Script table as /CREATE to /New Query Editor Window tıklayın.

Script görünümü:



Excel üzerinden formülle, Script oluşturma.

Excel formül ile hücre adresleri ile Script:
="CREATE TABLE "&A1&"("
=A2&" "&C2&","
=A3&" "&C3&""
CONSTRAINT PK_COUNTRIES PRIMARY KEY CLUSTERED (ID ASC))


Metin (Script hali):
CREATE TABLE COUNTRIES(
ID TINYINT IDENTITY(1,1),
COUNTRY VARCHAR(50)
CONSTRAINT PK_COUNTRIES PRIMARY KEY CLUSTERED (ID ASC))

Diğer satırların adımları:



Not1: Tablo adı (A1) hücresinde, seçilen değerdir. (Tırnak işaretleri boşluk, parantez vs önemlidir.)
="CREATE TABLE "&A1&"("
CREATE TABLE COUNTRIES(

Not2: "PK_" sonrası COUNTRIES tablo adıdır. ID Bilgisini Primary olarak atama kodudur.
CONSTRAINT PK_COUNTRIES PRIMARY KEY CLUSTERED (ID ASC))


Örnek Tabloların, Tamamı:

Örnek Tabloların Tamamının, Formülü



Script ile tablo oluşturma.
Kodu editöre yapıştırıp çalışrın.

Tables üzerinde sağ klik / Refresh

Sayfa yenileme sonrası, Script ile eklenen tablolar, Tables altında görüntülenir.



Tabloları, topluca Silme

"SQL Server Management Studio" programında "Wiew" Sekmesine, ardından "Object Explorer Details" menüsüne tıklayın.

Tables menüsü altında yer alan tablolar, tablolar görüntülenir. Mause sol tuşu ile seçildikten sonra, "Delete" tuşuna basınız.

Silinecek tabloların listelendiği pencere açılır. "Ok" tuşuna basın.

Tüm tabloların silinme işlemi, hızlıca gerçekleşti.



SQL Tablolara, Excel 'den veri aktarımı "Tekli" (Örnek data atama)
Tablo üzerinde sağ klik "Edit Top 200 Rows" seçeneğine tıklayın.

SQL ikonuna tıklayın.

"Top 200 ID," seçip, Delete tuşu ile silin.

Sağ klik "Execute SQL" seçeneğine tıklayarak çalıştırın.

Excel den veriyi kopyalayın.

Ok üzerinde sağ klik "paste" ile yapıştırın.


Sorgu sonrası



SQL Tablolara, Excel 'den veri aktarımı "Çoklu" (Örnek data atama)
Tablo üzerinde sağ klik "Edit Top 200 Rows" seçeneğine tıklayın. SQL ikonuna tıklayın. "Top 200 ID," seçip, Delete tuşu ile silin.


Excel datayı kopyalayın. (Sayaç ID ve 81 Şehir)

Sağ klik "Execute SQL" seçeneğine tıklayarak çalıştırın.

Ok üzerinde sağ klik "paste" ile yapıştırın.

Aşağıda listelenir.

CITY tablosuna sorgu çektiğinizde, 81 ili liste halinde verir.



İki tabloyu birleştirme
SELECT USERS.*, ADDRESS.ADDRESSTEXT FROM
USERS,ADDRESS
WHERE USERS.ID=ADDRESS.USERID
AND USERS.ID=10

Mevcut listeler. User ve Adres

Kullanıcı listesi ile Adres listelerinde, ID bilgilerine göre eşleştir. Adres kolonunu, User tablosuna ekle. Ör: ID bilgisi "1" olanlar.

Ör: ID bilgisi "2" olanlar.

Ör: ID bilgisi "4" olanlar.

Ör: ID bilgisi "10" olanlar.




İki tabloyu birleştirme (Tabloda istenilen alanlar getirilerek)
SELECT
USERS.NAMESURNAME,
USERS.EMAIL,
USERS.GENDER,
USERS.BIRTHDATE,
ADDRESS.ADDRESSTEXT 
FROM
USERS,ADDRESS
WHERE USERS.ID=ADDRESS.USERID
AND USERS.ID=4



Alias (Kısaltma) Kullanımı:
USERS yerine U, ADDRESS yerine A tanımı yapılma  (From) dan sonraki satırdaki işlemin ardından, U, ADDRESS yerine değişikliğinin ardından çalıştırıldığında aynı sonuç alınmaktadır.

SELECT 
U.NAMESURNAME,
U.EMAIL,
U.GENDER,
U.BIRTHDATE,
A.ADDRESSTEXT 
FROM
USERS U,ADDRESS A
WHERE U.ID=A.USERID
AND U.ID=4


Uygulamalı örnek: Kısaltma ve Tekilleştirme
--İlgili sütundaki ilk 3 harf alıp temp yazıp sonra tempten okuma ile (Tekilleştirerek sayma) işlemi
IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp;
select LEFT (STATION_NUMBER, 3) AS 'ilk3' into #tmp from [POS].[TERMINAL_MASTER]
where TERMINAL_STATUS = 1 and TERMINAL_SUB_TYPE = 1 and TERMINAL_TYPE = 8 and MERCHANT_NUMBER = 168 Select COUNT (DISTINCT ilk3) from #tmp

Join



Join Uygulamaları:
SELECT U.*,A.ADDRESSTEXT FROM 
USERS U 
JOIN ADDRESS A ON A.USERID=U.ID

SELECT U.NAMESURNAME, U.EMAIL, A.ADDRESSTEXT, 
C.COUNTRY, CT.CITY, T.TOWN
FROM 
USERS U 
JOIN ADDRESS A ON A.USERID=U.ID
JOIN COUNTRIES C ON C.ID=A.COUNTRYID
JOIN CITIES CT ON CT.ID=A.CITYID
JOIN TOWNS T ON T.ID=A.TOWNID


Join işlemleri için, datalar:



İnnerJoin:  Kesişim kümesi elemanları, verilerini getir.  (Not: Join = İnnerJoin)
SELECT
U.ID, U.USERNAME, A.ADDRESSTEXT 
FROM USERS U JOIN ADDRESS A ON A.USERID=U.ID

(Not: Join = İnnerJoin) sonuç aynı olur.
SELECT
U.ID, U.USERNAME, A.ADDRESSTEXT 
FROM USERS U INNER JOIN ADDRESS A ON A.USERID=U.ID



LeftJoin: Sol taraftaki kümenin elemanlarının tamamı ve Sağ taraftaki kümenin kesişen verilerini getir.
(Not: Join ifadesinin; Solunda kalan Tablo adı Left, Sağında kalan Tablo adı Right işlemi gerçekleşir.)

SELECT
U.ID, U.USERNAME, A.ADDRESSTEXT 
FROM USERS U LEFT JOIN ADDRESS A ON A.USERID=U.ID



RightJoin: Sağ taraftaki kümenin elemanlarının tamamı ve Sol taraftaki kümenin kesişen verilerini getir.
(Not: Join ifadesinin; Solunda kalan Tablo adı Left, Sağında kalan Tablo adı Right işlemi gerçekleşir.)

SELECT
U.ID, U.USERNAME, A.ADDRESSTEXT 
FROM USERS U RIGHT JOIN ADDRESS A ON A.USERID=U.ID



FullJoin: İki kümenin tüm elemanları, verilerini getirir.
SELECT
U.ID, U.USERNAME, A.ADDRESSTEXT 
FROM USERS U FULL JOIN ADDRESS A ON A.USERID=U.ID




String İşlemleri: ASCII VE CHAR



String İşlemleri: SUBSTRING




String İşlemleri: CHARINDEX



String İşlemleri: CONCAT




String İşlemleri: LEFT, RIGHT, LEN




String İşlemleri: TRIM, LTRIM, RTRIM



String İşlemleri: LOWER, UPPER, REVERSE, REPLICATE

Ör: Sıra no '0' lar ile sekiz haneye otomatik tamamlama.


String İşlemleri: --REPLACA fonksiyonu (Yer değiştirme)