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
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')
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
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.
"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
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
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
Ö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')
SELECT CONVERT(DATETIME, '2019-02-06 08:20:59.000')
Ör: Şehir bilgileri tekilleştirildikten sonra, Fiş No bazlı; Tekil, Genel, Toplam işlem adeti bazlı rapor.
Script ile tablo oluşturma.
Tables üzerinde sağ klik / Refresh
Sayfa yenileme sonrası, Script ile eklenen tablolar, Tables altında görüntülenir.
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.ŞUBAT' WHERE DATEPART(MONTH, DATE2)=2
UPDATE SALES SET MONTHNAME_='03.MART' WHERE DATEPART(MONTH, DATE2)=3
UPDATE SALES SET MONTHNAME_='04.NİSAN' WHERE DATEPART(MONTH, DATE2)=4
UPDATE SALES SET MONTHNAME_='05.MAYIS' WHERE DATEPART(MONTH, DATE2)=5
UPDATE SALES SET MONTHNAME_='06.HAZİRAN' WHERE DATEPART(MONTH, DATE2)=6
UPDATE SALES SET MONTHNAME_='07.TEMMUZ' WHERE DATEPART(MONTH, DATE2)=7
UPDATE SALES SET MONTHNAME_='08.AĞUSTOS' WHERE DATEPART(MONTH, DATE2)=8
UPDATE SALES SET MONTHNAME_='09.EYLÜL' WHERE DATEPART(MONTH, DATE2)=9
UPDATE SALES SET MONTHNAME_='10.EKİM' WHERE DATEPART(MONTH, DATE2)=10
UPDATE SALES SET MONTHNAME_='11.KASIM' WHERE DATEPART(MONTH, DATE2)=11
UPDATE SALES SET MONTHNAME_='12.ARALIK' WHERE DATEPART(MONTH, DATE2)=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(TOTALPRICE) AS 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(TOTALPRICE) AS 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
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 CITY, SUM(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ü
Kodu editöre yapıştırıp çalışrın.
Tabloları, topluca Silme
"SQL Server Management Studio" programında "Wiew" Sekmesine, ardından "Object Explorer Details" menüsüne tıklayın.
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.
Excel den veriyi kopyalayı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 A 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
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
String İşlemleri: --REPLACA fonksiyonu (Yer değiştirme)