- Verilənlər bazası və VBİS anlayışlarını izah etmək
- Cədvəlin sətir, sütun və xanalarını ayırd etmək
- Əsas və xarici açarın rolunu başa düşmək
- İlk SQL sorğunu icra etmək
Məktəbdə 1000 şagird, onlarla fənn və minlərlə qiymət var. Bütün bunları dəftərdə, hətta bir Excel faylında saxlamaq tezliklə əzaba çevrilir: məlumat təkrarlanır, səhvlər yaranır, lazım olanı tapmaq saatlar çəkir. Banklar, onlayn mağazalar, sosial şəbəkələr və elektron məktəb jurnalları bu problemi verilənlər bazası ilə həll edir. Onunla danışmaq üçün isə xüsusi dil var — SQL.
Verilənlər bazası nədir?
Verilənlər bazası — nizamlı şəkildə saxlanan, asanlıqla axtarılıb dəyişdirilə və qoruna bilən məlumatlar toplusudur. Bazanın faylları ilə biz birbaşa işləmirik — bunu bizim əvəzimizə xüsusi proqram edir. O, məlumatları diskdə saxlayır, sorğularımızı icra edir, yüzlərlə istifadəçinin eyni anda işləməsinə imkan verir və icazəsi olmayanları içəri buraxmır.
Verilənlər bazalarını yaradan, saxlayan və onlara göndərilən sorğuları icra edən proqram. Məsələn: SQLite, MySQL, PostgreSQL, Microsoft SQL Server.
Bu kursda relyasiya (cədvəlli) verilənlər bazalarını öyrənəcəyik. Onlarda bütün məlumatlar cədvəllərdə saxlanılır, cədvəllər isə bir-biri ilə əlaqələndirilir. Bu ideyanı 1970-ci ildə IBM tədqiqatçısı Edqar Kodd irəli sürüb və bu gün də ən geniş yayılmış yanaşma məhz budur.
Cədvəl: sətirlər və sütunlar
Cədvəl bir növ obyekt haqqında məlumat saxlayır: şagirdlər, kurslar, məhsullar. Bu kursun bütün nümunələri eyni məşq bazasında işləyir. Gəl, courses (kurslar) cədvəlinə baxaq. Aşağıdakı sorğunu icra et: SELECT * «bütün sütunları götür», FROM courses «courses cədvəlindən», ORDER BY id isə «id-yə görə sırala» deməkdir.
SELECT *
FROM courses
ORDER BY id;▸ Gözlənilən nəticə
id | title | subject | teacher | credits 1 | Algebra | Math | Ramin Səfərov | 4 2 | Geometry | Math | Ramin Səfərov | 3 3 | Mechanics | Physics | Ülviyyə Axundova | 4 4 | Organic Chemistry | Chemistry | Samir Hacıyev | 3 5 | World History | History | Nərmin Vəliyeva | 2 6 | Python Basics | Informatics | Elnur Qasımov | 3 7 | English B1 | English | Sara Mitchell | 2
- Sütun (sahə) — bir xüsusiyyətdir:
title(ad),teacher(müəllim),credits(kredit). Hər sütunun adı və məlumat tipi var: mətn, tam ədəd, kəsr ədəd, tarix. - Sətir (yazı) — bir obyekt haqqında bütün məlumatdır. Məsələn, 3-cü sətir Mechanics kursunu təsvir edir.
- Xana — sətirlə sütunun kəsişməsindəki tək qiymətdir, məsələn, Mechanics kursunun krediti: 4.
- Cədvəldəki sətirlərin öz-özlüyündə sırası yoxdur. Nəticənin müəyyən ardıcıllıqla gəlməsini istəyiriksə,
ORDER BYyazırıq.
Açarlar: cədvəllər necə əlaqələnir
Hər sətri birmənalı müəyyən edən sütun. Onun qiymətləri təkrarlana və boş qala bilməz. Məşq bazamızda bu, hər cədvəldəki id sütunudur.
Başqa cədvəlin əsas açarına istinad edən sütun. Məsələn, enrollments.student_id sütunu students.id-yə istinad edir və yazılışın hansı şagirdə aid olduğunu göstərir.
enrollments (kurslara yazılış) cədvəlində şagirdlərin adı yoxdur — yalnız nömrələri var. Aşağıdakı sorğu 1 nömrəli şagirdin, yəni Ayselin yazıldığı kursları göstərir: course_id 1 — Algebra, 6 isə Python Basics-dir. Beləliklə, şagirdin adı və şəhəri yalnız bir yerdə — students cədvəlində saxlanılır və heç yerdə təkrarlanmır.
SELECT *
FROM enrollments
WHERE student_id = 1
ORDER BY id;▸ Gözlənilən nəticə
id | student_id | course_id | score | enrolled_on 1 | 1 | 1 | 92 | 2025-09-15 2 | 1 | 6 | 88 | 2025-09-15
WHERE yalnız şərtə uyğun sətirləri saxlayır — onu növbəti dərslərdə ətraflı öyrənəcəyik.| Cədvəl | Nə saxlayır | Sətir sayı |
|---|---|---|
| students | şagirdlər: ad, soyad, yaş, sinif, şəhər, e-poçt | 12 |
| courses | kurslar: ad, fənn, müəllim, kredit | 7 |
| enrollments | hansı şagirdin hansı kursa yazıldığı və balı | 20 |
| products | məhsullar: ad, kateqoriya, qiymət, anbar qalığı | 10 |
| customers | müştərilər: ad, şəhər, ölkə, qeydiyyat tarixi | 7 |
| orders | sifarişlər: kim, hansı məhsuldan, neçə ədəd, nə vaxt | 12 |
SQL və onun dialektləri
SQL (Structured Query Language — strukturlaşdırılmış sorğu dili) verilənlər bazası ilə danışmaq üçün standart dildir. O, deklarativ dildir: sən nəticəni necə tapmağı yox, nə istədiyini yazırsan, ən yaxşı yolu isə VBİS özü seçir. SQL açar sözləri böyük-kiçik hərfə həssas deyil, amma onları böyük hərflə yazmaq qəbul olunmuş qaydadır. Hər əmr adətən nöqtəli vergüllə (;) bitir.
SQL standartdır, lakin hər VBİS ona öz əlavələrini edib. Bu variantlara dialekt deyilir. Əsas əmrlər (SELECT, WHERE, JOIN və s.) hamısında eynidir, fərqlər isə kiçik detallardadır. Bu kursda nümunələr SQLite-da icra olunur, vacib fərqləri isə yeri gəldikcə qeyd edəcəyik.
| VBİS | Harada istifadə olunur | Xüsusiyyəti |
|---|---|---|
| SQLite | mobil tətbiqlər, brauzerlər, kiçik proqramlar | server tələb etmir: bütün baza bir fayldır |
| MySQL | veb-saytlar və veb-tətbiqlər | açıq mənbəli və çox populyardır |
| PostgreSQL | mürəkkəb tətbiqlər, analitika | açıq mənbəli, SQL standartına çox yaxındır |
| SQL Server | şirkətlərin Microsoft əsaslı sistemləri | Microsoft-un məhsuludur, dialekti T-SQL adlanır |
customers (müştərilər) cədvəlinin bütün sütunlarını göstər və sətirləri id-yə görə sırala.
-- show every column of the customers table, sorted by id▸ Gözlənilən nəticə
id | name | city | country | joined_on 1 | Anar Mustafayev | Bakı | Azerbaijan | 2024-01-10 2 | Lalə Əhmədova | Gəncə | Azerbaijan | 2024-03-22 3 | Emre Yılmaz | İstanbul | Türkiye | 2024-05-05 4 | Olga Ivanova | Moscow | Russia | 2024-06-18 5 | John Carter | London | United Kingdom | 2024-08-30 6 | Zəhra Hüseynli | Bakı | Azerbaijan | 2025-02-14 7 | Mehmet Kaya | Ankara | Türkiye | 2025-04-01
enrollments cədvəlindən 3 nömrəli kursa (Mechanics) edilən bütün yazılışları göstər və onları id-yə görə sırala.
SELECT *
FROM enrollments
-- keep only course 3 and sort by id▸ Gözlənilən nəticə
id | student_id | course_id | score | enrolled_on 4 | 2 | 3 | 81 | 2025-09-16 7 | 4 | 3 | 68 | 2025-09-18 12 | 6 | 3 | 77 | 2025-09-20 19 | 11 | 3 | 94 | 2025-09-23
Əsas fikirlər
- Verilənlər bazası nizamlı məlumatlar toplusudur, onu VBİS idarə edir.
- Relyasiya bazasında məlumatlar cədvəllərdə saxlanılır: sətir — bir obyekt, sütun — bir xüsusiyyətdir.
- Əsas açar hər sətri birmənalı müəyyən edir, xarici açar isə başqa cədvəlin sətrinə istinad edir.
- SQL deklarativ dildir: nə istədiyini yazırsan, necə tapmağı VBİS həll edir.
- SQLite, MySQL, PostgreSQL və SQL Server eyni əsas SQL-i başa düşür, fərqlər yalnız detallardadır.
Özünü yoxla
10 sual. Hər düzgün cavab XP qazandırır.