SQL etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
SQL etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

4 Aralık 2016 Pazar

68. SQL AUTO INCREMENT Kullanımı

  • Bazı veritabanı işlemlerimizde her bir kaydın eşssiz(unique) bir değeri olmasını isteyebilir, ilerideki işlemlerde bu değer üzerinden datalarımıza erişmek isteyebiliriz. Bu gibi durumlarda tablolarımızda bir kolonu sayı tipinde yapıp bir kural çerçevesinde (örneğin her yeni kayıt ekleme işleminde 1 arttır gibi) değiştirerek bunu sağlayabiliriz.
  • Sadece sayılarda kullanılan bu Auto-Increment özelliği ile değerimizin otomatik artmasını sağlayarak benzersiz bir değere atamış oluruz.
Örnek;

CREATE TABLE  Meyveler
(
id int IDENTITY(1,1) PRIMARY KEY,
adi varchar(20),
renk varchar(10),
tur varchar(20)
)

  • MsSQL de otomatik sayı arttırım IDENTITY(value1,value2) özelliği ile yapılmaktadır.
  • value1 başlangıç değerini belirtir.
  • value2 ise artış miktarını göstermektedir.
  • Yukardaki örneğimizde tablodaki id alanı 1 den başlayacak ve birer birer artacak şekilde insert edecek. Örneğin id alanımız 1000den başlasın ve sadece çift sayılar tutsun istiyorsak şu şekilde tanımlamalıyız: IDENTITY(1000,2)

67. SQL REPLACE Fonksiyonu Kullanımı

  • REPLACE fonksiyonu ile istediğimiz bir metin içerisinde istediğimiz bir metini başka bir metinle ile değiştirebiliriz.
  • Kendi tablomuzda bulunan veriler üzerinde de bu işlemi uygulayabilir sonuçları istediğimiz kolonda gösterebiliriz.
  • Aşağıdaki örnekleri inceleyebiliriz.


Söz Dizimi
REPLACE (Ana_Metin, Ana_Metin_İçinde_Aranan_Değer,Değiştirilecek_Değer)



21 Kasım 2016 Pazartesi

66. SQL PATINDEX Kullanımı

  • SQL PATINDEX Fonksiyonu belirttiğimiz bir metinde yada tablomuzun herhangi bir kolonunda seçtiğimiz karakterin "değerin" başlangıç pozisyonunu döner.
  • Eğer aradğımız karakter metnin içinde yok ise 0 döner. 
  • Aşağıdaki örnekleri inceleyip sizlerde uygulayabilirsiniz.
Söz Dizimi:
PATINDEX( '%Aradığımız kalıp%' , İçinde_Arayacağımız_İfade) 





  
Not: Aynı şekilde Tablodaki alanların içinde de bu şekilde arama yapabiliriz.

65. SQL CONCAT Kullanımı

  • SQL CONCAT fonksiyonu kısaca alanları birleştirmek için kullanılır.
  • SELECT cümleciklerimizde direkt metinleri birleştirebileceğimiz gibi tablomuzdaki farklı alanları da istediğimiz sıra veya ek metinlerle birleştirip yeni bir kolonda gösterebiliriz.
  • Aşağıdaki örneklerle pekiştirelim...
Not:Aynı şekilde tablomuzda alanları da birleştirebiliriz.

28 Aralık 2013 Cumartesi

60- SQL Primary Key Kullanımı

  • Primary Key tablomuzdaki kayıtları sütün aracılığıyla eşşiz kayıt haline getirmemizi sağlar.
  • Primary Key(Birincil Anahtar) 
  • Primary Key olan alanlar Null değerler olamaz ve bu bölüme aynı değerler girilemez.  
  • Genelde otomatik artan değerler olarak kullanılır. Bu otomatik artmayı da identity komutu ile gerçekleştirilir.  
  • Identity komutundan sonra işlemin kaçtan başayacağı ve kaçar kaçar artacağı belirtilir. Identity(1,1) 1'den başlayacağını ve 1'er 1'er artacağını gösterir.
  • Primary Key tanımlamak aslında bir nevi Constraint‘tir yani bir nevi kısıtlama yapmaktır.

Tabloyu Create ederken;
 
