Bloq

SQL
- 1.1 SQL1: SQL-in əhəmiyyəti
- 1.2 SQL2: İstifadə olunan cədvəllər
- 1.3 SQL3: Select əmri – məlumatın oxunması
- 1.4 SQL4: Update əmri – məlumatın yenilənməsi
- 1.5 SQL5: Delete əmri – məlumatı silmək
- 1.6 SQL6: Insert əmri – məlumat əlavə etmək
- 1.7 SQL7: Sum, average, count funksiyaları
- 1.8 SQL8: In və not in şərtləri
- 1.9 SQL9: Join (1-ci hissə)
- 1.10 SQL10: Join (2-ci hissə)
- 1.11 SQL11: like funksiyası vasitəsilə məlumatın axtarışı
- 1.12 SQL12: group by – məlumatın ümumiləşdirilməsi
SQL nədir?
Böyük həcmli məlumatlar ilə işləmək üçün alternativlərdən biri SQL sorğu dilidir. SQL sorğu dilinin istifadə edilməsi üçün məlumatlar hansısa bir bazaya daxil edilməlidir. Hamı tərəfindən istifadə olunabiləcək baza funksiyasını MS Access icra edə bilər. Access Microsoft Office proqram paketinin tərkibində olan məlumat bazası funsiyası daşıyır. Məlumatları Acces-ə daxil edərək SQL vasitəsilə lazımi hesablamaların aparılması və müxtəlif hesabatların hazırlanması mümkündür. SQL-in (structured query language) tərkibində olan əmrlər vasitəsilə bazada olan məlumatları çağırmaq, filter etmək, yenisini əlavə etmək, dəyişmək, silmək mümkündür.
SQL ilə data analitikası kursunda iştirak etməklə siz müasir dövr ən çox tələb olunan bir ixtisasına sahib ola bilərsiniz.
Məlumatlar access-də toplandıqdan sonra onları emal etmək üçün həm access-in tərkibində quraşdırılmış funksiyalardan istifadə etmək həm də SQL sorğu dilindən faydalanmaq olar. SQL sorğu dili həm accessin tərkibində quraşdırılmışdır həm də Oracle şirkəti tərəfindən təqdim olunan SQL Developer vasitəsilə istifadə oluna bilər.
Excel fayllarında olan böyük həcmli eyni struktura malik məlumatları accessdə bir cədvəldə birləşdirmək mümkündür. Məlumat eyni struktura malik olmasa da, ayrı-ayrı cədvəllər şəklində də bir bazaya toplamaq olar. Accessə məlumat aşağıdakı kimi daxil edilir:
SQL – Məlumatların funksiyası
Daxil edilən məlumatlar baza funksiyası daşıyacaq. Bazada olan məlumatlar ilə işləmək üçün isə accessin funksiyası olan query-lərdən istifadə olunacaq. Query design bölməsini seçərək bizə lazım olan cədvəli seçə bilərik. Daha sonra aktiv olan pəncərədə lazımi sütunları əlavə edərək və daxili funksiyalar vasitəsilə əlavə hesablama sütunları yaradaraq yekun hesabat hazırlamaq mümkündür.
Bunun alternativi olan isə query design bölməsinə keçərkən açılan pəncərədən imtina edərək SQL view bölməsini aktivləşdirməkdir. Bu zaman artıq bütün bazaya SQL sorğuları vasitəsilə birbaşa müraciət etmək mümkündür.
SQL ilə accessdə olan məlumatlarla işləmək üçün SQL developerdən də istifadə etmək olar. SQL developer bu linkdən yükləndikdən sonra həmin qovluqdan sqldeveloper faylı açılır. Açılan faylda connection bölməsi aktiv deyilsə viewdan həmin bölmə aktivləşdirilir. Daha sonra new connection seçilərək bu connectiona ad verilir, access bölməsi seçilərək browse edərək baza funksiyası daşıyacaq access fayl seçilir. Yekunda connect düyməsi seçilir və connection bölməsində verilmiş ad görsənir. Bu o deməkdir ki, artıq bazaya qoşulmuşuq.
Təsəvvür edək ki, əlimizdə müəssisənin işçilərinə dair məlumatlardan ibarət cədvəllər var. Bu fayllardan birində işçilərin şəxsi məlumatları, digərində əlaqə vasitələri, birində əmək haqqı məlumatları, digərində iş təcrübəsinə dair məlumatlar, sonuncusunda isə töhmət almış işçilərin adları var. Sonuncu cədvəldə isə həm indi işləyən həm də işdən çıxmış işçilərin adları var.
Bu fayllardan lazımi məlumatları çıxardıb müxtəlif hesabatlar hazırlamaq lazımdır. İlk öncə bu cədvəlləri access-ə daxil edirik. Cədvəlləri bu linkdən əldə edə bilərsiniz.
İşçilərin şəxsi məlumatını əks etdirən cədvələ nəzər yetirərkən, bir işçinin adının düzgün yazılmadığı ortaya çıxdı. Bu zaman bazaya müdaxilə edərək, həmin şəxsin adına düzəliş etmək tələb olunur. Bazada olan məlumatın yenilənməsi üçün aşağıdakı strukturda scriptdən istifadə olunur:
Update “cədvəlin adı”
set “yeniləmək istədiyimiz sütun” = “yeni məlumat”
where “yeniləmək istədiyimiz sətri seçmək üçün lazım olan filter”
Bazada olan 10006 kodlu işçinin adı Daşdəmirov Natiq olduğu halda bazada adı Nadir olaraq görsənir. Düzəliş etmək üçün aşağıdakı scriptdən istifadə edilir:
update ishchi_siyahi
set ad_soyad = N’Daşdəmirov Natiq’
where ad_soyad=N’Daşdəmirov Nadir’
Və ya
update ishchi_siyahi
set ad_soyad = N’Daşdəmirov Natiq’
where id=10006
Aşağıdakı script vasitəsilə məlumatın yenilənməsini yoxlaya bilərik:
select *
from ishchi_siyahi
where id=10006
Bəzən bazada olan hər hansı bir məlumatı silmək lazım olur. Bu zaman aşağıdakı scriptdən istifadə olunur:
where “silmək istədiyimiz sətir üçün olan filter”
Bazada 10031 kodlu işçini silmək üçün aşağıdakı scriptdən istifadə ediləcək:
Delete ishchi_siyahi
where id = 10031
Cədvəldə olan bütün məlumatları silmək üçün aşağıdakı scriptdən istifadə edilir:
Delete ishchi_siyahi
Cədvəlin özünü bazadan silmək üçün isə aşağıdakı Scriptdən istifadə edilir:
Drop ishchi_siyahi
Cədvələ yeni məlumat əlavə etmək üçün aşağıdakı scriptdən istifadə edilir:
Insert into “cədvəlin adı” (“yeni məlumat daxil ediləcək sütunların adı”)
Values (“yeni məlumatlar – sütunların sırası ilə daxil ediləcək məlumatların yerləşmə sırası eyni olmaq şərti ilə”)
Bazada olan ishchi_siyahisi cədvəlinə yeni işçinin məlumatlarını daxil etmək istəsək aşağıdakı scriptdən istifadə olunacaq:
insert into ishchi_siyahi
(id, ad_soyad, cinsiyyet)
values
(‘10031′, N’Nəbiyev Vəli’, N’kişi’)
Bizə aylıq əmək haqqına dair hesabat lazım ola bilər. Bu zaman ishchi_maash cədvəlində olan məlumatlar əsasında lazım olan hesabatı hazırlaya bilərik.
İlkin olaraq əmək haqqının ümumi cəmini tapaq:
Select sum(maash) as ‘Əmək haqqı fondu’
from ishchi_maash
Orta əmək haqqını hesablamaq üçün aşağıdakı scriptdən istifaəde olunur:
Select avg(maash) as ‘Orta əmək haqqı’
from ishchi_maash
Təşkilatda əməkhaqqı 1500 manatdan yuxarı olan işçilərin sayına dair hesabat hazırlamaq üçün isə aşağıdakı scriptdən istifadə olunur:
Select count(id) as ‘İşçi sayı’
from ishchi_maash
where maash>1500
Hesabat tərtib edərkən bir cədvəldə olan məlumatlara digər cədvəldə olan məlumatlar ilə birləşdirilməsi üçün join funksiyasından istifadə edilir. İki cədvəl biri sağda digəri isə solda yerləşir və müvafiq olaraq right join və left join funksiyalarından istifadə olunur. Əsas cədvəl hansıdırsa joinin həmin cədvəlinə uyğun olanı seçilir və digər cədvəldə olan məlumatlar bu cədvələ əlavə edilir. Bunu aşağdakı çoxluqlar üzərində göstərək.
A çoxluğu hal-hazırda işləyən işçiləri, B çoxluğu isə hal-hazırda şirkətdə işləyib-işləməməyindən asılı olamayaraq töhmət almış işçilərin siyahısnı və töhmətin növünü özündə saxlayan cədvəllləri təmsil edir.
Hal-hazırda şirkətdə işləyən və töhmət almış işçilərin siyahısını hazırlamaq lazım olarsa, A çoxluğu ilə B çoxluğunun kəsişməsində olan işçilərin siyahısını əldə etməliyik. Bunun üçün aşağıdakı scriptdən istifadə edilir:
select a.id, a.ad_soyad, b.tohmet
from ishchi_siyahi as a inner join ishchi_tohmet as b on a.ID=b.ID
Nəticə
Hal-hazırda şirkətdə işləyən və töhmət almayan işçilərin siyahısını hazırlamaq lazım olsa, B çoxluğunda olmayan A çoxluğunda olan işçilərin siyahısını əldə etməliyik. Aşağıdakı script vasitəsilə bunu edirik:
select a.id, a.ad_soyad, b.tohmet
from ishchi_siyahi as a left join ishchi_tohmet as b on a.ID=b.ID
where a.id not in (select id from ishchi_tohmet)
Nəticə
İşdən çıxmış və töhmət almış işçilərin siyahısını hazırlamaq üçün isə B çoxluğunda olan və A çoxluğunda olmayan işçilərin siyahısını hazırlamaq lazımdır. Bunun üçün aşağıdakı scriptdən istifadə etmək lazımdır:
select b.id, b.tohmet
from ishchi_siyahi as a right join ishchi_tohmet as b on a.ID=b.ID
where b.id not in (select id from ishchi_siyahi)
Nəticə
Məlumatın bir hissəsi üzrə axtarış vermək üçün like funksiyasından istifadə olunur. Əgər bir işçinin yalnız adını biliriksə, və ya telefon nömrəsinin bir hisssəsini biliriksə o zaman bu funksiya vasitəsilə mümkün bütün variantları bazadan əldə etmək olar.
Like funksiyasında aşağıdakı 2 işarədən istifadə olunur:
% – bu işarə istənilən sayda simvolu ifadə edir (1% – 125 və ya 1745 ifadə edə bilər)
_ – bu işarə isə yalnız bir simvolu ifadə edir (1_ isə yalnız bir ilə başlayan iki rəqəmli ədədləri ifadə edə bilər)
Tural adlı əməkdaşın soyadını axtarmaq istəsək aşağıdakı scriptdən istifadə edirik:
select * from ishchi_siyahi
where ad_soyad like ‘%Tural’
Nəticə
Mobil nömrəsinin tərkibində 136 olan nömrələri axtarmaq istəsək aşağıdakı scriptdən istifadə edirik:
select * from ishchi_tel
where mob_tel like ‘%136%’
Nəticə
Mobil nömrəsinin ilk 3 rəqəmi 136 son iki rəqəmi isə 78 olan nömrəni axtarırıqsa aşağıdakı scriptdən istifadə edirik:
select * from ishchi_tel
where mob_tel like ‘%136__78’
Nəticə
Hər hansı bir kateqoriya üzrə məlumatın ümumiləşdirilməsinə ehtiyac duyularsa bu zaman group by funksiyasından istifadə edilir.
Əmək haqqının ümumi məbləğini departamentlər üzrə tapmaq üçün aşağıdakı scriptdən istifadə edilir:
Select departament,sum(maash) as maash
from ishchi_maash
group by departament
Nəticə
Burda group deməklə,biz əmək haqqını cəmləyərək hər bir departament üzrə ayrı-ayrı cəmləməsini təmin etdik.
Həm departament həm vəzifələr üzrə əmək haqqını tapmaq üçün isə aşağıdakı formada yazırıq scripti:
Select departament, vezife, sum(maash) as maash
from ishchi_maash
group by departament, vezife
Nəticə
Departamentlər üzrə orta əmək haqqını hesablamaq üçün isə aşağıdakı scriptdən istifadə olunur:
Select departament,avg(maash) as maash
from ishchi_maash
group by departament
Nəticə
Əməkhaqqı 1000 manatdan yuxarı olan işçilərin sayı departamentlər üzrə lazım olduqda isə script aşağıdakı formada olur:
Select departament, count(id) as say
from ishchi_maash
where maash>1000
group by departament
Nəticə