Proqramlaşdırma

SQL

SQL nədir?

SQL əlaqəli verilənlər bazasındakı məlumatı sorğulamaq və dəyişdirmək üçün istifadə olunan dildir. Cədvəl sətir və sütunlardan ibarət olur. SQL həmin cədvəldən sətir seçir, yeni sətir əlavə edir, mövcud sətri yeniləyir və ya silir.

SQL Python və ya JavaScript kimi ümumi proqramlaşdırma dili deyil. Onun işi proqramın pəncərəsini qurmaq deyil, saxlanmış məlumatla danışmaqdır. Sayt və tətbiq məlumatı çox vaxt bazada durur, proqram isə ona SQL ilə müraciət edir.

PostgreSQL, MySQL, SQLite və SQL Server kimi sistemlər SQL qəbul edir. Əsas əmrlər oxşardır, amma hər sistemin öz kiçik fərqləri ola bilər. Buna görə bir sistemdə işləyən sorğu digərində eyni hərflə yazılmaya bilər.

SQL nə üçün istifadə olunur?

SQL məlumatın saxlandığı yerdə istifadə olunur:

  • Lazım olan sətirləri seçmək
  • Yeni qeyd əlavə etmək
  • Mövcud qeydi dəyişmək
  • Artıq lazım olmayan qeydi silmək
  • Şərtə görə saymaq və qruplaşdırmaq
  • Bir neçə cədvəldəki uyğun sətirləri birləşdirmək

Məsələn, bir tətbiq istifadəçinin yalnız öz qeydlərini göstərmək istəyəndə bu şərt adətən SQL sorğusunda yazılır. Şərt səhvdirsə, ya heç nə çıxmaz, ya da lazım olandan çox sətir çıxar.

SQL ilə nələr etmək olar?

SQL ilə cədvəl üzərində əsas işləri görmək olar:

  • Bütün və ya bəzi sütunları oxumaq
  • Bir şərtə uyğun sətirləri tapmaq
  • Yeni sətir yazmaq
  • Bir sütunun dəyərini dəyişmək
  • Seçilmiş sətiri silmək

Sadə nümunə

SELECT name
FROM books
WHERE year = 2026;

Bu sorğu books cədvəlindən yalnız 2026-cı ilə aid adları seçir. Cədvəl və sütun əvvəlcədən mövcud olmalıdır.

SQL öyrənmək çətindirmi?

İlk SELECT sorğusunu oxumaq çətin deyil. Çətinlik şərt, bir neçə cədvəl və səhv silmə əmri ilə başlayır. Bir səhv WHERE olmadan yazılmış DELETE cədvəldəki sətirlərin hamısını silə bilər.

Başlanğıc üçün bu sıra faydalıdır:

  1. Cədvəl, sətir və sütun nədir
  2. SELECT və FROM
  3. WHERE ilə şərt
  4. INSERT ilə yeni sətir
  5. UPDATE ilə dəyişiklik
  6. DELETE-i əvvəl seçilmiş sətirdə sınamaq
  7. Kiçik bir cədvəl üzərində eyni sorğunu özün dəyişmək

Əvvəlcə real layihənin bazasına yox, boş və kiçik bir cədvələ sorğu yazmaq daha təhlükəsizdir.

Üstünlükləri və çatışmazlıqları

Üstünlükləri

  • Lazım olan sətiri bütün cədvəli əl ilə gəzmədən seçir
  • Əsas əmrlər bir neçə verilənlər bazasında oxşardır
  • Şərt, sıra və sayma eyni sorğuda yazıla bilir
  • Proqram kodu məlumatı öz içində saxlamağa məcbur qalmır
  • Öyrənmək üçün pulsuz verilənlər bazası sistemləri var

Çatışmazlıqları

  • Səhifə, düymə və ya oyun məntiqi yazmır
  • Sistemlərin yazımı hər yerdə eyni deyil
  • Şərtsiz yeniləmə və silmə çox sətiri dəyişə bilər
  • İstifadəçinin yazdığı mətni birbaşa sorğunun içinə yapışdırmaq təhlükəlidir

Sintaksis və əsas anlayışlar

Sorğu adətən nə ediləcəyini deyən əmrlə başlayır. SELECT oxuyur, INSERT əlavə edir, UPDATE dəyişir, DELETE silir. Cədvəlin adı FROM və ya INTO-dan sonra yazılır.

Oxumaq

SELECT name, year
FROM books
WHERE year >= 2020;

Əlavə etmək

INSERT INTO books (name, year)
VALUES ('Nümunə kitab', 2026);

Dəyişmək

UPDATE books
SET year = 2025
WHERE name = 'Nümunə kitab';

WHERE hissəsi hansı sətirlərə toxunulacağını göstərir. Onu UPDATE və DELETE-də atmaq, şərtə uyğun bir sətir əvəzinə cədvəlin qalan sətirlərini də dəyişə bilər.