BirdId int identity(1,1) NOT NULL,

Tabloyu Alter ederken,

ALTER TABLE Animals ADD PRIMARY KEY (BirdId)

bu şekilde primary key kullanabiliriz.

Primary Keyi tablomuzdan kaldırmak için ise;

ALTER TABLE Animals
DROP CONSTRAINT pk_BirdId








 

20 Nisan 2013 Cumartesi

59- SQL UNIQUE Kullanımı

Bazı durumlarda tablomuzda bir sütünün eşsiz yani tekrarlanmayan olmasını isteriz.
Bunun için bu tür alanlar tanımlanırken Unique Key contsraint tanımı yapılır.

Primary key den farkı ise Unique key bir tabloda birden fazla olmasıdır,
primary key ise tabloda sadece 1 adet olabilir.

Ayrıca Unique Key Contstraint olarak tanımlanmış bir alan NULL olabilir,
fakat değeri null dan farklı olursa kesinlikle daha önce girilen değerlerden farklı olmak zorundadır.

Not: Primary Key alanı tanımlandığında otomatik olarak Unique olarak oluşur.

ÖRNEK: Yeni oluştururken kullanımı,

CREATE TABLE Personel
(
No int NOT NULL UNIQUE,
Soyad varchar(255) NOT NULL,
Ad varchar(255),
Adres varchar(255),
Sehir varchar(255)
)

ÖRNEK: Var olan tabloda sonradan ekleme yaparken,

ALTER TABLE Personel
ADD UNIQUE (No)

3 Şubat 2013 Pazar

SQL de Hata Fırlatmak(Raise Error in SQL)

  • Bazı durumlarda SQL serverın hata fırlatmasını beklemeden kendimiz sorgunun hata fırlatıp bitmesini isteriz.
  • Örneğin yazdığımız sp yada trigger hata vermeden bizim kendi kontrollerimiz ile hata fırlatmasını sağlayabiliriz.
  • İstediğimiz durum SQL Hatası olmayıp bizim koyduğumuz kontrol neticesinde bir mantık hatası olabilir.
ÖRNEK:

CREATE PROC sp_ciftsayininkaresi
@sayi INT
AS
BEGIN
IF(@sayi%2!=0)
    BEGIN
    RAISERROR ('Girilen sayı çift sayı değildir.',10,1)
    END
ELSE
    PRINT @sayi*@sayi
END

NOT: Basit bir sp yazıyoruz. İstediğimiz sp ye gelen değerin hep çift sayı olması aksi halde işlem yapmamamız.






SP yi çalıştırdığımız zaman;

EXEC sp_ciftsayininkaresi 3



29 Aralık 2012 Cumartesi

58. SELECT INTO Deyiminin Kullanılması

  • SELECT INTO ile ilgili veritabanı üzerindeki verilerle kopya veritabanı oluşturabiliriz.
  • Kullanım durumlarına değinirsek  örneğin tablomuza değişiklik yapmadan önce yedekleyebiliriz.
  • Ayrıca bütün bir veritabanını kopyalamak yerine istediğimiz verileri içeren yeni bir kopya oluşuturup onu yedekleyebiliriz.

SÖZ DİZİMİ;

SELECT kolon_ad(ları) INTO [yeni_veritabanı.]yeni_tablo_adı
FROM ilgili_veritabanı

ÖRNEK:

SELECT * INTO Animals.dbo.Kuslar_Yedek FROM Animals.dbo.Kuslar
 

23 Aralık 2012 Pazar

SQL Serverda Karakter Sorunları

  • SQL Serverda Unicode Karakter Nasıl Kullanabiliriz?
-SQL Server elle girdiğimiz string değeri ASCII olarak algılar.

-Bu string Unicode String olarak algılaması için string ifadesini başına 'N' koymamız gerekmektedir.
  • Bozuk Karakterilerin Karşılığını Nasıl Bulabiliriz?  
 -Tabi ki belli başlı harfleri kontrol ederek onlara bizdeki karşılıklarını atayarak bozuk karakterlerin karşılığını bulabiliriz.

DECLARE @gelen NVARCHAR(MAX)
DECLARE @sonuc NVARCHAR(MAX)
SET @gelen = N'þýrýnga'

