Her ikisi de 'char' karakterini ve 'varchar' değişken karakteri ifade eden birçok programlama dilinde ve veritabanı sistemindeki veri tipleridir. C harfindeki karakter, çoğunlukla UTF-8 kodlu karakterler ve tamsayılar olmak üzere dize değerlerini depolamak için kullanılan karakter türünü temsil eder. Öte yandan Varchar, herhangi bir belirsiz uzunlukta veri içerebilen bir veri türüdür. Varchar, veritabanı yönetim sistemindeki bir alanın veri türünü ifade eder. Her ikisi de maksimum 8.000 karakter uzunluğundaki dize değerlerini saklayabilirken, char varchar'dan daha fazla depolama alanı gerektirir. Teknik olarak, her ikisi de aynı tür verileri depolamak için kullanılır, ancak depolanma ve alınma şekilleri bakımından farklılık gösterir. Farklılıklarına ayrıntılı bir göz atalım.
Char, Unicode olmayan karakterleri, dolayısıyla adı (karakter kısaltması) saklamak için kullanılan sabit uzunluklu bir veri türüdür. Sayı olarak kodlanan her karakter için (ASCII kodlamasından) bir bayt alan kaplar. Karakter türü, küçük tamsayıları bildirmek için de kullanılabilir. Bir karakter değişkeni bildirmek için, 'char' anahtar kelimesi kullanılır, yani tek bir karakter bir baytta depolanır.
Tamsayı türleri gibi, char da imzalı veya imzasız olabilir. -128 ila 127 arasında değişen imzalı karakterleri tutabilir ve mimari boyuta bağlı olarak, 0 ile 255 arasında değişen değerleri de tutarak imzasız olabilir. Karakter değerleri saklandığında, belirtilen uzunluğa sahip boşluklarla sağa doğru doldurulur . Sondaki boşluklar alındıklarında kaldırılır.
Örneğin, bir char (7) veri türü değişkeni bildirirseniz, 1 karakter veya 7 karakter depolamanızdan bağımsız olarak her zaman 7 bayt veri alır, bu da sütuna maksimum 7 karakter depolayabileceğiniz anlamına gelir.
Varchar, adından da anlaşılacağı gibi, uzunluğu 0 ila 65,535 arasında değişen herhangi bir veri türü içerebilen değişken uzunlukta bir veri türüdür. Varchar alanı, veritabanına bağlı olarak belirli bir sınıra kadar herhangi bir boyuttaki değerleri saklayabilir. Programlama dillerinde veya veritabanı düzeyinde tanımlanabilir. Varchar alanının boyutu sıfırdan beyan edilen maksimum alan uzunluğuna kadar herhangi bir şey olabilir.
Değişken karakter bildirmek için 'varchar' anahtar sözcüğü kullanılır. Varchar değişken bir alan kaplar, yani sadece karakter sayısına eşit bayt sayısını kullanır. Sadece ipin boyutu için gerekli alanı kullandığı için alan israfını önlemeye yardımcı olur. Bazı programlama dillerinde ve veritabanı sistemlerinde, fazladan alan otomatik olarak veritabanından kaldırılır.
Örneğin - bir varchar (10) değişkeni bildirirseniz, karakter sayısına eşit bayt sayısını kullanır. Yani, sadece bir karakter saklıyorsanız, o zaman sadece bir bayt alır ve 10 karakter saklıyorsanız, 10 bayt alır, böylece veritabanı alanının boşa harcanmasını önler.
'Char', sabit uzunluktaki karakter dizesi değerini saklamak için kullanılan sabit uzunluklu bir veri türüdür, 'Varchar' değişken uzunluktaki alfasayısal verileri depolamak için kullanılan değişken uzunluklu bir veri türüdür..
Karakter değerinin depolama boyutu, tablo oluştururken bildirdiğiniz bu sütunun maksimum boyutuna eşittir. Öte yandan, varchar değerinin depolama boyutu, bu sütun için maksimum boyut değil, girilen verilerin gerçek uzunluğudur.
Bir sütundaki veri girişlerinin aynı boyutta olması beklendiğinde char kullanabilirsiniz, aksine bir sütundaki veri girişlerinin boyutunun değişmesi beklendiğinde varchar kullanılabilir.
Char statik bellek ayırmayı kullanırken varchar dinamik bellek ayırmayı kullanır
Karakter değişkeninin uzunluğu 0 ile 255 arasında herhangi bir değerde olabilirken, değişken değişkeninin uzunluğu 0 ile 65,535 arasında değişir.
Veri girişleri telefon numaraları gibi verileri depolamak için kullanılan karakterde tutarlıdır, oysa adresler gibi değişken verileri depolamak için varchar kullanılır..
kömür | Varchar |
Sabit uzunlukta karakter dizesi değerini saklamak için kullanılır. | Değişken uzunlukta alfasayısal verileri saklamak için kullanılır. |
Uzunluk 0 ila 255 arasında değişir. | Uzunluk 0 ila 65,535 arasında değişir. |
Depolama için karakter başına 1 bayt alır. | Karakter başına 1 bayt artı uzunluk bilgilerini depolamak için 1 veya 2 ekstra bayt alır. |
Karakterlerin depolama boyutu beyan edilenle aynı. | Varchar'ın depolama boyutu, depolanan belirli dizeye bağlıdır. |
Statik bellek ayırmayı kullanır. | Dinamik bellek ayırma kullanır. |
Değişkenin uzunluğu bilindiğinde karakter kullanılmalıdır.. | Varchar sadece değişkenin uzunluğu bilinmediğinde kullanılmalıdır. |
Yalnızca karakterleri kabul eder. | Hem karakterleri hem de sayıları kabul eder. |
Varchar'dan yüzde 50 daha hızlı. | Char'dan daha yavaş. |
Karakter değerinin depolama boyutu sütun için maksimum boyuta eşit. | Varchar değerinin depolama boyutu, sütun için maksimum boyuta değil, girilen verinin gerçek uzunluğuna eşittir. |