Kod nümunələri

Bir şərtə uyğun sətirlər

SELECT title
FROM notes
WHERE lang = 'az';

Saymaq

SELECT COUNT(*)
FROM notes
WHERE lang = 'az';

Yalnız seçilmiş sətiri silmək

DELETE FROM notes
WHERE id = 15;

İşlək nümunələr

Yuxarıdakı qısa sorğular bir şeyi oxuyur. Bu dördü kiçik cədvəl qurur, sonra ondan istifadə edir. Boş bazada sırayla işə sal. SQLite bəs edir. Birincisi cədvəli qurur. İkincisi iki sətir yazır. Üçüncüsü birini saxlayır. Dördüncüsü bir rəqəmi dəyişir.

Cədvəli qurmaq

CREATE TABLE students adlı boş cədvəl yaradır. id tam ədəddir və əsas açardır, ona görə iki sətir eyni id-ni bölüşə bilməz. name mətndir və NOT NULL-dur, adsız sətir qəbul olunmur. score tam ədəddir və boş qala bilər. Bu sətir Aysel-i və ya Murad-ı əlavə etmir. Yalnız sütunları qurur.

CREATE TABLE students (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  score INTEGER
);

Bundan sonra cədvəl var və içi boşdur. İkinci dəfə işə salsan, baza cədvəl artıq var deyir.

İki tələbə əlavə etmək

INSERT sətir yazır. Mötərizədəki adlar sütunlardır. Qiymətlər eyni sırayla gəlir: id, name, score. Aysel-in balı 85-dir. Murad-ın balı 40-dır. Mətn dırnaqdadır. Rəqəm dırnaqsızdır. id 1-i yenidən əlavə etsən, əsas açar ikinci nüsxəni dayandırır.

INSERT INTO students (id, name, score) VALUES
  (1, 'Aysel', 85),
  (2, 'Murad', 40);

Cədvəldə artıq iki sətir var. SELECT ilə soruşmasan, heç nə yazılmır.

Yalnız keçən balı saxlamaq

SELECT sütun seçir. WHERE şərti keçməyən sətri atır. 85 qalır, 40 qalmır, çünki 40, 50-dən kiçikdir. ORDER BY score DESC böyük balı yuxarı qoyur. DESC azalan deməkdir. WHERE olmasa, hər iki tələbəni görürsən. ORDER BY olmasa, baza onları istənilən sırada qaytara bilər.

SELECT name, score
FROM students
WHERE score >= 50
ORDER BY score DESC;

Bir sətir qayıdır: Aysel, 85. Murad cədvəldə durur. Bu sorğu onu yalnız gizlətdi.

Bir balı dəyişmək

UPDATE olan sütuna yeni qiymət yazır. SET yeni balın 70 olduğunu deyir. WHERE yalnız adı Murad olan sətirin dəyişəcəyini deyir. Altındakı SELECT cədvəli yenidən oxuyur, iki sətiri də görürsən. WHERE-i unutsan, hər tələbənin balı 70 olar. Adi qəza budur.

UPDATE students
SET score = 70
WHERE name = 'Murad';

SELECT name, score
FROM students;

Murad artıq 70-dir. Aysel 85 qalır. Köhnə 40 gedib, çünki UPDATE onun yerinə yenisini yazır.

Tez-tez verilən suallar

SQL nədir?

SQL əlaqəli verilənlər bazasındakı məlumatı oxumaq və dəyişdirmək üçün istifadə olunan sorğu dilidir.

SQL proqramlaşdırma dilidirmi?

O, məlumat üçün sorğu dilidir. Python kimi proqramın bütün hissəsini yazmaq üçün istifadə olunmur.

SQL pulsuzdur?

Dilin özünü öyrənmək pulsuzdur. PostgreSQL və SQLite kimi sistemləri də pulsuz qurmaq olar. Bəzi server məhsullarının ayrıca şərtləri ola bilər.

SQL və MySQL eynidirmi?

Xeyr. SQL dildir. MySQL isə bu dili qəbul edən verilənlər bazası sistemlərindən biridir.

Excel ilə SQL eynidirmi?

Xeyr. Cədvəl fikir olaraq yaxındır, amma SQL sorğu ilə işləyir və verilənlər bazasında saxlanan sətirlər üçündür.

Bir səhv sorğu məlumatı silə bilərmi?

Bəli. WHERE olmadan yazılmış DELETE və ya UPDATE gözləniləndən çox sətirə toxuna bilər. Əvvəl kiçik cədvəldə yoxlamaq lazımdır.

İstifadəçinin yazdığı mətni sorğuya birbaşa əlavə etmək olarmı?

Olmaz. Mətni sorğunun içinə yapışdırmaq əvəzinə, verilənlər bazasının qəbul etdiyi ayrıca parametrdən istifadə etmək lazımdır.

Bu mövzunun aləti