SET @sonuc = Replace(@gelen COLLATE Latin1_General_BIN,N'ð', N'ğ');  
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ð', N'Ğ'); 
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN, N'Ð', N'Ğ');  
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ý', N'ı');  
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'Ý', N'İ');  
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'þ', N'ş');  
SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'Þ', N'Ş');
SELECT  @sonuc  COLLATE Turkish_CI_AS ;





Yukardaki örneğimizdeki gibi bir fonsiyon ile gerekli dönüşümü yapabilirsiniz.

9 Aralık 2012 Pazar

SQL' de VIEW Tanımlama ve Kullanımı

  • Öncelikle view lere neden ihtiyaç duyarız onu anlatalım.
  • Vıewler kısaca ben bütün tablodaki sütunları değilde sadece şu şu sütunlar listelensin demek için kullanılır.
  • Örneğin bir çalışan tablonuz olsun ve bu tabloda personelin adresinden tutun aldığı maaşa kadar bilgiler bulunsun.Bu durumda sadece herkese açık verileri tutan yeni bir tablo create etmek yerine belirli sütunları gösteren bir view create edebiliriz.
  • Ayrıca parçalı sorgularımızı da view e bağlayabiliriz. Bu view üzerinden yeni sütun ekleyip silebiliriz. 
  • Veri tabanı view da oluşan datayı saklamaz. Dolayısıyla bir viewun geçtiği SQL deyimi her çalıştırıldığında ilgili view sanal kümeyi yeniden oluşturur.

SÖZ DİZİMİ:

CREATE VIEW Kuslar_view
(KusNo,Adı)AS
SELECT KusNo,Adı FROM Kuslar


NOT: Eklediğimiz VIEW ın Yapıdaki yerini ve sorgusunu aşağıdaki resimde görebilirsiniz.


NOT: Database imizde bulunan VIEW ler hakkında ayrıntılı bilgi almak için System sp sini kullabiliriz.

SÖZ DİZİMİ:

SELECT * FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE



NOT: Ayrıca view içindeki sorgumuzu öğrenmek istediğimiz zaman da aşağıdaki sorgu cümlemizi kullanabiliriz.

SÖZ DİZİMİ:

SELECT * FROM  INFORMATION_SCHEMA.VIEWS



Vıewlerimizi silmek gayet basit.Drop ederek View imizi veritabanımızdan sileriz.

DROP VIEW [view adı]

NOT: Özetlemek gerekirse view ile kullanıcılara göstermek istediğimiz verileri gösterir istemediklerimiz yokmuş gibi yaparız.

17 Kasım 2012 Cumartesi

55. WHILE Döngüsünün Kullanımı


  • Tekrar gerektiren işlemlerde istenilen şart sağlanana kadar işlemyapabilmemize imkan verir.
  • While döngüsü ile istediğimiz kadar işlemi tekrarlatabiliriz.
SÖZ DİZİMİ:

WHILE şart
BEGIN
 Tekrarlanması istenilen kod bloğu
END

NOT: Şart gerçekleştiği sürece BEGIN..END arasındaki kod bloğu çalışır.

ÖRNEK:

DECLARE @Sayac TINYINT
SET @Sayac=5
WHILE (@Sayac>0)
BEGIN
    PRINT @Sayac
    SELECT @Sayac=@Sayac-1
END



Not: Örneğimizde @Sayac değerini koşulumuzu sağlayana kadar WHILE döngümüzün içinde tuttuk. Dikkat etmeniz gereken bunu BEGIN..END Bloğu içinde yapmanız.

Önemli Not: Neden BEGIN..END diye sordugumuzda nedenini yokluğundan anlamak daha kalıcı olur diye düşünüyorum. Oda size kalsın. BEGIN.. END'siz ilk döngüsünü bile nasıl bitiremediğini görmelisiniz.:)

Ders 56'ya Geçebilirsiniz.

54. CASE Yapısının Kullanımı

  • Bu yapı SQL'de dallanma olduğu durumlarda bir şartın sağlayabileceği farklı durumları bulmak için kullanılır.
SÖZ DİZİMİ:

