CHAR, VARCHAR and TEXT
Ushbu qo'llanmada siz PostgreSQL belgilar ma'lumotlari turlari, jumladan CHAR
, VARCHAR
va TEXT
haqida ma'lumot olasiz va jadvallaringiz uchun mos belgilar turlarini qanday tanlashni bilib olasiz.
PostgreSQL uchta asosiy belgilar turini taqdim etadi:
CHARACTER(n)
yokiCHAR(n)
CHARACTER VARYING(n)
yokiVARCHAR(n)
TEXT
Bu sintaksisda n
belgilar sonini bildiruvchi musbat butun sondir.
Quyidagi jadvalda PostgreSQLdagi belgilar turlari ko'rsatilgan:
CHARACTER VARYING(n), VARCHAR(n)
uzunlik chegarasi bilan o'zgaruvchan uzunlik
CHARACTER(n), CHAR(n)
belgilangan uzunlikdagi, bo'sh to'ldirilgan
TEXT, VARCHAR
o'zgaruvchan cheksiz uzunlik
CHAR(n)
ham, VARCHAR(n)
ham n
tagacha belgi saqlashi mumkin. Agar siz n
dan ortiq belgidan iborat satrni saqlashga harakat qilsangiz, PostgreSQL xatolik chiqaradi.
Biroq, istisnolardan biri shundaki, agar ortiqcha belgilar barcha bo'shliqlar bo'lsa, PostgreSQL bo'shliqlarni maksimal uzunlikka (n)
qisqartiradi va kesilgan belgilarni saqlaydi.
Agar satr aniq CHAR(n)
yoki VARCHAR(n)
ga uzatilsa, PostgreSQL uni jadvalga kiritishdan oldin uni n
ta belgiga qisqartiradi.
TEXT
ma'lumotlar turi cheksiz uzunlikdagi satrni saqlashi mumkin.
VARCHAR
ma'lumotlar turi uchun n
butun sonni ko'rsatmasangiz, u TEXT
ma'lumotlar turi kabi ishlaydi. VARCHAR
(n
o'lchamisiz) va TEXT
ning ishlashi bir xil.
VARCHAR
ma'lumotlar turi uchun uzunlik spetsifikatorini belgilashning afzalligi shundaki, agar siz VARCHAR(n)
ustuniga n
dan ortiq belgidan iborat qatorni kiritishga harakat qilsangiz, PostgreSQL xatolik chiqaradi.
VARCHAR
dan farqli o'laroq, CHARACTER
yoki CHAR
uzunliksiz, spetsifikatsiya (n)
CHARACTER(1)
yoki CHAR(1)
bilan bir xil.
Boshqa ma'lumotlar bazasi tizimlaridan farqli o'laroq, PostgreSQLda uchta belgi turi o'rtasida unumdorlik farqi yo'q.
Ko'pgina hollarda siz TEXT
yoki VARCHAR
dan foydalanishingiz va VARCHAR(n)
dan faqat PostgreSQL uzunligini tekshirishni xohlaganingizda foydalaning.
PostgreSQL belgilar turiga misollar
CHAR
, VARCHAR
va TEXT
ma'lumotlar turlari qanday ishlashini tushunish uchun misolni ko'rib chiqamiz.
Birinchidan, character_tests
deb nomlangan yangi jadval yarating:
Keyin, character_tests
jadvaliga yangi qator qo'shing:
PostgreSQL xatolik yuz berdi:
Buning sababi shundaki, x
ustunining ma'lumotlar turi char(1)
va biz ushbu ustunga uchta belgidan iborat qatorni kiritishga harakat qildik.
Keling, tuzatamiz:
PostgreSQL boshqa xato chiqaradi:
Buning sababi, biz varchar(10)
ma'lumotlar turiga ega bo'lgan y
ustuniga 10 dan ortiq belgidan iborat qatorni kiritishga harakat qildik.
Quyidagi bayonot character_tests
jadvaliga yangi qatorni muvaffaqiyatli kiritadi.
Chiqish:
Xulosa
PostgreSQL
CHAR
,VARCHAR
vaTEXT
ma'lumotlar turlarini qo'llab-quvvatlaydi.CHAR
- belgilangan uzunlikdagi belgilar turi,VARCHAR
vaTEXT
esa har xil uzunlikdagi belgilar turlari.Agar ustunga kiritish yoki uni yangilashdan oldin satr uzunligini (
n
) tekshirishni istasangiz,VARCHAR(n)
dan foydalaning.VARCHAR
(uzunlik ko'rsatkichisiz) vaTEXT
ekvivalentdir.
Last updated