Char Nchar Varchar Nvarchar Arasındaki Farklar

Veritabanı tasarlarken ihtiyaçlar göz önünde bulundurularak en az kaynak kullanılarak en çok verim elde edecek şekilde tasarlanmalıdır. Metinsel ifadeleri veritabanında tutarken kullanabileceğimiz alternatif veri türleri mevcuttur. Bunlar  Char, Nchar, Varchar ve Nvarchar dır. Bu yazımızda Char Nchar Varchar Nvarchar Arasındaki Farklar nelerdir onu inceleyeceğiz.

Char ve Varchar

Bu değişkenler Unicode diye adlandırdığımız karakterleri desteklemezler. Bu karakter türlerine özel karakter ismini verebiliriz. Klavyeden doğrudan girilmeyen üst karakter dizileri adı da verilebilir. Char sabit boyutlu bir değişkendir. Char(100) şeklinde oluşturduğumuz kolona 0-100 arası kaç karakter girersek girelim daima 100 karakterlik yer işgal edecektir. Varchar da ise durum daha iyi diyebiliriz. Varchar(250) şeklinde oluşturduğumuz kolona kaç karakterlik metin girersek bellekte o kadar yer tutacaktır.

Nchar ve Nvarchar

Bu değişkenlerin içinde Unicode karakterleri barındırabiliriz. Dolayısıyla farklı dillerdeki verileri saklamaya imkan sağlar. Nchar tıpkı Char gibi tanımlanırken hangi boyut verilirse içi dolu da olsa boşta olsa verilen boyut kadar yer tutmaktadır. Aynı şekilde Nvarchar tıpkı Varchar gibi tanımlama boyutuna göre değil içinde bulunan değerin uzunluğuna göre bellekte yer kaplamaktadır.

Unicode karakterler bellekte daha fazla yer tutarlar. Bu yüzden sadece Unicode desteğine ihtiyaç duyulduğunda nvarchar ve nchar kullanılması performans açısından daha mantıklı olacaktır.

Text ve Ntext

Yukarıdaki veri türlerinin dışında Text ve Ntext isminde iki değişken türü daha görmeniz muhtemeldir. MSSQL’in eski versiyonlarında kullanılan bu veri türleri veritabanı sürüm yükseltmelerinde uyumluluk sorunu yaşanmaması adına yeni versiyonlarda da bulunmaktadır. Yeni tasarladığınız bir veritabanında bunları kullanmamanızı tavsiye ederim. Text yerine Varchar ve Ntext yerine de Nvarchar kullanmanız daha doğru olacaktır.

Konu hakkında daha detaylı sorularınız varsa bu yazıya yorum yaparak sorabilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir