27 Mart 2011 Pazar

SQL Temel Sorgu Örnekleri 1

Bu yazıda birkaç temel sql komutundan bahsedeceğiz. Kodlarımızı AdventureWorks veri tabanını kullanarak yazacağız.

İlk olarak metinlere göre yapılabilecek bazı sorgu şekillerini inceleyelim.

SELECT * FROM Person.Contact WHERE FirstName LIKE '%A%' -- Adının içinde 'A' harfi geçenler.

SELECT * FROM Person.Contact WHERE FirstName LIKE 'A%us%' -- Adı 'A' ile başlayıp, adında 'us' geçenler

SELECT * FROM Person.Contact WHERE FirstName LIKE 'A%' -- Adı 'A' harfi ile başlayan kayıtlar

 

SELECT * FROM Person.Contact WHERE FirstName LIKE '_b%' -- Adının ikinci harfi 'b' olan kayıtlar

 

SELECT * FROM Person.Contact WHERE FirstName LIKE '[A-E]%' -- Adının baş harfi A ile E arasında olan kayıtlar

 

SELECT * FROM Person.Contact WHERE FirstName LIKE '[^A-E]%' -- Adının baş harfi A ile E arasında olmayan kayıtlar

 

SELECT * FROM Person.Contact WHERE FirstName LIKE '[ABC][^k-z]%' -- Adının ilk harfi A B C olan ve ikinci harfi k ile z harfleri arasında olmayan kayıtlar. Burada her bir köşeli parantez, 1 karakteri temsil etmektedir.

Metinlerle kullanılan bazı fonksiyon örnekleri ;

SELECT RIGHT(Name,4) FROM Production.Product -- Ürün adlarının sağdan 4 hanesini getirir. Adı 'Mountain Bike' olan bir ürün için çıktımız 'Bike' şeklinde olacaktır.

 

SELECT LEFT(Name,4) FROM Production.Product -- Ürün adlarının soldan 4 hanesini getirir. Adı 'Chain Stays' olan bir ürün için çıktımız 'Chai' şeklinde olacaktır.

 

SELECT SUBSTRING(Name,3,5) FROM Production.Product -- Ürün adlarının 3.karakterinden itibaren 5 hanesini getirir. 1.parametre arama yapılacak olan metin, 2.parametre kaçıncı indexten başlanacağı, 3.parametre kaç karakter alınacağı.

--NOT : SQL'de index 1'den baþlar...

 

SELECT LEN(Name) FROM Production.Product -- Ürün adlarının karakter sayılarını getirir.

 

SELECT LTRIM('   DENEME') --Sol taraftaki boş karakterleri siler

 

SELECT RTRIM('   DENEME   ') -- Sağ taraftaki boş karakterleri siler

 

SELECT LTRIM(RTRIM('   DENEME   ')) --Trim ifadesinin kullanırken left veya right ile kullanmak zorundayız. Her iki taraftaki boşluğu silmek için bu tarz bir kullanım yapılabilir.

 

SELECT CHARINDEX('-',ProductNumber) FROM Production.Product --Ürün kodu içerisindeki '-' karakterinin index'ini getirir.

 

SELECT LOWER(FirstName),UPPER(LastName) FROM Person.Contact -- LOWER ile tüm harfler küçük olarak, UPPER ile tüm harfler büyük olarak gelir.

 

SELECT REPLACE('AL BU TAKATUKALARI','TAKATUKA','AYAKKABI') -- 1.parametre içerisinde işlem yapılacak ifadeyi, 2.parametre değiştirilmesi istenen metni, 3.parametre ise değiştirilmesi istenen metnin yerine geçmesini istediğimiz metni belirtir.. Burada takatuka yerine ayakkabı metninin gelmesini sağladık. Alacağımızz çıktı 'AL BU AYAKKABILARI' şeklinde olmalıdır.

 

SELECT REVERSE('DENEME') --Metni tersten yazdırır.

Tarihlerle kullanılan bazı fonksiyonlar;

SELECT GETDATE() -- Çalıştığı andaki tarih bilgisini getirir.

 

SELECT DAY(GETDATE()) -- Çalıştığı andaki tarihin gün bilgisini getirir.

 

SELECT MONTH(GETDATE()) -- Çalıştığı andaki tarihin ay bilgisini getirir.

 

SELECT YEAR(GETDATE()) -- Çalıştığı andaki tarihin yıl bilgisini getirir.

 

SELECT YEAR('2011-03-26') -- Verilen tarihin yıl bilgisini getirir. Çıktı: 2011

 

SELECT MONTH('2011-03-26') -- Verilen tarihin ay bilgisini getirir. Çıktı: 3

 

SELECT DATEPART(DW,GETDATE()) -- Çalıştığı andaki tarihin, haftanın kaçıncı günü olduğunu belirtir. NOT: Default standartlarda haftanın 1. günü pazar olarak kabul edilmektedir...

 

SELECT DATENAME(DW,GETDATE()) -- Çalıştığı andaki tarihin, gün adını belirtir.

 

SELECT DATENAME(MM,GETDATE()) -- Çalıştığı andaki tarihin, ay adını belirtir.

 

SELECT DATEADD(DD,1,GETDATE()) -- Çalıştığı andaki tarih bilgisine gün bazında 1 ekleyerek geriye döndürür. Örnek: 2001-01-22 tarihinde çalıştığını düşünürsek, alacağımız çıktı 2001-01-23 şeklinde olacaktır.

 

SELECT DATEDIFF(DD,'2000-01-01',GETDATE()) -- Çalıştığı andaki tarihten, '2000-01-01' tarihini çıkararak gün bazýnda farkını alır. (3.parametre - 2.parametre)

 



3 yorum:

Unknown dedi ki...

SELECT RIGHT(Name,4) bu kısmı açıklaken left ve rigt açıklamaları ters olmuş sanırım left kullanılırsa örneğin MATEMETİK kaydı için LEFT(DERS,3) Dediğimizde MAT kaydı döndürüyor..

Onur Salkaya dedi ki...

Merhaba,

Söylediğiniz gibi bir terslik olmuş, en kısa zamanda düzeltiyor olacağım. Bilgilendirme için teşekkür ederim.

Adsız dedi ki...

Alen Iverson dedi ki...

SELECT RIGHT(Name,4) bu kısmı açıklaken left ve rigt açıklamaları ters olmuş sanırım left kullanılırsa örneğin MATEMETİK kaydı için LEFT(DERS,3) Dediğimizde MAT kaydı döndürüyor..


Sanırım bu kısım halen düzeltilmemiş.

Yorum Gönder