Bu gün bir az ARRAY-lərdən danışacağıq — PostgreSQL-in güclü alətlərindən biri, bir sütunda eyni tipli dəyərlər siyahısını saxlamağa imkan verir. ARRAY-ləri daha ətraflı növbəti səviyyələrdə öyrənəcəyik.
"ARRAY-lər" deyəndə dərhal siyahılar yadıma düşür. Düşün, mağazaya getməzdən əvvəl alış-veriş siyahısı yazırsan: alma, banan, süd, çörək. PostgreSQL-də ARRAY — belə bir siyahının analoqudur, burada bir sahədə bir neçə dəyər saxlamaq olar və hər bir dəyər eyni data tipinə aiddir. Məsələn, ədədlər array-ı, mətnlər array-ı, tarixlər array-ı və s.
Bəzi nümunələr göstərək.
Ədədlər array-ı:
{1, 2, 3, 4}
Sətirlər array-ı:
{"alma", "banan", "gilas"}
Tarixlər array-ı:
{2024-10-01, 2024-10-02, 2024-10-03}
ARRAY bir sahədə bir neçə dəyər yazmağa imkan verir, bu da cədvəldə yerə qənaət edir və sorğuların çevikliyini artırır.
Niyə ARRAY-lərə ehtiyac var? Əsas üstünlüklər
Məlumatların kompakt saxlanması: bir sahədə bir neçə dəyərin saxlanması. Bu, xüsusilə bir-biri ilə məntiqi bağlı olan məlumatlar üçün faydalıdır. Məsələn, məqalə üçün tag-lar siyahısı və ya tələbənin qiymətləri siyahısı. İki tag üçün ayrıca cədvəl açmağa dəyər?
Sorğuların rahatlığı: ARRAY-lər bir sahədən dərhal bütün dəyərlər siyahısını almağa və array-in ayrı-ayrı elementləri ilə asanlıqla işləməyə imkan verir.
Performans: bəzi hallarda ARRAY-lər əlaqəli məlumatlar üçün əlavə cədvəllər yaratmaqdan qaçmağa imkan verir, bu da bazanın arxitekturasını sadələşdirir və development-i sürətləndirir. Bu, əlbəttə, sevindiricidir.
PostgreSQL-də ARRAY-lərlə necə işləmək olar?
SELECT-də ARRAY yaratmaq
ARRAY yaratmaq üçün ARRAY[] konstruktorundan istifadə edə bilərsən. Məsələn:
-- Ədədlər array-ı nümunəsi
SELECT ARRAY[1, 2, 3, 4];
-- Sətirlər array-ı nümunəsi
SELECT ARRAY['alma', 'banan', 'gilas'];
Çox asandır. Gəlin bir cədvəl yaradaq və orada nəsə seçək.
ARRAY-lərlə cədvəl yaratmaq
Əvvəlcə bir cədvəl yaradaq, burada sütunlardan biri array olacaq.
| id | name - VARCHAR(50) | subjects - TEXT[] |
|---|---|---|
| 1 | Alex | {Riyaziyyat,Fizika} |
| 2 | Maria | {Kimya,Biologiya,İngilis} |
| 3 | Peter | {İnformatika} |
Görək nə alındı:
SELECT * FROM students;
| id | name | subjects |
|---|---|---|
| 1 | Alex | {Riyaziyyat,Fizika} |
| 2 | Maria | {Kimya,Biologiya,İngilis} |
| 3 | Peter | {İnformatika} |
ARRAY-lərdən məlumat çıxarmaq
ARRAY-dən məlumat çıxarmaq üçün PostgreSQL bir neçə funksiya və operator təqdim edir.
ARRAY elementini çıxarmaq
ARRAY-in elementini indekslə almaq üçün kvadrat mötərizələr [] istifadə olunur. Diqqət et, indeksləşmə 1-dən başlayır (əksər proqramlaşdırma dillərində 0-dan fərqli olaraq).
-- Hər tələbənin birinci fənnini alırıq
SELECT name, subjects[1] AS birinci_fənn FROM students;
Və nəticə belədir:
| name | birinci_fənn |
|---|---|
| Alex | Riyaziyyat |
| Maria | Kimya |
| Peter | İnformatika |
ARRAY-in bütün sətrini çıxarmaq
ARRAY-in bütün elementlərini almaq üçün adi SELECT istifadə olunur:
SELECT name, subjects FROM students;
ARRAY daxilində dəyər axtarışı
Bəzən bizə lazımdır ki, ARRAY müəyyən bir dəyəri saxlayırmı, yoxsa yox. Bunun üçün ANY operatoru istifadə olunur.
-- "Riyaziyyat" oxuyan tələbələri seç
SELECT name
FROM students
WHERE 'Riyaziyyat' = ANY(subjects);
Sorgunun nəticəsi:
| name |
|---|
| Alex |
PostgreSQL-də ARRAY-lərlə işləmək üçün çoxlu funksiya və operator var, amma onları gələcək səviyyələrdə öyrənəcəksən :P
ARRAY-lərlə işləyərkən tipik səhvlər
0 və 1 ilə indeksləşməni qarışdırmaq.
PostgreSQL-də ARRAY-in indeksləşməsi 1-dən başlayır. Python və ya JavaScript kimi dillərə öyrəşmisənsə, bu asanlıqla çaşdıra bilər.
Boş ARRAY-lər.
Boş ARRAY {} və NULL — PostgreSQL-də fərqli şeylərdir. ARRAY-ləri müqayisə edəndə bu anlayışları qarışdırma.
Böyük ARRAY-lərlə işləmək.
Çox böyük həcmdə məlumatı ARRAY-də saxlamaq sorğuların işləmə vaxtını artıra bilər. ARRAY-ləri kiçik həcmli məlumatlar üçün istifadə et.
GO TO FULL VERSION