28 Şubat 2013 Perşembe

MS SQL Değişkenler ve Veri Tipleri

Merhaba Webkolog takipçileri!

SQL Server'da kod yazarken, geçici verileri saklamak, hesaplamalar yapmak veya sorgularımızı dinamik hale getirmek için değişkenlere ihtiyacımız olur. Değişkenleri doğru tanımlamak ve onlara uygun veri tiplerini atamak, performanslı ve hatasız kod yazmanın temelidir. Bugün sizlerle, MS SQL'deki değişkenlerin dünyasına ve veri tiplerinin inceliklerine dalacağız. Hadi, kodlama yolculuğumuzda bir adım daha ilerleyelim!

Değişkenler: Verileri Geçici Olarak Saklama Kutuları

MS SQL'de değişkenler, belirli bir veri tipinde tek bir değeri geçici olarak depolamak için kullanılır. T-SQL kod bloklarınız içinde değerleri saklamak, değiştirmek ve kullanmak için vazgeçilmezlerdir. Bir değişken tanımladığınızda, bellekte belirli bir alan ayrılır ve bu alana sadece tanımladığınız veri tipine uygun değerler atanabilir.

Değişken Tanımlama ve Atama

Bir değişken tanımlamak için DECLARE anahtar kelimesini kullanırız, ardından değişken adını (genellikle @ işaretiyle başlar) ve veri tipini belirtiriz. Değer atamak için ise SET veya SELECT komutlarını kullanırız.

-- Bir veya birden fazla değişken tanımlama
DECLARE @sayi INT;
DECLARE @metin NVARCHAR(100), @tarih DATE;

-- Değişkenlere değer atama (SET ile)
SET @sayi = 10;
SET @metin = 'Merhaba Webkolog!';
SET @tarih = '2025-06-30';

-- Tanımlarken başlangıç değeri atama
DECLARE @fiyat DECIMAL(10,2) = 25.50;

-- Bir değişkenin değerini başka bir değişkene atama
DECLARE @sayi2 INT;
SET @sayi2 = @sayi; -- @sayi2'nin değeri şimdi 10

-- Değişkenleri sorguda kullanma ve sonuçları gösterme
SELECT @sayi + @sayi2 AS ToplamSayi;
SELECT @metin AS Mesaj;

Veri Tipleri: Verinin Cinsini Belirlemek

MS SQL'de her değişkenin veya tablo sütununun bir veri tipi olmalıdır. Veri tipi, o alanda hangi türde veri saklanabileceğini (sayı, metin, tarih vb.) ve bellekte ne kadar yer kaplayacağını belirler. Doğru veri tipini seçmek, hem performans hem de veri bütünlüğü açısından çok önemlidir.

Metinsel Veri Tipleri

Metin verilerini saklamak için kullanılırlar. Unicode desteği olanlar, Latin alfabesi dışındaki karakter setlerini (Türkçe karakterler, Çince vb.) doğru şekilde saklayabilir.

  • CHAR(n): Sabit uzunlukta ASCII metin. Belirtilen 'n' kadar yer kaplar ve kalan boşlukları boşluk karakterleriyle doldurur. Max 8000 karakter. (1 karakter = 1 byte)
  • NCHAR(n): Sabit uzunlukta Unicode metin. 'n' kadar yer kaplar ve kalan boşlukları boşlukla doldurur. Max 4000 karakter. (1 karakter = 2 byte)
  • VARCHAR(n): Değişken uzunlukta ASCII metin. Sadece girilen veri kadar yer kaplar. Max 8000 karakter.
  • NVARCHAR(n): Değişken uzunlukta Unicode metin. Sadece girilen veri kadar yer kaplar. Max 4000 karakter.
  • VARCHAR(MAX): 2 GB'a kadar değişken uzunlukta ASCII metin. Büyük metin blokları için idealdir.
  • NVARCHAR(MAX): 2 GB'a kadar değişken uzunlukta Unicode metin. Büyük metin blokları için idealdir.
  • TEXT: (Eskimiş) 2 GB'a kadar ASCII metin. VARCHAR(MAX) yerine tercih edilmelidir.
  • NTEXT: (Eskimiş) 2 GB'a kadar Unicode metin. NVARCHAR(MAX) yerine tercih edilmelidir.
Sayısal Veri Tipleri

