İlk leksiyalarda biz relasion verilənlər bazaları və PostgreSQL haqqında əsas bilikləri öyrəndik, psql və pgAdmin ilə işləməyi, həmçinin verilənlər bazalarını yaratmağı və idarə etməyi öyrəndik. İndi isə relasion verilənlər bazalarının əsas "tikinti materialı"na – cədvəllərə keçmək vaxtıdır. Məhz cədvəllər bütün məlumatı saxlayır, hansı ki, sonra filtrləyə, sıralaya və ya birləşdirə bilərik.
PostgreSQL-də cədvəlləri CREATE TABLE komandası ilə yaratmaq olar. Bu komanda cədvəlin strukturunu təsvir edir: onun adını, sütunlarını və onların data tiplərini.
Komandanın ümumi strukturu
Bax belə əsas sintaksis görünür:
CREATE TABLE cedvel (
sutun1 data_tip constraints,
sutun2 data_tip constraints,
...
);
Hissə-hissə baxaq:
cedvel– cədvəlin adı (məsələn,students).sutun1– sütunun adı (məsələn,id,name).data_tip– sütunun data tipi (məsələn,INTEGER,VARCHAR).constraints– data üçün məhdudiyyətlər (məsələn,NOT NULL,PRIMARY KEY).
İndi isə ilk cədvəlimizi yaradaq.
Cədvəl yaratmaq nümunəsi
Ssenari: tədris verilənlər bazasında tələbələr haqqında məlumat saxlamaq lazımdır. Bunun üçün students cədvəlini aşağıdakı sahələrlə yaradaq:
id: tələbənin unikal identifikatoru (avtomatik artır);name: tələbənin adı (sətirin uzunluğu maksimum 100 simvol);age: tələbənin yaşı (müsbət tam ədəd).
CREATE TABLE students (
id SERIAL PRIMARY KEY, -- tələbənin unikal ID-si
name VARCHAR(100), -- ad
age INTEGER -- yaş
);
Burada nə baş verir:
id SERIAL PRIMARY KEY:idsütunu yaradılır, hansı ki, hər sətr üçün avtomatik unikal ədədlər (1, 2, 3...) generasiya edir. Həmçinin bu sütun cədvəlin əsas açarıdır.name VARCHAR(100): mətn sütunu yaradılır, buradaVARCHAR(100)o deməkdir ki, sətir maksimum 100 simvol ola bilər.age INTEGER: yaş üçün ədədi sütun yaradılır.
İndi bu sorğunu psql və ya pgAdmin-də icra etsək, students cədvəli yaradılacaq.
Sütunlar üçün data tipləri
Cədvəl yaradanda hər sütun üçün düzgün data tipini seçmək vacibdir. PostgreSQL bir çox tip təklif edir, amma gəlin ən populyarlarından başlayaq.
| Data tipi | Təsviri | Nümunə dəyərlər |
|---|---|---|
INTEGER |
Tam ədədlər. Yaş, say və ya identifikatorlar üçün əladır. | 1, 42, 100 |
VARCHAR(n) |
Maksimum n simvol uzunluğunda sətir. Məhdud uzunluqlu mətnlər üçün idealdır. |
'Alice', 'Bob' |
TEXT |
Məhdudiyyətsiz sətirlər. Uzun mətnlər üçün istifadə olunur (məsələn, məhsul təsviri). | 'Çox uzun mətn...' |
DATE |
Vaxtsız tarix. Doğum tarixi, hadisələr üçün istifadə olunur. | 2023-10-12 |
BOOLEAN |
Loji tip: TRUE və ya FALSE. Flaglar üçün istifadə olunur (məsələn, tamamlanıb/yoxdur). |
TRUE, FALSE |
Uyğun data tipini seçmək
- Əgər ədəd saxlayırsansa –
INTEGERistifadə et. - Məhdud uzunluqlu sətirlər üçün –
VARCHAR(n)seçmək daha yaxşıdır. - Məhdudiyyətsiz mətn üçün –
TEXTistifadə et. - Tarix və vaxt üçün
DATEvə yaTIMESTAMPistifadə et.
Nümunə: courses cədvəli yaradırıq
Tutaq ki, bazada kurslar haqqında da məlumat saxlamaq lazımdır. Hər kursun aşağıdakı sahələri var:
id: unikal identifikator;name: kursun adı (maksimum 100 simvol sətir);description: kursun təsviri (uzun mətn);start_date: kursun başlama tarixi.
SQL kodu:
CREATE TABLE courses (
id SERIAL PRIMARY KEY, -- kursun unikal ID-si
name VARCHAR(100), -- kursun adı
description TEXT, -- təsviri
start_date DATE -- start tarixi
);
Praktiki tapşırıq
İndi isə sənin növbəndir cədvəl yaratmağa! Tapşırıq belədir:
teacherscədvəlini yarat:id: unikal identifikator.name: müəllimin adı (maksimum 50 simvol sətir).subject: o, hansı fənni tədris edir (maksimum 50 simvol sətir).hire_date: işə qəbul tarixi.
İcra üçün kod nümunəsi:
CREATE TABLE teachers (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
subject VARCHAR(50),
hire_date DATE
);
İcra etdikdən sonra \d teachers komandasını psql-də istifadə et ki, cədvəlin yaradıldığından əmin olasan.
Cədvəl yaradanda tipik səhvlər
Cədvəllərlə işləməyə başlayanda səhvlər ola bilər. Budur, bir neçə tipik vəziyyət:
Cədvəl və ya sütun adında səhv. PostgreSQL-də adlar böyük-kiçik hərf fərqini nəzərə almır, amma əgər adları " ilə yazırsansa, diqqətli olmalısan. Məsələn, CREATE TABLE "MyTable" "MyTable" adlı cədvəl yaradır, amma mytable onun adı kimi tanınmır.
Yanlış data tipi. Əgər mövcud olmayan data tipi göstərsən, sorğu səhvlə bitəcək.
CREATE TABLE example (
column1 STRANGE_TYPE
);
Bu sorğu icra olunmayacaq, çünki STRANGE_TYPE mövcud deyil.
PRIMARY KEY unutmaq. Əgər əsas açarı əlavə etməyi unutsan, cədvəl yaradılacaq, amma sətrləri identifikasiya etmək çətin olacaq.
GO TO FULL VERSION