CASE koşula girecek değer
     WHEN değer THEN işlem
     WHEN değer THEN işlem
 ELSE işlem
END

ÖRNEK:

 SELECT Name AS İsim,Weight AS Ağırlık,'Durum'=
CASE
    WHEN Weight BETWEEN 1500 AND 2500 THEN 'Büyük'
    WHEN Weight BETWEEN 450 AND 1500 THEN 'Orta'
    WHEN Weight BETWEEN 0 AND 450 THEN 'Küçük'
END
FROM Birds



Not: Birds isimli tablomuza 4 tane yeni Instance ekledik. Bunlara kafamıza göre ağırlık belirleyip sadece case yapısını nasıl kullanabiliriz onu gördük.

Ders 55'e geçebilirsiniz.

29 Ekim 2012 Pazartesi

53. IF..ELSE Yapısının Kullanılması

  • Diğer programlama dillerinde olduğu gibi SQLde de bloklar kullanılır.
  • Eğer işlenecek komut satırları birden fazla ise mutlaka BEGIN..END yapısı kullanılmalıdır.
  • IF..ELSE blokları komutların belirli bir koşula bağlı olarak çalışmasını sağlar.
SÖZ DİZİMİ:
IF Koşul
{
   Deyim
}
ELSE
{
   Deyim
}
ÖRNEK:
//ortalama fiyatın düşük veya yüksek olup olmadığını buluyoruz.

DECLARE @ortalamafiyat DECIMAL(10,2)
SELECT @ortalamafiyat=AVG(UnitPrice) FROM Products
PRINT 'Ortalama Birim Fiyatı='+CAST(@ortalamafiyat AS VARCHAR(5))
IF(@ortalamafiyat<30)
BEGIN
    PRINT 'Düşük Fiyat'
END
ELSE
BEGIN
    PRINT 'Yüksek Fiyat'
END


Ders 54'e geçebilirsiniz.

14 Ekim 2012 Pazar

52. SQL KARAKTER FONKSİYONLARI

  • Karakter değerleri üzerinde işlem yapmak için karakter fonksiyonları kullanılır.
1-) CHAR() Fonksiyonu
-ASCII kodu verilen karakteri gösterir.

SELECT CHAR(69)  // E harfi

SELECT ASCII('B') // 66

2-) CHARINDEX() Fonksiyonu
-Bir metin içerisinde istedilen metin parçasını istediğimiz konumdan itibaren arar.

SELECT CHARINDEX('Aranacak metin','İçinde arancak metin',0)

SELECT CHARINDEX('tr','sqltr.blogspot.com',0) // Sonuç 4 döner.

3-) LEFT() Fonksiyonu
-Metinde sol taraftan istediğimiz uzunluktaki metni alır.

SELECT LEFT('sqltr.blogspot.com',5) // Sonuç 'sqltr' döner.

4-) LEN() Fonksiyonu
-Metnin uzunluğunu verir.

SELECT LEN('sqltr.blogspot.com') // Sonuç 18

5-) LOWER() Fonksiyonu
-Metnin tamamını küçük harfe çevirir.

SELECT LOWER('SQLtr.BLOGspot.com') // Sonuç 'sqltr.blogspot.com'

6-) LTRIM() Fonksiyonu
-Metnin başında bulunan boşluk karakterlerini siler.

SELECT LTRIM('  sqltr.blogspot.com')  // Sonuç 'sqltr.blogspot.com'

7-) RIGHT() Fonksiyonu
-Metinde sağ taraftan istediğimiz uzunluktaki metni alır.

SELECT RIGHT('sqltr.blogspot.com',3) // Sonuç 'com' döner.

8-) RTRIM() Fonksiyonu
-Metnin sonunda bulunan boşluk karakterlerini siler.

SELECT RTRIM('sqltr.blogspot.com  ')  // Sonuç 'sqltr.blogspot.com'

picture8

9-) REVERSE() Fonksiyonu
-Metni ters çevirir.

SELECT REVERSE('sqltr.blogspot.com') // Sonuç 'moc.topsgolb.rtlqs'

10-) SUBSTRING() Fonksiyonu
-Belirli bir metinde belirli bir karakterden itibaren belirli sayıda karakteri almak için kullanılır.