Tam ve ondalıklı sayıları saklamak için kullanılırlar.

  • INT: -2 milyar ile 2 milyar arasında tam sayı (4 byte). En sık kullanılan tam sayı tipi.
  • BIGINT: Çok büyük tam sayılar için (yaklaşık -9 trilyon ile 9 trilyon arası, 8 byte).
  • SMALLINT: -32,768 ile 32,767 arasında tam sayı (2 byte).
  • TINYINT: 0 ile 255 arasında tam sayı (1 byte).
  • DECIMAL(p,s) / NUMERIC(p,s): Hassas ondalık sayılar için. 'p' toplam basamak sayısı, 's' ondalık kısım basamak sayısıdır. Para birimleri gibi hassas hesaplamalarda kullanılır.
  • FLOAT(n) / REAL: Yaklaşık ondalık sayılar için. Bilimsel ve mühendislik hesaplamalarında kullanılır. FLOAT(n) hassasiyeti n'e göre değişir, REAL 7 haneli hassasiyete sahiptir.
  • MONEY / SMALLMONEY: Parasal değerleri saklamak için özel tipler. MONEY daha geniş bir aralığa sahipken, SMALLMONEY daha küçüktür.
Tarihsel Veri Tipleri

Tarih ve zaman bilgilerini saklamak için kullanılırlar.

  • DATE: YYYY-MM-DD formatında sadece tarih (0001-01-01 ile 9999-12-31 arası).
  • TIME: HH:MM:SS[.nnnnnnn] formatında sadece saat (100 nanosaniye hassasiyetine kadar).
  • DATETIME: Tarih ve zamanı tutar (1753-01-01 ile 9999-12-31 arası, 3.33 milisaniye hassasiyet).
  • SMALLDATETIME: Tarih ve zamanı tutar (1900-01-01 ile 2079-06-06 arası, 1 dakikalık hassasiyet).
  • DATETIME2: Daha geniş aralık (0001-01-01 ile 9999-12-31) ve daha yüksek hassasiyet (100 nanosaniye) sunar. DATETIME yerine tercih edilir.
  • DATETIMEOFFSET: DATETIME2 gibi tarih ve zaman bilgisiyle birlikte saat dilimi farkını da tutar. Küresel uygulamalar için idealdir.
Diğer Veri Tipleri
  • BIT: 0, 1 veya NULL değerlerini tutar. Mantıksal (boolean) değerler için idealdir.
  • UNIQUEIDENTIFIER: 128 bitlik bir değer olan GUID (Globally Unique Identifier) saklar. Çoğu zaman benzersiz bir kimlik oluşturmak için kullanılır (örneğin: '6F9619FF-8B86-D011-B42D-00C04FC964FF').
  • XML: XML verilerini depolamak için kullanılır (2 GB'a kadar).
  • BINARY(n) / VARBINARY(n) / VARBINARY(MAX): İkili (binary) verileri, yani resimler, dosyalar veya şifrelenmiş veriler gibi byte dizilerini saklamak için kullanılır. BINARY sabit uzunlukta, VARBINARY değişken uzunluktadır. VARBINARY(MAX) 2 GB'a kadar veri saklayabilir.
  • IMAGE: (Eskimiş) 2 GB'a kadar ikili veri saklar. VARBINARY(MAX) yerine tercih edilmelidir.
  • SQL_VARIANT: Farklı türde verileri (sayı, metin, tarih vb.) tek bir sütunda saklamanıza olanak tanır. Ancak performans ve tip güvenliği açısından dikkatli kullanılmalıdır.
  • TABLE: Tablo değişkeni tanımlamak için kullanılır.

Veri Tipleri Arasında Dönüşüm (Casting)

Bazen bir veri tipini başka bir veri tipine dönüştürmemiz gerekebilir. Bu işlem için CAST() veya CONVERT() fonksiyonlarını kullanırız.

-- Bir sayıyı metne dönüştürerek birleştirme
SELECT CAST(BusinessEntityID AS NVARCHAR(10)) + ' - ' + FirstName + ' ' + LastName AS "Kimlik Bilgileri"
FROM Person.Person;

-- Tarihi belirli bir formatta metne dönüştürme (CONVERT ile)
SELECT CONVERT(NVARCHAR, GETDATE(), 103) AS GecerliTarih; -- DD/MM/YYYY formatı

CAST(ifade AS veri_tipi) basit dönüşümler için tercih edilirken, CONVERT(veri_tipi, ifade, stil) tarih ve saat gibi belirli format stilleriyle daha fazla kontrol sağlar.

Değişkenler ve veri tipleri, MS SQL'de sağlam ve verimli kod yazmanın temel taşlarıdır. Doğru veri tiplerini seçerek hem veri tabanınızın boyutunu optimize edersiniz hem de sorgularınızın daha hızlı çalışmasını sağlarsınız. Bu bilgileri pratik yaparak pekiştirmenizi şiddetle tavsiye ederim!

Webkolog'u takipte kalın!

Hepinize bol kodlu ve başarılı öğrenme süreçleri dilerim!

0 yorum:

Yorum Gönder