logo

MySQL VARCHAR

MySQL'deki Varchar, uzunluğu maksimum 65535 karakter . Tablodaki varchar sütunları şunlardır: değişken uzunluklu dize sayısal veya karakter ya da her ikisini birden tutabilen. Bu veri türü, sürüm 5.0.3'ten önce yalnızca 255 karakter depolayabilirken, bu sürüm ve sonrasında 65535 karaktere kadar tutabilir. MySQL'de şu şekilde saklanabilir: 1 bayt veya 2 bayt uzunluk öneki artı gerçek boyut.

Uzunluk öneki, ayarladığımız maksimum boyutu değil, bir dize değerinin bayt uzunluğunu belirtir. Değerler 255 bayttan fazlasını gerektirmiyorsa, bir sütunda uzunluk öneki artı bir bayt kullanılır. Değerler 255 bayttan fazlasını gerektiriyorsa, bir sütunda uzunluk öneki artı iki bayt kullanılır.

Bir VARCHAR'ın maksimum uzunluğu MySQL TEXT/BLOB sütunları ve kullanılan karakter kümesi dışındaki tüm sütunlar arasında paylaşılan maksimum 65.535 baytlık satır boyutuna tabidir. Bu, toplam sütunun 65535 bayttan fazla olmaması gerektiği anlamına gelir.

Bir örnek yardımıyla bunu anlayalım.

İki tablo oluşturacağız ve buna Test1 ve Test2 adını vereceğiz. Her iki tablo da T1 ve T2 adında iki sütun içerir. Bir tablo oluşturmak için aşağıdaki ifadeyi yürütün ' Test 1 ':

 CREATE TABLE Test1 ( T1 VARCHAR(32765) NOT NULL, T2 VARCHAR(32766) NOT NULL ) CHARACTER SET = 'latin1' COLLATE LATIN1_DANISH_CI; 

Yukarıdaki ifade başarıyla bir tablo oluşturdu çünkü sütun uzunluğu T1 = 32765 artı 2 bayt ve T2 = 32766 artı 2 bayt 65535'e (32765+2+32766+2) eşittir. Yani sütun uzunluğu, 65535 olan varchar'ın maksimum satır boyutunu karşılar.

MySQL VARCHAR

Şimdi sütun boyutunun artması durumunda ne olacağını göreceğiz. aşar varchar 65535'in maksimum boyutu. Bir tablo oluşturmak için T1 sütununun boyutunu artırdığımız aşağıdaki ifadeyi yürütün. Test2 :

 CREATE TABLE Test2 ( T1 VARCHAR(32770) NOT NULL, T2 VARCHAR(32766) NOT NULL ) CHARACTER SET = 'latin1' COLLATE LATIN1_DANISH_CI; 

Yukarıdaki ifadeyi yürüttükten sonra MySQL hatayı üretir. Bu, maksimum satır boyutunun 65.535 baytı geçemeyeceği anlamına gelir. Her durumda, eğer artarsa, ifade başarısız olur ve MySQL bir hata üretecektir.

MySQL VARCHAR

Başka bir durumda, adında bir tablo oluşturduğumuzu varsayalım. Test3 aşağıdaki ifadeyi kullanarak:

 CREATE TABLE Test3 ( Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(5) NOT NULL ); 

Daha sonra aşağıdaki ifadeyi kullanarak değerleri tabloya ekleyin:

 INSERT INTO Test3(Name) VALUES ('Stephen'); 

Şimdi yukarıdaki ifadeyi yürütün. MySQL hata mesajını veriyor: Veriler, 1. satırdaki 'Ad' sütunu için çok uzun . Çıktı bunu daha net açıklıyor.

MySQL VARCHAR

MySQL VARCHAR ve Uzaylar

MySQL, depolandığında varchar değerleri için boşluk doldurmaz. MySQL ayrıca varchar değerlerini depolarken veya alırken sondaki boşlukları da korudu. Bunu aşağıdaki örnekle anlayabiliriz. ifade ekle değerleri ekler İsim tablo sütunu Test3 :

 INSERT INTO Test3(Name) VALUES ('John '); 

Daha sonra değerleri almak için SELECT deyimini yürütün.

 SELECT Id, Name, length(Name) FROM Test3; 

Sütun uzunluğunu artırmadığı için MySQL'in uzunluk sayımına sondaki alanı dahil ettiği aşağıdaki çıktıyı verecektir.

MySQL VARCHAR

Ancak, sütun uzunluğunu aşan, sonunda boşluk bulunan bir varchar değeri eklemeye çalıştığımızda MySQL, kısaltmak sondaki boşluklar. Ayrıca MySQL bir uyarı . Aşağıdaki örnek bunu daha açık bir şekilde açıklamaktadır:

 INSERT INTO Test3(Name) VALUES ('Peter '); 

Yukarıdaki ifade uzunluğu şu şekilde olan bir değer ekler: altı ad sütununa girin. Değer hala sütuna ekleniyor, ancak MySQL, değeri eklemeden önce sondaki boşluğu kesiyor. Insert ifadesinin başarıyla eklendiğini ancak şunu veren bir uyarıyla görebildiğimiz aşağıdaki sorguyu kullanarak doğrulama yapabiliriz: 1. satırdaki 'ad' sütunu için veriler kesildi :

MySQL VARCHAR

Char ve Varchar Veri Türü Arasındaki Fark

Char ve varchar veri türlerinin her ikisi de aşağıdaki gibidir ASCII karakteri . Neredeyse aynıdırlar ancak veriyi depolama ve veri tabanından alma konusunda farklılık gösterirler. Aşağıdaki tabloda char ve varchar veri türleri arasındaki temel farklar özetlenmektedir:

KAR VARCHAR
Karakteri duruyor. Değişken karakter anlamına gelir.
Tablo oluştururken bildirdiğimiz değerleri sabit uzunlukta saklar. Değerleri, bir veya iki baytlık uzunluk önekine sahip değişken uzunluklu bir dizede saklar.
Bu veri türü, belirtilen uzunluğu korumak için sondaki boşlukla doldurulabilir. Bu veri türü depolandığında boşluk dahil herhangi bir karakterle doldurulamaz.
255 karakterden fazlasını tutamaz. 65535 karaktere kadar tutabilir.
Statik bellek tahsisini destekler. Dinamik bellek tahsisini destekler.