SELECT SUBSTRING('sqltr.blogspot.com',1,5) // 'sqltr' döner.

Not: Dikkatli olmanız gereken String ifadelerde ilk karakter 1. karakterdir. 0.karakter değildir.

11-) UPPER() Fonksiyonu
-Metnin tamamını büyük harfe çevirir.

SELECT UPPER('SQLtr.BLOGspot.com') // Sonuç 'SQLTR.BLOGSPOT.COM'

12-) STUFF() Fonksiyonu

-Metnin içinde belirttiğimiz uzunluktaki karakteri siler ve onun yerine belirlediğimiz uzunlukta karakter ekler.

- STUFF ( metin, başlangıç karakteri, kaç karakter, yeni eklenecek metin)

SELECT STUFF('sqltr.blogspot.com',1,5,'aileye')

13-) CONCAT() Fonksiyonu 
Ders- 65

14-) PATINDEX() Fonksiyonu
Ders- 66

15-) REPLACE() Fonksiyonu 
Ders- 67




Ders 53'e geçebilirsiniz.

51. SQL TARİH VE ZAMAN FONKSİYONLARI

  • Tarih ve zaman değerleri üzerinde işlemler yapmamızı sağlayan fonksiyoları içerir.

1-)GETDATE() Fonksiyonu
-O an ki tarih ve saat değerini dönüdürür.

Örnek: SELECT GETDATE()


2-)DATEADD() Fonksiyonu
-Verilen tarihi istenilen sayıda tarih bilgilerinin eklemesini yapar.

-Bu fonksiyonda bilmemiz gereken;
dd(gün)
mm(ay)
yy(yıl) anlamına gelmektedir.

Örnek 1: SELECT DATEADD(dd,60,'15.09.2012')
Açıklama: Belirtilen tarihe 60 gün ekleyen fonksiyon.
//Sonuç .14.11.2012

Örnek 2:
SELECT DATEADD(mm,2,'15.09.2012')
Açıklama: Belirtilen tarihe 2 ay ekleyen fonksiyon.
//Sonuç 15.11.2012

Örnek 3: SELECT DATEADD(yy,3,'15.09.2012')
Açıklama: Belirtilen tarihe 3 yıl ekleyen fonksiyon.
//Sonuç 15.09.2015

3-)DATEDIFF() Fonksiyonu
-Belirtilen iki tarih arasındaki farkı istenilen cinste verir.

Örnek: SELECT DATEDIFF(dd,'10.10.2011','11.11.2012')
Açıklama:İki tarih arasındaki gün farkını verir.
NOT:Ayrıca;
Hafta için 'wk'
Gün için 'dd'
Saat için 'hh'
Dakika için 'mi'
Saniye için 'ss'



4-)DATEPART() Fonksiyonu
-Tarihle ilgili sayısal bilgilerin alınmasını sağlar.

Örnek:
SELECT DATEPART(dd,'13.12.2012')

SELECT DATEPART(mm,'13.12.2012')

SELECT DATEPART(yy,'13.12.2012')



Ders 52'ye geçebilirsiniz.


6 Eylül 2012 Perşembe

50. PRINT Kullanımı

  • Değişkenlerin değerlerini, dönen hataları vb. diğer ihtiyaç duyulan sonuçların direk ekranda gisterilmesinde PRINT Komutu kullanılır.
  • Özellikle Debug işlemlerinde ihtiyaç duyulur.
Söz Dizimi: PRINT 'sqltr.blogspot.com'


Ders 51' e geçebilirsiniz.

49. DECLARE & SET Kullanımı

  • SQL'de değişken tanımlamalarında DECLARE komutu kullanılır.
  • Tanımlıdığımız değişken değer atama işlemlerinde SET komutu kullanılır.
Söz Dizimi: DECLARE @<Değişken_Adı> <Değişken_tipi>



Ders 50'ye geçebilirsiniz.

48. USE Kullanımı

  • Kısacası USE kullanımı hangi database üzerinde işlem yapacağımızı belirtir.
  • SQL Server da New Query dediğimizde default olarak gelen database sol üst menüde görünmektedir.
