İndi gəlin danışaq ki, artıq mövcud olan cədvəlləri necə dəyişmək olar. Proyekt həyatında heç nə sabit qalmır — tələblər bəzən elə qəfil gəlir ki, sanki bombardilokrokodilo hücum edir. Məsələn, product manager birdən qərara gəlir ki, hər istifadəçinin profil fonunun sevimli rənginin unikal ID-si olmalıdır. Və ya başa düşürsən ki, VARCHAR(50) ad üçün çox azdır, axı bazada artıq "Bombardilokrokodilo-Junior-Uchuncu" adlı istifadəçi var.
Narahat olma, PostgreSQL-də belə şeylər üçün bir alət var — ALTER TABLE komandası.
ALTER TABLE — bu komanda sənə mövcud cədvəllərin strukturunu dəyişməyə imkan verir. Onunla sən belə şeylər edə bilərsən:
- Yeni sütun əlavə et;
- Lazımsız sütunu sil;
- Sütunun data type-ını dəyiş;
- Cədvəlin və ya sütunun adını dəyiş;
NOT NULL,UNIQUEkimi constraint-ləri əlavə et və ya sil və s.
Belə deyək, sanki artıq ev (cədvəl) tikmisən, amma indi ora yeni otaq (sütun) əlavə etmək və ya lazımsız anbarı (sütunu) sökmək istəyirsən.
ALTER TABLE sintaksisi
Ümumi struktur çox intuitivdir:
ALTER TABLE cedvel
deyisiklik_emeli;
Burada:
cedvel— dəyişmək istədiyin cədvəlin adı;-
deyisiklik_emeli— konkret etmək istədiyin əməliyyat (məsələn, sütun əlavə etmək, silmək və ya data type dəyişmək).
ALTER TABLE istifadəsinə nümunələr
Yeni sütun əlavə etmək
Cədvələ yeni sütun əlavə etmək istəyirsənsə, ADD COLUMN komandasından istifadə et. Məsələn:
ALTER TABLE students
ADD COLUMN email VARCHAR(100);
Bu komanda students cədvəlinə email adlı yeni sütun əlavə edəcək, burada tələbənin email ünvanı saxlanacaq. Sütunun data type-ı — maksimum 100 simvol olan string-dir.
Tutaq ki, tələbələr üçün cədvəl yaratmısan, amma onların qəbul tarixi barədə məlumatı əlavə etməyi unutmusanm. Bunu belə düzəldə bilərsən:
ALTER TABLE students
ADD COLUMN enrollment_date DATE;
İndi səndə enrollment_date sütunu var və qəbul tarixini saxlaya bilərsən.
Sütunu silmək
Əgər qərara gəlmisən ki, hansısa sütun artıq lazım deyil, DROP COLUMN komandasından istifadə et. Məsələn:
ALTER TABLE students
DROP COLUMN email;
Bu komanda students cədvəlindən email sütununu silir. Yadda saxla ki, bu sütundakı məlumatlar da bərpa olunmadan silinəcək.
Vacib məqam:
Əgər silmək istədiyin sütun başqa cədvəllərdə istifadə olunursa (məsələn, foreign key kimi), PostgreSQL səhv verəcək. Belə hallarda əvvəlcə asılılıqları silmək lazımdır.
Sütunun data type-ını dəyişmək
Bəzən əvvəl seçdiyin data type uyğun olmur. Məsələn, tələbənin yaşını SMALLINT kimi saxlamısan, amma sonra başa düşürsən ki, bu bəs etmir və BIGINT istifadə etmək istəyirsən. Bunu belə edirsən:
ALTER TABLE students
ALTER COLUMN age TYPE BIGINT;
Vacib məqam: əgər sütunda artıq məlumat varsa, PostgreSQL yoxlayacaq ki, onları yeni type-a çevirmək mümkündürmü. Əgər mümkün deyilsə, səhv alacaqsan.
Tutaq ki, description sütununu VARCHAR(100) kimi yaratmısan, amma sonra başa düşürsən ki, kursların təsviri daha uzun ola bilər. Data type-ı TEXT ilə dəyiş:
ALTER TABLE courses
ALTER COLUMN description TYPE TEXT;
İndi kursların tam təsvirini limitsiz saxlaya bilərsən.
Sütunun adını dəyişmək
Sütunun adını dəyişmək lazımdırsa, RENAME COLUMN komandasından istifadə et:
ALTER TABLE students
RENAME COLUMN name TO full_name;
İndi name sütunu full_name adlanacaq.
Cədvəlin adını dəyişmək
Cədvəlin öz adını da dəyişə bilərsən. Bunun üçün RENAME TO istifadə olunur:
ALTER TABLE students
RENAME TO university_students;
İndi students cədvəli university_students adlanacaq.
NOT NULL constraint-i əlavə/sil
Tutaq ki, sütun yaratmısan, amma onu məcburi (NOT NULL) etməyi unutmusanm. Problem deyil! Bu constraint-i sonradan əlavə edə bilərsən:
ALTER TABLE students
ALTER COLUMN name SET NOT NULL;
NOT NULL constraint-i silmək istəyirsənsə, DROP NOT NULL komandasından istifadə et:
ALTER TABLE students
ALTER COLUMN name DROP NOT NULL;
Default dəyər təyin etmək
Sütun artıq varsa, amma ona default dəyər vermək istəyirsənsə, SET DEFAULT istifadə et:
ALTER TABLE enrollments
ALTER COLUMN enrollment_date SET DEFAULT CURRENT_DATE;
Default dəyəri silmək üçün isə belə et:
ALTER TABLE enrollments
ALTER COLUMN enrollment_date DROP DEFAULT;
Hər komandaya ayrıca növbəti üç leksiyada baxacağıq. Hazır ol! :)
ALTER TABLE istifadə edərkən tipik səhvlər
ALTER TABLE ilə işləyəndə səhvlər ola bilər. Ən çox rast gəlinənlər bunlardır:
Data type-ı dəyişmək cəhdi, amma mövcud məlumat uyğun deyil. Məsələn, age sütununda artıq məlumat varsa və sən onu VARCHAR etmək istəyirsənsə, bu səhv verəcək. Həll: əvvəlcə məlumatı sil və ya konvertasiya et.
Foreign key və ya index kimi istifadə olunan sütunu silmək cəhdi. PostgreSQL bunu etməyə imkan verməyəcək, çünki data bütövlüyünü qoruyur. Asılı sütunları silməzdən əvvəl əlaqələri silmək lazımdır.
Sintaksis səhvləri. ALTER TABLE komandası çox çevikdir, amma sintaksisə dəqiq əməl etmək lazımdır. Məsələn, ADD COLUMN komandasında data type olmalıdır.
Real istifadə ssenariləri
Real həyatda ALTER TABLE komandası daim istifadə olunur. Sən onu belə hallarda görə bilərsən:
- Mövcud cədvələ yeni məlumat əlavə etmək (məsələn, yeni sütunlar);
- Database optimizasiyası (məsələn, data type-ları dəyişib yaddaş sərfiyyatını azaltmaq);
- Dizayn səhvlərini düzəltmək (məsələn, əvvəl constraint-i unutmusansa və ya data type səhv seçilibsə).
Artıq başa düşürsən ki, ALTER TABLE komandası nə qədər güclüdür. Bu, proyektində dəyişiklikləri rahat idarə etməyə kömək edən bir alətdir. Əsas odur — diqqətli ol və tələsmə, yoxsa "evi sökə" (cədvəlini pozarsan), yeni otaq əlavə etmək istəyərkən.
GO TO FULL VERSION