Merhaba. Bu yazının konusu PostgreSQL Karakter Veri Türleri arkadaşlar. Bir önceki yazıda Boolean ile ilgili bilgi sunmuştum size.
PostgreSQL Karakter Veri Türleri Nelerdir?
PostgreSQL diğer veri tabanlarında bulunan benzer karakter veri türlerine sahiptir. Bu veri türleri şunlardır:
- char(n)
- varchar(n)
- text ve varchar
Hmm bir karmaşa var sanki. Burada iki adet varchar görüyoruz. Meraklanmayın açıklayacağım.
char Veri Türü
Arkadaşlar bu veri türü n adet karakter alır. Örneğin 200 karakter alsın dersiniz. Fakat 18 karakterini doldurdunuz. Burada geriye kalan 182 karakter boşluklarla dolduruluyor. Dilerseniz bu türün iki farklı kullanımını inceleyelim:
CREATE TABLE isimler( id SERIAL, isim char(10) ); -- ya da CREATE TABLE isimler( id SERIAL, isim character(10) );
Aradaki tek farkın keywordler olduğunu anlamışsınızdır. char ve character aynı şeyler. Eğer biraz sonra belirteceğim varchar şeklinde n karaktersiz bir kullanım yaparsanız varsayılan karakter uzunluğu 1 karakterdir. Yani sonsuz karakter değildir.
varchar Veri Türü
Arkadaşlar bu veri türü bir parça karmaşık gelebilir. Çünkü yeri gelir text gibi davranır yeri gelir char gibi davranır. Ancak char ile arasında fark bulunmaktadır. Örneğin char kullanılmayan alanları boşluklarla doldururp gereksiz işgalde bulunuyorken varchar belirlediğiniz limitlerde kullanılan alan haricinde işgal etme gibi garip şeylere kalkışmaz.
Bir güzel yan şu arkadaşlar diyelim ki her iki türde de n karakteri aştınız. Bu aşmayı tetikleyen boşluklar ise postgresql bunları siliyor ve boşlukların olmadığı anlamlı dizeyi size sunuyor.
Eğer varchar(n) türünden bir kullanım yapmazsanız yanı spesifik bir karakter belirtmezseniz bir sonraki maddede yer alan text ile aynı davranışı sergileyeceğini söyleyebilirim. Avantaj ya da dezavantaj size kalmış bir mevzu ise uzayın sonuna kadar alabildikleri aldıktan sonra oldu ki taşma yaşandı varchar bu değeri kontrol edip size hata döndürecektir. Basit bir kullanımı şöyle örnekleyelim:
CREATE TABLE ornek( id SERIAL, isim varchar(20), aciklama varchar ); -- ya da CREATE TABLE ornek( id SERIAL, isim character varying(20), aciklama varchar );
Ayrıca performans olarak varchar ve text aynılar.
text Veri Türü
Gelelim son veri türümüze. Bu arada gördüğünüz gibi PostgreSQL Karakter Veri Türleri çok da karmaşık değiller.
Text veri türünün varchar’dan tek farkı n karakter limitinin uygulanamıyor oluşu. Varsayalım ki karakter limiti vermeye kalktınız anında aşağıdaki hatayı alacaksınız:
ERROR: type modifier is not allowed for type “text”
Bu hata açık bir şekilde limitleme yapamayacağınızı anlatan bir hata oluyor. Gelelim nasıl yaparıza:
CREATE TABLE ornek( id SERIAL, aciklama text );
Bu kadar basit. Diğer veri tabanlarında bu üç tür arasında performans açısından fark olabilir ancak PostgreSQL tarafında char türünün boşluklarla doldurulması haricinde çok büyük problem yok. Zaten doldurulan gereksiz boşluklar yok sayılıyorlar. Sadece belirli bir limit olsun bu kontrol edilebilir olsun diyorsanız text, varchar ya da varchar(n) şeklinde bir kullanımda bulunmalısınız.
Daha detaylı bilgi lazımsa resmi siteye gidebilirsiniz.
Okuduğunuz için şimdiden teşekkür ederim. Hatalı, yanlış gördüğünüz noktalar mevcutsa yorumla bildirirseniz sevinirim. Ben de yeni öğrenenlerdenim.