Söz Dizimi: USE Animals


  • Sql Serverda üzerinde çalışacağımız databaselerin belirtilmesinde birkaç yol vardır.
1-)Eğer tek bir database üzerinde çalışıyorsak menüden istediğimiz database i seçip USE kullanmadan da sorgularımızı gerçekleştirebiliriz.



2-)Ya da sol üst menüyle hiç ilgilenmeyip direk sorgu sayfamıza USE 'DATABASE NAME' ile SQL Server da bulunan istediğimiz database üzerinde çalışabiliriz.



3-)Eğer birden fazla database üzerinde işlem yapıyorsak sorgularımızda database belirterek istediğimiz
database lerden veri çekebiliriz.


Ders 49' a geçebilirsiniz.

12 Ağustos 2012 Pazar

SQL Server'da Stored Procedure

  • SQL ifadeleri SQL Serverda Stored Procedure olarak saklanmaktadır. 
  • Basit örneklemek gerekirse " SELECT * FROM Birds " ifadesini saklayabiliriz. Ama büyük yapılarda kullanılan Stored Procedureler daha komplekstir. 
  • Stored Procedure'ler birden fazla tablonun farklı JOIN işlemleri ile bağlanmasıyla ve parametreli veya parametresiz değerlerin WHERE koşullarıyla kısıtlanmasıyla istenilen sonuça hızlı ve sade bir şekilde ulaşmamızı sağlar.

ÖRNEK:
CREATE PROCEDURE Person_Selection
@yas INT

AS

IF(Yas> 19)
SELECT * FROM Person WHERE Yas > @yas ORDER BY Yas
ELSE
SELECT * FROM Person WHERE Yas> @yas and Eriskin=1 ORDER BY Yas

GO

21 Temmuz 2012 Cumartesi

Stored Procedure Nedir?

  • Yapısal yordamlar olarak da söylenen Stored Procedures belirli bir işlevi, görevi yerine getirmek için özellilkle yapılandırlımış bir veya birden fazla tablo,sp..vs ile ilişkili kod parçacıklarıdır.
  • Kısaca 'Derlenmiş SQL Cümlecikler'dir.
  • SP'ler Database Serverda saklanan SQL ifadeleridir. Diğer programlama dilleri gibi parameterler içerir. Bu parametrelere göre çalışıp farklı sonuçlar listeleyebilir.
  • Ayrıca bir Stored Procedure içinde başka bir Stored Procedure çağırabiliriz.
  • Datebase Serverda saklandıkları için daha hızlı çalışırlar. Normal kod ile çağırmak yerine kodla sadece SP ye parametre gönderip çağırmak çok daha iyi performans sağlamaktadır.
  • SP ler sadece ilk çalıştırıldıklarında derlenirler. Diğer çağrılışlarında derlenmeden çalışırlar. Eğer her seferinde kod içinde bu sorguyu çalıştırsak her seferinde derleme işlemi yapılacağından hem zaman hem de performans açısından kötü olur.
  • Bir SQL komutu çağrıldığında ayrıştırma , derleme ve çalıştırma aşamalarından geçmektedir. SP’ler önceden derlenmiş olduğu için , normal kullandığımız bir SQL sorgusunda olduğu gibi bu 3 aşamadan geçmez, bu özelliği sayesinde programımızın performansı artmaktadır ve ağ trafiğini de azaltmış oluruz, istemci tarafından bir çok satıra sahip SQL komutunun sunucuya gitmesindense, sadece saklı yordamın adının sunucuya gitmesi ağı daha az meşgul etmiş olur. Bir kez yazıp tekrar ve tekrar kullandığımız için modüler bir yapıda program geliştirmiş oluruz.
  • Stored procedure'un diğer bir özelliği ise programlama deyimleri içermesidir. if, next, set vs.. programlama dillerindekine benzer özellikler sunar. Gelen parametrelere göre sorgu yapılıp sonucun dönmesi sağlanabilir. 
  • Eğer veritabanlı bir projede çalışıyorsanız kesinlikle SP ler ile çalışmalısınız. Çoğu programcı programlarının hiç bir yerinde SQL ifadesi kullanmazlar. Her zaman Stored Procedure ler ile çalışırlar.