Dərsdə sql sorğu dili nəzərdən keçiriləcək: sql dilinin sintaksisinin əsasları, işlədilməsi phpMyAdmin və sql sorğularını onlayn yoxlamaq üçün bir xidmət
Verilənlər bazası- saxlama, giriş, ilkin emal və məlumat axtarışını təmin edən mərkəzləşdirilmiş məlumat saxlama.
Verilənlər bazaları bölünür:
SQL (Strukturlaşdırılmış sorğu dili)- strukturlaşdırılmış sorğu dilidir (ingilis dilindən tərcümə olunur). Dil əlaqəli (cədvəlli) verilənlər bazası ilə işləməyə yönəlib. Dil sadədir və əslində çoxlu məlumatlarla (verilənlər bazası) işləyə, onlarda olan məlumatları silə, əlavə edə, dəyişdirə və rahat bir axtarış edə biləcəyiniz əmrlərdən (təfsir) ibarətdir.
SQL kodu ilə işləmək üçün verilənlər bazası ilə işləmə funksiyasını təmin edən bir verilənlər bazası idarəetmə sisteminə (DBMS) ehtiyacınız var.
Verilənlər bazası idarəetmə sistemi(DBMS) - bir çox istifadəçi tərəfindən verilənlər bazası yaratmaq, saxlamaq və paylaşmaq üçün hazırlanmış dil və proqram vasitələri toplusu.
Ümumiyyətlə, məşq üçün istifadə olunur Microsoft Access DBMS, lakin veb sahəsində daha çox yayılmış bir sistemdən istifadə edəcəyik -. Rahatlıq üçün, iş prinsipi aşağıda təsvir olunan sql sorğularını qurmaq üçün bir veb interfeysi və ya onlayn xidmətdən istifadə edəcək.
Vacib:Əlaqəli və ya cədvəlli verilənlər bazası ilə işləyərkən cədvəl satırları çağırılacaq qeydlər və sütunlardır marjlar.
Hər bir sütunun öz məlumat növü olmalıdır, yəni. müəyyən bir növ məlumat daxil etmək üçün hazırlanmalıdır. bu kursdakı dərslərdən birində təsvir edilmişdir.
SQL dili aşağıdakı komponentlərdən ibarətdir:
1.
Məlumat manipulyasiya dili 4 əsas əmrdən ibarətdir:
Məlumat Tərifi Dili verilənlər bazasının və onun tərkib hissələrinin - cədvəllərin, indekslərin, görünüşlərin (virtual cədvəllər), eləcə də tətiklərin və saxlanılan prosedurların strukturunu yaratmaq və dəyişdirmək üçün istifadə olunur.
Yalnız bir neçəsini nəzərdən keçirəcəyik əsas dil əmrləri... Onlar:
Məlumat İdarəetmə Dili giriş hüquqlarını idarə etmək üçün istifadə olunurçox istifadəçi mühitində məlumat və prosedurların icrası.
Əvvəlcə ilk iki nöqtəni tamamlamalısınız.
Sonra:
Xidmətdən istifadə edərək sql sorğularının onlayn yoxlanılması mümkündür.
İşi təşkil etməyin ən asan yolu aşağıdakı addımlardan ibarətdir:
Başqa bir nümunə:
İndi bəzi məqamları daha ətraflı nəzərdən keçirəcəyik.
Cədvəllərin yaradılması:
Misal: bir anda üç masa yaratmaq (müəllimlər, dərslər və kurslar); hər cədvələ birdən çox dəyər əlavə edin.
* sintaksisi ilə tanış olmayanlar üçün - bütün kodu kopyalayın və xidmətin sol pəncərəsinə yapışdırın
* SQL -də cədvəllərin yaradılmasına dair dərs
/ * müəllimlər * / TABLO YARAT `müəllimlər` (` id` INT (11) NULL, `name` VARCHAR (25) NOT NULL,` code` INT (11), `zarplata` INT (11),` premia` INT (11), PRIMARY KEY (`id`)); Müəllimlərin dəyərlərini daxil edin (1, "İvanov", 1, 10000, 500), (2, "Petrov", 1, 15000, 1000), (3, "Sidorov", 1, 14000, 800), (4, " Bobrova ", 1, 11000, 800); / * dərslər * / TABLO YARAT `dərsləri` (` id` INT (11) NULL, `tid` INT (11),` course` VARCHAR (25), `date` VARCHAR (25), PRIMARY KEY (` id `)); INSERT INTO dərslərinə VALUES (1, 1, "php", "2015-05-04"), (2, 1, "xml", "2016-13-12"); / * kurslar * / TABLO CREATE `kursları` (` id` INT (11) NOT NULL, `tid` INT (11),` title` VARCHAR (25), `length` INT (11), PRIMARY KEY (` id `)); INSERT INTO kurslarına VALUES (1, 1, "php", 54), (2, 1, "xml", 72), (3, 2, "sql", 25); |
/ * müəllimlər * / TABLO YARAT `müəllimlər` (` id` int (11) NOT NULL, `name` varchar (25) NOT NULL,` code` int (11), `zarplata` int (11),` premia` int (11), PRIMARY KEY (`id`)); müəllimlərin dəyərlərini daxil edin (1, "İvanov", 1.10000.500), (2, "Petrov", 1.15000.1000), (3, "Sidorov", 1.14000.800), (4 , "Bobrov", 1.11000.800); / * dərslər * / TABLO YARAT `dərsləri` (` id` int (11) NOT NULL, `tid` int (11),` course` varchar (25), `date` varchar (25), PRIMARY KEY (` id `)); dərs dəyərlərini daxil edin (1,1, "php", "2015-05-04"), (2,1, "xml", "2016-13-12"); / * kurslar * / TABLO CREATE `kursları` (` id` int (11) NOT NULL, `tid` int (11),` title` varchar (25), `length` int (11), PRIMARY KEY (` id `)); kurslara dəyərləri daxil edin (1,1, "php", 54), (2,1, "xml", 72), (3,2, "sql", 25);
Nəticədə, məlumatları olan cədvəllər alırıq:
Sorğu göndərilməsi:
Xidmət qabiliyyətini yoxlamaq üçün sorğu kodunu sağ pəncərəyə əlavə edin.
Misal: Müəllimlər cədvəlindən soyadı olan müəllim üçün bütün məlumatları seçmək üçün bir sorğu istifadə edin İvanov
Əlavə SQL dərslərində eyni sxem istifadə ediləcək, buna görə də sxemi kopyalayıb xidmətin sol pəncərəsinə yapışdırmaq lazımdır.
Verilənlər bazası sxeminin onlayn görüntülənməsi üçün https://dbdesigner.net/ xidmətindən istifadə edə bilərsiniz:
Proqramlaşdırma aktivdir T- SQL
T-SQL Sintaksisi və Konvensiyaları
İdentifikatorların formalaşması qaydaları
SQL Serverdəki bütün obyektlərin adları (identifikatorları) var. Nümunələr cədvəllər, görünüşlər, saxlanılan prosedurlar və s. Tanımlayıcılar hərflər, _ @ $ # simvolları və rəqəmlər kimi 128 simvola qədər ola bilər.
Birinci xarakter həmişə əlifba sırası ilə yazılmalıdır. Dəyişənlər və müvəqqəti cədvəllər üçün xüsusi adlandırma sxemləri istifadə olunur. Obyektin adı boşluq ola bilməz və istifadə olunan haldan asılı olmayaraq SQL Server tərəfindən ayrılmış açar sözlə uyğun gələ bilməz. Identifikatorları kvadrat mötərizəyə əlavə edərək obyekt adlarında qeyri -qanuni simvollardan istifadə edə bilərsiniz.
Təlimatların tamamlanması
ANSI SQL hər ifadənin sonunda nöqtəli vergül tələb edir. Ancaq T-SQL-də proqramlaşdırma zamanı nöqtəli vergül isteğe bağlıdır.
Şərhlər (1)
T-SQL iki şərh üslubunu qəbul edir: ANCI və C. Birincisi iki tire ilə başlayır və sətrin sonunda bitir:
Bu ANSI tərzi bir sətir şərhidir
Ayrıca, ANSI tərzi şərhləri bir bəyanat satırının sonuna əlavə edilə bilər:
Şəhər Adı seçin - alınan sütunlar
Şəhərdən - mənbə cədvəli
WHERE IdCity = 1; - xətt məhdudiyyəti
SQL redaktoru bütün seçilmiş sətirlərə şərh tətbiq edə və silə bilər. Bunu etmək üçün menyudan uyğun əmrləri seçin Redaktə edin və ya alətlər çubuğunda.
C üslubunda şərhlər irəli işarədən və ulduzdan (/ *) başlayır və tərs qaydada eyni simvollarla bitir. Bu tip şərhlər, başlıqlar və ya böyük test sorğuları kimi sətirlər bloklarını şərh etmək üçün ən yaxşı şəkildə istifadə olunur.
çox xətti
Şərh
C tipli şərhlərin əsas üstünlüklərindən biri, şərh etmədən də çox sətirli sorğular aparmağınızdır.
T-SQL paketləri
Sorğu tək bir T-SQL ifadəsidir və bir toplu bunların toplusudur. Paket təlimatlarının bütün ardıcıllığı müştəri tətbiqlərindən bir ayrılmaz vahid olaraq serverə göndərilir.
SQL Server bütün paketi bir iş vahidi kimi qəbul edir. Ən azı bir təlimatda bir səhvin olması bütün paketi icra etmənin qeyri -mümkünlüyünə səbəb olacaq. Eyni zamanda, təhlil obyektlərin və sxemlərin adlarını yoxlamır, çünki ifadənin icrası zamanı sxem özü dəyişə bilər.
SQL skript faylı və sorğu analizatoru pəncərəsi birdən çox paketi ehtiva edə bilər. Bu vəziyyətdə, bütün paketlər terminator açar sözlərini paylaşır. Varsayılan olaraq, bu açar söz GO -dır və sətirdə yeganə olmalıdır. Bütün digər simvollar (hətta şərhlər) paket ayırıcısını inkar edir.
T-SQL ayıklama
SQL redaktoru bir səhvlə qarşılaşdıqda, xətanın xarakterini və toplu işdəki xətt nömrəsini göstərir. Bir xətanı iki dəfə tıklayaraq dərhal müvafiq sətrə keçə bilərsiniz.
SQL Server 2005 Management Studio yardım proqramı T-SQL ayıklayıcısını ehtiva etmir-Visual Studio paketinə daxildir.
SQL Server, paketləri ayıklamanıza kömək edəcək bir neçə əmr təqdim edir. Xüsusilə, PRINT əmri bir nəticə verilənlər bazası yaratmadan bir mesaj göndərir. PRINT əmri paketin gedişatını izləmək üçün istifadə edilə bilər. Sorgu Analizatoru ızgara rejimində olduqda, aşağıdakı dəstəni işlədin:
Şəhər Adı seçin
Şəhərdən
WHERE IdCity = 1;
YAZ "Nəzarət nöqtəsi";
Nəticədə əldə edilən verilənlər bazası ızgarada göstəriləcək və bir sıra olacaq. Eyni zamanda Mesajlar sekmesinde aşağıdakı nəticə göstəriləcək:
(işlənmiş sətirlər: 1)
Nəzarət Nöqtəsi
Dəyişənlər
T-SQL dəyişənləri aşağıdakı sintaksisə malik olan DECLARE əmri ilə yaradılır:
DECLARE @ Variable_Name Data_type [,
@ Variable_Name Data_type, ...]
Bütün yerli dəyişən adları @ilə başlamalıdır. Məsələn, 16 Unicode simvolu saxlayan yerli UStr dəyişənini elan etmək üçün aşağıdakı ifadəni istifadə edə bilərsiniz:
Bəyan edin @UStr varchar (16)
Dəyişənlər üçün istifadə olunan məlumat növləri cədvəllərdə olanlarla eynidir. Bir DECLARE əmrində vergüllə ayrılmış bir neçə dəyişən verilə bilər. Xüsusilə, aşağıdakı nümunə iki tam ədəd dəyişənini yaradır a və b:
BİLDİRMƏK
@a int,
@b int
Dəyişənlər cari paket üçün yalnız əhatə olunur (yəni onların ömrü). Varsayılan olaraq, yeni yaradılan dəyişənlər null NULL dəyərləri ehtiva edir və ifadələrə daxil edilməzdən əvvəl işə salınmalıdır.
Dəyişən Dəyərlərin Ayarlanması
Hal -hazırda SQL bir dəyişənin dəyərini təyin etmək üçün iki yol təqdim edir - bu məqsədlə SELECT və ya SET ifadələrindən istifadə edə bilərsiniz. SELECT ifadəsi SELECT ifadəsində göstərilən cədvəldən orijinal təyin olunan dəyəri əldə etməsi istisna olmaqla, funksionallıq baxımından bu ifadələr demək olar ki, eyni şəkildə işləyir.
SET ifadəsi, dəyişənlərin dəyərlərini prosedur dillərində daha çox yayılmış bir formada təyin etmək üçün istifadə olunur. Bu operatorun istifadəsinin tipik nümunələrinə aşağıdakılar daxildir:
SET @a = 1;
SET @b = @a * 1.5
Qeyd edək ki, bu operatorların hamısı açıq dəyərlər və ya digər dəyişənlərdən istifadə edərək tapşırıqları birbaşa yerinə yetirirlər. Bir sorğudan əldə edilən dəyişənə dəyər təyin etmək üçün SET ifadəsindən istifadə edə bilməzsiniz; sorğu ayrı -ayrılıqda icra edilməlidir və yalnız bundan sonra nəticə SET ifadəsi ilə təyin edilə bilər. Məsələn, belə bir ifadəni yerinə yetirmək cəhdi bir səhv yaradır:
BİLDİR @c int
SET @c = COUNT (*) Şəhərdən
SEÇ @c
və aşağıdakı ifadə olduqca uğur qazanır:
BİLDİR @c int
SET @c = (Şəhərdən Say (*) SEÇ)
SEÇ @c
SELECT ifadəsi, dəyişkəndə saxlanılacaq məlumatın mənbəyi sorğudan olduqda, dəyişənlərə dəyər təyin etmək üçün istifadə olunur. Məsələn, yuxarıdakı kodda edilən hərəkətlər daha çox SELECT ifadəsi ilə həyata keçirilir:
BİLDİR @c int
SEÇ @C = COUNT (*) Şəhərdən
SEÇ @c
Qeyd edək ki, bu kod bir az daha aydındır (xüsusən eyni şeyi etsə də daha yığcamdır).
Beləliklə, hər iki operatorun istifadəsinə dair aşağıdakı ümumi qəbul edilmiş müqaviləni tərtib etmək mümkündür.
SET ifadəsi bir dəyişənə sadə bir tapşırıq yerinə yetirilməli olduqda istifadə olunur, yəni. təyin edilmiş dəyər artıq müəyyən bir dəyər şəklində və ya başqa bir dəyişən şəklində açıq şəkildə təyin edilmişdirsə.
SQL Sorğularında Dəyişənlərdən istifadə
T-SQL dilinin faydalı xüsusiyyətlərindən biri, dəyişənlərin proqram koduna dəyişənləri daxil edən kompleks dinamik sətirlər yaratmağa ehtiyac olmadan sorğularda istifadə oluna bilməsidir. Dinamik SQL mövcud olmağa davam edir, ancaq bir dəyər bir dəyişəndən istifadə etməklə daha asan dəyişdirilə bilər.
Bir sorğuda bir ifadənin harada istifadə edilə biləcəyi bir dəyişən də istifadə edilə bilər. Aşağıdakı nümunə, WHERE cümləsində bir dəyişənin istifadəsini nümayiş etdirir:
DECLARE @IdProd int;
SET @IdProd = 1;
SEÇİN
Məhsuldan
Harada IdProd = @IdProd;
Qlobal sistem dəyişənləri
SQL Server, sistem tərəfindən müəyyən edilən və saxlanılan otuzdan çox qlobal, parametrsiz dəyişənə malikdir. Bütün qlobal dəyişənlər iki @ simvolu ilə prefiks olunur. Aşağıdakı nümunədə olduğu kimi hər hansı birinin dəyərini sadə bir SELECT sorğusu ilə əldə edə bilərsiniz:
@@ BAĞLANTILARI SEÇİN
Proqram başladıqdan sonra SQL Server -ə qoşulma sayını əldə etmək üçün @@ CONNECTIONS qlobal dəyişənindən istifadə edir.
Ən çox istifadə olunan sistem dəyişənlərindən bəziləri bunlardır:
! Qeyd edək ki, SQL Server 2000 -dən bəri qlobal dəyişənlərə funksiya deyilir. Qlobal istifadəçilərin adı, bu cür dəyişənlərin əhatə dairəsinin yerli dəyişənlərdən daha geniş olduğunu göstərir. Məlumatların paketə daxil olub -olmamasından asılı olmayaraq saxlama qabiliyyəti çox vaxt səhvən qlobal dəyişənlərə aid edilirdi ki, bu da təbii ki, reallığa uyğun gəlmirdi.
Komanda axını nəzarət. Proqram quruluşları
T-SQL dili, proqramın icra axınını idarə etmək üçün klassik prosedur vasitələrinin əksəriyyətini təmin edir. şərti tikinti və döngələr.
OperatorƏGƏR. ... ... BAŞQA
IF bəyanatları. ... .ELSE, T-SQL-də hər hansı digər proqramlaşdırma dilində olduğu kimi hərəkət edir. Bu operator üçün ümumi sintaksis aşağıdakı kimidir:
IF Boolean ifadəsi
SQL ifadəsi I BAŞLAYIR SQL ifadələrinin bloku END
SQL ifadəsi | SON Bəyanatlarının SQL Blokuna Başlayın]
Demək olar ki, hər hansı bir ifadə məntiqi bir ifadə olaraq təyin edilə bilər, nəticəsi bir boolean dəyərə qiymətləndirilir.
Nəzərə almaq lazımdır ki, yalnız IF ifadəsini dərhal izləyən (ona ən yaxın olan) bəyanat şərtlə yerinə yetirilmiş sayılır. Bir operator əvəzinə, BEGIN ... END tikintisindən istifadə edərək bir kod blokuna birləşdirərək bir neçə operatorun yerinə yetirilməsini təmin edə bilərsiniz.
Aşağıdakı nümunədə, IF şərti yerinə yetirilmir, bu da aşağıdakı ifadənin yerinə yetirilməsinə mane olur.
IF 1 = 0 olarsa
"Birinci sətir" yazdırın
"İkinci sətir" yazdırın
İsteğe bağlı ELSE əmri, IF şərti yerinə yetirilmədiyi təqdirdə icra ediləcək bir ifadəni təyin etməyə imkan verir. IF kimi, bir ELSE ifadəsi də BEGIN ... END arasındakı dərhal aşağıdakı əmr və ya kod blokunu idarə edir.
IF ifadəsi məhdud görünsə də, şərt bəndinə WHERE maddəsi kimi güclü xüsusiyyətlər daxil ola bilər. Xüsusilə, bunlar IF EXISTS () ifadələridir.
IF EXISTS () ifadəsi, SELECT ifadəsi ilə qaytarılmış hər hansı bir sətrin mövcudluğunu şərt olaraq istifadə edir. Hər hansı bir satır axtarıldığından SELECT ifadəsindəki sütunların siyahısı ulduzla əvəz edilə bilər. Satırların ümumi sayını saymağa ehtiyac olmadığı üçün bu üsul @@ ROWCOUNT> 0 şərtini yoxlamaqdan daha sürətlidir. Ən az bir sıra IF EXISTS () şərtini təmin edən kimi sorğu icraata davam edə bilər.
Aşağıdakı nümunə, IF EXISTS ifadəsindən istifadə edərək müştəri kodunun 1 verilənlər bazasından silməzdən əvvəl hər hansı bir sifarişinin olub olmadığını yoxlamaq üçün istifadə edir. Bu müştəri üçün ən azı bir sifariş haqqında məlumat varsa, silinmir.
MÜVƏQQƏT OLSA (IdCust = 1 NERƏDƏN SEÇİN *)
YAZ "Verilənlər bazasında onunla əlaqəli qeydlər olduğu üçün müştərini silmək mümkün deyil"
BAŞQA
Harada IdCust = 1
YAZ "Silinmə uğurla başa çatdı"
OperatorlarBİRDƏ, BREAK vəDavam et
SQL -dəki WHILE maddəsi, bir proqramçının ümumiyyətlə işləməli olduğu digər dillərdə olduğu kimi işləyir. Əslində, bu ifadədə, hər bir keçid başlamazdan əvvəl müəyyən bir şərt yoxlanılır. Növbəti keçiddən əvvəl, vəziyyətin yoxlanılması TRUE dəyərlə nəticələnərsə, döngə çevrilir, əks halda ifadənin icrası dayandırılır.
WHILE ifadəsi aşağıdakı sintaksisə malikdir:
BÜTÜN Boolean ifadə
SQL ifadəsi I.
SQL ifadələrinin bloku
Əlbəttə ki, bir döngədə yalnız bir ifadənin yerinə yetirilməsini təmin etmək üçün WHILE ifadəsini istifadə edə bilərsiniz (normal olaraq IF ifadəsini necə istifadə etdiyinizə bənzər), amma praktikada BEGIN blokunun izləmədiyi WHILE qurur. ... .END tam operator formatına uyğundur.
BREAK ifadəsi, döngənin sonuna keçidin yerinə yetirilməsini və şərti ifadənin yenidən yoxlanmasını gözləmədən dərhal döngədən çıxmağa imkan verir.
CONTINUE ifadəsi, döngənin tək bir təkrarlanmasını kəsməyə imkan verir. CONTINUE ifadəsinin hərəkətini qısaca təsvir edə bilərsiniz ki, WHILE döngəsinin əvvəlinə keçsin. CONTINUE operatoru harada yerləşməsindən asılı olmayaraq döngədə tapılan kimi, döngənin əvvəlinə keçərək şərti ifadəni yenidən qiymətləndirir (və bu ifadənin dəyəri artıq DOĞRU deyilsə, döngə çıxdı).
Aşağıdakı qısa skript, bir döngə yaratmaq üçün WHILE bəndinin istifadəsini nümayiş etdirir:
DECLARE @Temp int;
SET @Temp = 0;
İLƏ @Tem< 3
BAŞLAYIN
YAZDIR @Temp;
SET @Temp = @Temp + 1;
Burada, döngədə @Temp tamsayı dəyişəni 0 -dan 3 -ə qədər artırılır və hər bir təkrarlama zamanı ekranda dəyəri göstərilir.
OperatorQAYIT
RETURN ifadəsi bir paketin icrasını dayandırmaq üçün istifadə olunur və buna görə də saxlanılan prosedur və tətik (növbəti laboratoriyada əhatə olunur).
SQL dili verilənlər bazasından məlumat almaq üçün istifadə olunur. SQL İngilis dilinə çox bənzəyən, lakin verilənlər bazası idarəetmə proqramları üçün nəzərdə tutulmuş bir proqramlaşdırma dilidir. SQL Access -də hər bir sorğuda istifadə olunur.
SQL -in necə işlədiyini başa düşmək daha dəqiq sorğular yaratmağa kömək edir və səhv nəticələr verən sorğuları düzəltməyi asanlaşdırır.
Bu məqalə Access üçün SQL haqqında bir sıra məqalələrin bir hissəsidir. Məlumat əldə etmək üçün SQL -dən istifadənin əsaslarını təsvir edir və SQL sintaksisinə nümunələr verir.
SQL, faktlar və aralarındakı əlaqələr dəsti ilə işləmək üçün bir proqramlaşdırma dilidir. Microsoft Office Access kimi əlaqəli verilənlər bazası idarəetmə proqramları məlumatları idarə etmək üçün SQL -dən istifadə edir. Bir çox proqramlaşdırma dilindən fərqli olaraq, SQL yeni başlayanlar üçün də oxunaqlı və başa düşüləndir. Bir çox proqramlaşdırma dili kimi, SQL də ISO və ANSI kimi standart komitələri tərəfindən tanınan beynəlxalq bir standartdır.
Verilənlər suallara cavab vermək üçün SQL -də təsvir edilmişdir. SQL istifadə edərkən düzgün sintaksisdən istifadə edilməlidir. Sintaksis, bir dilin elementlərini düzgün birləşdirməyə imkan verən qaydalar toplusudur. SQL sintaksisi ingilis sintaksisinə əsaslanır və bir çox elementləri Visual Basic for Applications (VBA) sintaksisi ilə bölüşür.
Məsələn, Mary adlı kontaktların soyadlarının siyahısını alan sadə bir SQL ifadəsi belə görünə bilər:
Soyadın adını SEÇİN
Əlaqələrdən
WHERE First_Name = "Məryəm";
Qeyd: SQL dili yalnız məlumatlar üzərində əməliyyatlar aparmaq üçün deyil, həm də cədvəllər kimi verilənlər bazası obyektlərinin quruluşunu yaratmaq və dəyişdirmək üçün istifadə olunur. Verilənlər bazası obyektlərini yaratmaq və dəyişdirmək üçün istifadə olunan SQL hissəsinə DDL deyilir. DDL bu məqalədə əhatə olunmur. Daha çox məlumat üçün, Məlumat Tərifi Sorğusundan istifadə edərək Cədvəllər və ya İndekslər Yaratmaq və Dəyişdirmək məqaləsinə baxın.
SELECT ifadəsi SQL -də bir verilənlər bazasını təsvir etmək üçün istifadə olunur. Verilənlər bazasından alınacaq məlumatların tam təsvirini, o cümlədən:
məlumatları ehtiva edən cədvəllər;
müxtəlif mənbələrdəki məlumatlar arasındakı əlaqələr;
məlumatların seçildiyi sahələr və ya hesablamalar;
sorğu nəticəsinə daxil olan məlumatlara uyğun gəlməli olan seçim şərtləri;
çeşidləmə ehtiyacı və üsulu.
SQL ifadəsi bənd deyilən bir neçə hissədən ibarətdir. SQL ifadəsindəki hər bir bəndin fərqli bir məqsədi var. Bəzi təkliflər tələb olunur. Aşağıdakı cədvəldə ən çox istifadə olunan SQL cümlələri verilmişdir.
SQL maddəsi | Təsvir | Məcburi |
---|---|---|
İstədiyiniz məlumatları ehtiva edən sahələri təyin edir. |
||
SELECT bəndində göstərilən sahələri ehtiva edən cədvəlləri təyin edir. |
||
Nəticələrə daxil edilmiş bütün qeydlər tərəfindən yerinə yetirilməli olan sahələri seçmək meyarlarını təyin edir. |
||
Nəticələrin sıralanma qaydasını təyin edir. |
||
Ümumi funksiyaları ehtiva edən bir SQL ifadəsində, SELECT bəndinin xülasə dəyərini hesablamadığı sahələri müəyyənləşdirir. |
Yalnız belə sahələr varsa |
|
Ümumi funksiyaları ehtiva edən bir SQL ifadəsində, SELECT bəndinin xülasə dəyərini hesabladığı sahələrə tətbiq olunan şərtləri təyin edir. |
Hər bir SQL ifadəsi, nitq hissələri ilə müqayisə edilə bilən terminlərdən ibarətdir. Aşağıdakı cədvəldə SQL terminlərinin növləri verilmişdir.
SQL termini | Nitqin müqayisə olunan hissəsi | Tərif | Misal |
---|---|---|---|
identifikator |
isim |
Bir sahənin adı kimi verilənlər bazası obyektini müəyyən etmək üçün istifadə olunan ad. |
Müştərilər. [Telefon nömrəsi] |
operator |
fel və ya zərf |
Bir hərəkəti təmsil edən və ya dəyişdirən bir açar söz. |
|
Sabit |
isim |
Sayı və ya NULL kimi dəyişməyən bir dəyər. |
|
ifadə |
sifət |
Tək bir dəyəri hesablamaq üçün hazırlanmış identifikatorların, operatorların, sabitlərin və funksiyaların birləşməsi. |
> = Mallar. [Qiymət] |
SQL ifadələrinin ümumi formatı:
Sahə_1 seçin
Cədvəl_1 -dən
HARADA meyar_1
;
Qeydlər:
Access, SQL ifadələrindəki xətt fasilələrinə məhəl qoymur. Nə olursa olsun, hər bir cümləni yeni bir sətirdə başlamağı məsləhət görürük ki, SQL ifadəsini həm yazan şəxs, həm də hər kəs oxusun.
Hər SELECT ifadəsi nöqtəli vergül (;) ilə bitir. Nöqtəli vergül son cümlənin sonunda və ya SQL ifadəsinin sonunda ayrı bir sətirdə görünə bilər.
Aşağıdakı nümunə sadə bir sorğu üçün Access -də bir SQL ifadəsinin necə görünə biləcəyini göstərir.
1. SELECT cümləsi
2. FROM maddəsi
3. WHERE maddəsi
SQL sintaksisinin necə işlədiyini başa düşmək üçün bir cümlə ilə bir cümlə nümunəsinə keçək.
SELECT, Şirkət
Bu SELECT maddəsidir. Bir ifadəni (SEÇ) və ardınca iki identifikatoru ("[E-poçt ünvanı]" və "Şirkət") ehtiva edir.
Əgər identifikatorda boşluqlar və ya xüsusi simvollar varsa (məsələn, "E -poçt ünvanı"), kvadrat mötərizədə olmalıdır.
SELECT bəndində, sahələri ehtiva edən cədvəlləri göstərməyinizə ehtiyac yoxdur və nəticələrə daxil edilən məlumatlara uyğun gəlməli olan seçim meyarlarını təyin edə bilməzsiniz.
SELECT ifadəsində SELECT cümləsi həmişə FROM cümləsindən əvvəl gəlir.
Əlaqələrdən
Bu FROM bəndidir. Bir operator (FROM) və bir identifikator (Əlaqələr) var.
Seçim sahələri FROM bəndində göstərilməyib.
WHERE City = "Seattle"
Bu WHERE maddəsidir. (WHERE) operatorunu və ardınca (Şəhər = "Rostov") ifadəsini ehtiva edir.
SELECT, FROM və WHERE maddələri ilə edə biləcəyiniz çox şey var. Bu təkliflərdən istifadə haqqında daha çox məlumat üçün aşağıdakı məqalələrə baxın:
Microsoft Excel -də olduğu kimi, Access sorğu nəticələrini cədvəldə sıralaya bilər. ORDER BY maddəsini istifadə edərək, sorğu işlədildikdə nəticələrin necə sıralanacağını da təyin edə bilərsiniz. ORDER BY bəndindən istifadə olunarsa, SQL ifadəsinin sonunda görünməlidir.
ORDER BY maddəsi, sıralanmanın tətbiq olunacağı qaydada sıralanacaq sahələrin siyahısını ehtiva edir.
Məsələn, əvvəlcə nəticələri Şirkət sahəsinə görə azalan qaydada sıralamaq istədiyinizi düşünün və sonra eyni Şirkət sahə dəyərinə malik qeydlər varsa onları artan qaydada E -poçt Ünvanı sahəsinə görə sıralayın. ORDER BY maddəsi belə görünür:
SİFARİŞ Şirkət DESC,
Qeyd: Varsayılan olaraq, Access dəyərləri artan qaydada sıralayır (A -dan Z -yə, ən kiçiyindən böyüyünə). Dəyərləri azalan qaydada sıralamaq üçün DESC açar sözünü göstərməlisiniz.
SİPARİŞ BY maddəsi haqqında daha çox məlumat üçün SİFARİŞ BÖLÜM məqaləsinə baxın.
Bəzən ümumi aylıq satışlar və ya stokdakı ən bahalı əşyalar kimi məcmu məlumatlarla işləməlisiniz. Bunun üçün SELECT cümləsindəki sahəyə məcmu funksiya tətbiq edilir. Məsələn, sorğu hər bir şirkət üçün e -poçt ünvanlarının sayını əldə etməkdirsə, SELECT maddəsi bu kimi görünə bilər:
Xüsusi məcmu funksiyanı istifadə etmək bacarığı sahədəki məlumatların növündən və istədiyiniz ifadədən asılıdır. Mövcud məcmu funksiyalar haqqında daha çox məlumat üçün SQL məcmu funksiyaları məqaləsinə baxın.
Ümumi funksiyalardan istifadə edərkən ümumiyyətlə GROUP BY cümləsi yaratmalısınız. GROUP BY bəndində məcmu funksiyası olmayan bütün sahələr göstərilir. Bir sorğuda məcmu funksiyalar bütün sahələrə tətbiq olunarsa, GROUP BY cümləsi yaratmağa ehtiyac yoxdur.
GROUP BY maddəsi, WHERE maddəsi yoxdursa dərhal WHERE və FROM bəndinə əməl etməlidir. GROUP BY maddəsində, sahələr SELECT bəndində olduğu kimi eyni qaydada göstərilir.
Əvvəlki nümunəyə davam edək. SELECT maddəsi məcmu funksiyanı yalnız [E -poçt ünvanı] sahəsinə tətbiq edərsə, GROUP BY cümləsi belə görünür:
GROUP BY Şirkəti
GROUP BY maddəsi haqqında daha çox məlumat əldə etmək üçün GROUP BY bəndinə baxın.
Nəticələri məhdudlaşdırmaq üçün şərtlər göstərməlisiniz, ancaq tətbiq etmək istədiyiniz sahə məcmu bir funksiyada istifadə olunursa, WHERE cümləsini istifadə edə bilməzsiniz. Əvəzində HAVING cümləsini istifadə edin. HAVING maddəsi WHERE maddəsi ilə eyni işləyir, lakin məcmu məlumatlar üçün istifadə olunur.
Məsələn, SELECT cümləsindəki birinci sahəyə bir AVG funksiyası (ortalamanı hesablayan) tətbiq etdiyinizi düşünün:
COUNT SEÇ (), Şirkət
COUNT funksiyasının dəyərinə əsaslanaraq sorğu nəticələrini məhdudlaşdırmaq istəyirsinizsə, WHERE cümləsindəki həmin sahəyə bir filtr şərti tətbiq edə bilməzsiniz. Bunun əvəzinə, şərt HAVING bəndində yerləşdirilməlidir. Məsələn, sorğunun yalnız şirkətin birdən çox e -poçt ünvanı olduğu təqdirdə satırları qaytarmasını istəyirsinizsə, aşağıdakı HAVING cümləsini istifadə edə bilərsiniz:
SAYI VAR ()> 1
Qeyd: Sorğu, WHERE bəndində göstərilən məcmu funksiyalarda istifadə edilməyən sahələr üçün meyarlar və HAVING bəndində məcmu funksiyalarda istifadə olunan sahələr üçün şərtlər daxil olmaqla, həm WHERE, həm də HAVING cümləsi daxil ola bilər.
HAVING maddəsi haqqında daha çox məlumat əldə etmək üçün HAVING Maddə məqaləsinə baxın.
UNION operatoru, çoxlu oxşar seçmə sorğuları ilə qaytarılmış bütün məlumatları eyni anda bir araya gətirmək üçün istifadə olunur.
UNION operatoru iki SELECT ifadəsini bir yerə birləşdirməyə imkan verir. Birləşdiriləcək SELECT ifadələri eyni və ya uyğun olan məlumat növləri ilə eyni sayda və çıxış sahələrinin sırasına malik olmalıdır. Bir sorğu işlədərkən, hər bir uyğun gələn sahə məlumatları tək bir çıxış sahəsinə birləşdirilir, buna görə sorğu çıxışı ayrı -ayrılıqda hər SELECT ifadəsi ilə eyni sayda sahəyə malikdir.
Qeyd: Birlik sorğularında rəqəmsal və mətn məlumat növləri uyğun gəlir.
UNION operatorundan istifadə edərək, dublikat satırların, əgər varsa, sorğu nəticələrinə daxil edilməsini təyin edə bilərsiniz. Bunu etmək üçün ALL açar sözündən istifadə edin.
İki SELECT ifadəsini birləşdirmək üçün bir sorğu aşağıdakı əsas sintaksisə malikdir:
Sahə_1 seçin
Cədvəl_1 -dən
BİRLİK
Alan_a seçin
Masa_a -dan
;
Məsələn, "Məhsullar" və "Xidmətlər" adlı iki cədvəliniz olduğunu düşünün. Hər iki cədvəldə məhsulun və ya xidmətin adı, qiymət və zəmanət məlumatları olan sahələr, həmçinin təklif olunan məhsul və ya xidmətin müstəsna xüsusiyyətlərini göstərən bir sahə var. Məhsullar və Xidmətlər cədvəllərində fərqli zəmanət növləri olmasına baxmayaraq, əsas məlumatlar eynidir (fərdi məhsul və ya xidmətlər üçün keyfiyyət zəmanəti varmı). İki cədvəldən dörd sahəni birləşdirmək üçün aşağıdakı birləşmə sorğusundan istifadə edə bilərsiniz:
Adı, qiyməti, zəmanəti var, eksklüziv təklifi seçin
Məhsullardan
UNION ALL
Adı, qiyməti, zəmanəti var, eksklüziv təklifi seçin
Xidmətlərdən
;
UNION operatorundan istifadə edərək SELECT ifadələrini birləşdirmək haqqında daha çox məlumat üçün məqaləyə baxın
Hər bir proqramçının bilməli olduğu əsas SQL əmrləri
SQL və ya Strukturlaşdırılmış Sorgu Dili, əlaqəli verilənlər bazası sistemindəki (RDBMS) məlumatları idarə etmək üçün istifadə olunur. Bu məqalədə hər bir proqramçının bilməli olduğu ümumi istifadə olunan SQL əmrlərindən bəhs ediləcək. Bu material iş müsahibəsindən əvvəl SQL biliklərini öyrənmək istəyənlər üçün idealdır. Bunu etmək üçün məqalədə verilən nümunələri təhlil edin və verilənlər bazası vasitəsi ilə cüt -cüt keçdiklərinizi xatırlayın.
Qeyd edək ki, bəzi verilənlər bazası sistemləri hər ifadənin sonunda nöqtəli vergül tələb edir. Nöqtəli vergül SQL -də hər bir ifadənin sonuna standart bir göstəricidir. Nümunələr MySQL -dən istifadə edir, buna görə nöqtəli vergül tələb olunur.
Komandaların necə işlədiyini göstərmək üçün bir verilənlər bazası yaradın. İşləmək üçün iki fayl yükləməlisiniz: DLL.sql və InsertStatements.sql. Bundan sonra, bir terminal açın və aşağıdakı komanda ilə MySQL konsoluna daxil olun (bu məqalə MySQL -in artıq sistemdə quraşdırıldığını güman edir):
Mysql -u kökü -p
Sonra şifrəni daxil edin.
Aşağıdakı əmri işlədin. Verilənlər bazasına "universitet" deyək:
DATABASE universiteti yaradın; Universitet istifadə edin; QAYNAQ Cədvəldəki xüsusi sütunlar üçün məhdudiyyətlər yaratmanız lazım ola bilər. Cədvəl yaradarkən aşağıdakı məhdudiyyətləri təyin edə bilərsiniz: Birdən çox əsas açar təyin edilə bilər. Bu vəziyyətdə, kompozit bir əsas açar alırsınız. "Təlimatçı" cədvəli yaradın: Cədvəl təlimatçısı yaradın (ID CHAR (5), VARCHAR adı (20) NULL DEYİL, dept_name VARCHAR (20), əmək haqqı NUMERIC (8,2), İLK KEY (ID), XARİCİ ANA SƏHİFƏ (dept_name) REFERANSLAR şöbəsi (dept_name)); Aşağıdakı əmrlə cədvəl sütunları haqqında müxtəlif məlumatları (dəyər növü, açar və ya olmayan) görə bilərsiniz: TƏSVİR ETMƏK Cədvəlin hər bir sütununa məlumat əlavə edərkən, sütun adlarını göstərməyə ehtiyac yoxdur. QIRDIN SELECT, müəyyən bir cədvəldən məlumat almaq üçün istifadə olunur: SEÇİN Aşağıdakı əmr cədvəldəki bütün məlumatları göstərə bilər: * SEÇİN Cədvəl sütunlarında təkrarlanan məlumatlar ola bilər. Yalnız təkrarlanmayan məlumatlar əldə etmək üçün SELECT DISTINCT istifadə edin. FƏRQLİ SEÇİN Sorğuda şərtləri təyin etmək üçün SELECT -də WHERE açar sözündən istifadə edə bilərsiniz: SEÇİN Ərizədə aşağıdakı şərtlər göstərilə bilər: Aşağıdakı əmrləri sınayın. WHERE -də göstərilən şərtlərə diqqət yetirin: Kursu HARADAN SEÇİN * dept_name = 'Komp. Elm. '; Kreditlər> 3 olan kursdan * SEÇİN; KURSUNDAN * SEÇİN dept_name = "Komp. Elmi." VƏ kreditlər> 3; GROUP BY maddəsi, çıxış dəyərlərini qruplaşdırmaq üçün COUNT, MAX, MIN, SUM və AVG kimi məcmu funksiyalarla tez -tez istifadə olunur. SEÇİN Hər fakültə üçün kursların sayını göstərək: COUNT SELECT (course_id), dept_name FROM course GROUP BY dept_name; HAVING açar sözü SQL -ə əlavə edildi, çünki WHERE məcmu funksiyalarla istifadə edilə bilməz. SEÇİN Birdən çox kursu olan fakültələri sadalayaq: COUNT SELECT (course_id), dept_name FROM course GROUP BY by dept_name COUNT COUNT (course_id)> 1; ORDER BY, sorğu nəticələrini azalan və ya artan qaydada sıralamaq üçün istifadə olunur. ORDER BY, heç bir ASC və ya DESC çeşidləmə üsulu göstərilmədiyi təqdirdə artan qaydada sıralanacaq. SEÇİN Kredit sayına görə artan və azalan qaydada kursların siyahısını göstərək: Kredit sifarişi ilə * kursu seçin; SELECT * FROM kursundan SİFARİŞ KREDİTLƏRİ ilə DESC; BETWEEN, müəyyən bir aralığın məlumat dəyərlərini seçmək üçün istifadə olunur. Sayısal və mətn dəyərləri, eləcə də tarixlər istifadə edilə bilər. SEÇİN Maaşları 50.000 -dən çox, lakin 100.000 -dən az olan müəllimlərin siyahısı: 50000 VƏ 100000 ARASINDA əmək haqqı olan müəllimdən * SEÇİN; LIKE operatoru WHERE -də oxşar bir dəyər üçün axtarış nümunəsi təyin etmək üçün istifadə olunur. LIKE -də istifadə olunan iki pulsuz operator var: Adında "to" olan kursların siyahısını və adı "CS-" ilə başlayan kursların siyahısını göstərək: *% -Dən% -ə KİMİ başlığı olan kursu seçin *; "CS -___" KİMİ KURSUNDAN * kursu seçin. WHERE cümləsi üçün birdən çox dəyər təyin etmək üçün IN istifadə edə bilərsiniz: SEÇİN Comp -dən olan tələbələrin siyahısını göstərək. Fizika və Elec. İngilis dili: SELECT * FROM student WHERE dept_name IN ('Comp. Sci.', 'Physics', 'Elec. Eng.'); JOIN, içərisində ümumi atributlardan istifadə edərək iki və ya daha çox cədvəli bağlamaq üçün istifadə olunur. Aşağıdakı şəkil SQL -də birləşməyin müxtəlif yollarını göstərir. Sol xarici birləşmə ilə sağ xarici birləşmə arasındakı fərqə diqqət yetirin: SEÇİN Bütün kursların siyahısını və fakültələr haqqında müvafiq məlumatları göstərəcəyik: SEÇİN * KURSDAN JOIN bölməsinə ON kurs.dept_name = şöbə.dept_adı; Lazım olan bütün kursları və onlar haqqında ətraflı məlumat verək: Prereq.course_id, title, dept_name, kreditlər, prereq_id SEÇİN prereq SOL OUTER JOIN kursunda ON prereq.course_id = course.course_id; Lazım olub -olmamasından asılı olmayaraq bütün kursların siyahısını göstərək: Course_course_id, title, dept_name, credits, prereq_id prereq FROM SAĞ OUTER JOIN kursunda prereq.course_id = course.course_id; Görünüş, bir ifadəni yerinə yetirməklə yaradılan virtual SQL cədvəlidir. Satırlar və sütunlardan ibarətdir və adi bir SQL cədvəlinə çox bənzəyir. View həmişə verilənlər bazasından ən son məlumatları göstərir. 3 krediti olan kurslardan ibarət bir görünüş yaradaq: Bu funksiyalar sözügedən məlumatlar ilə əlaqəli məcmu nəticə əldə etmək üçün istifadə olunur. Aşağıdakılar ümumi olaraq istifadə olunan məcmu funksiyalardır: Daxil edilmiş alt sorğular, SELECT, FROM və WHERE ifadələrini başqa bir sorğunun içərisində yerləşdirilmiş SQL sorğularıdır. 2009 -cu ilin payızında və 2010 -cu ilin yazında tədris olunan kursları tapaq: SELECT DISTINCT course_id FROM WHERE semestr = 'Payız' Və il = 2009 VE course_id IN (SELECT course_id FERM WHERE semestr = 'Bahar' Və il = 2010); Mənim kimi olsanız, razılaşacaqsınız: SQL ilk baxışdan asan görünən şeylərdən biridir (sanki ingilis dilində oxunur!), Ancaq nədənsə düzgün sintaksisini tapmaq üçün hər sadə sorğunu google -dan keçirməlisiniz. Sonra birləşir, toplanır, alt sorğular başlayır və tamamilə cəfəngiyat çıxır. Belə görünür: Bue! SQL -i ilk dəfə görürsə, bu, hər hansı bir yeni başlayanı və ya hətta bir ara inkişaf etdiricini qorxudacaq. Ancaq hər şey o qədər də pis deyil. İntuitiv olanı xatırlamaq çox asandır və bu təlimatın köməyi ilə yeni başlayanlar üçün SQL giriş həddini aşağı salmağı və artıq SQL -ə yeni bir baxış tərzi təklif edənləri ümid edirəm. SQL sintaksisi fərqli verilənlər bazalarında demək olar ki, eyni olsa da, bu məqalə sorğular üçün PostgreSQL -dən istifadə edir. Bəzi nümunələr MySQL və digər verilənlər bazalarında işləyəcək. SQL -də bir çox açar sözlər var, ancaq SELECT, FROM və WHERE demək olar ki, hər sorğuda görünür. Bir az sonra başa düşəcəksiniz ki, bu üç söz verilənlər bazası sorğularının qurulmasının ən əsas aspektlərini təmsil edir və digər, daha mürəkkəb sorğular yalnız üstündəki əlavələrdir. Bu yazıda nümunə olaraq istifadə edəcəyimiz verilənlər bazasına nəzər salaq: Kitab kitabxanamız və insanlarımız var. Buraxılmış kitabların uçotu üçün xüsusi bir cədvəl də var. Sadə bir sorğu ilə başlayaq: ehtiyacımız var adlar və identifikatorlar Müəllif "Dan Brown" tərəfindən yazılmış bütün kitabların (id) Müraciət belə olacaq: Və nəticə belədir: Olduqca sadə. Nə olduğunu başa düşmək üçün sorğuya nəzər salaq. Bu indi aydın görünə bilər, amma qoşulma və alt sorğulara keçdiyimiz zaman FROM çox vacib olacaq. FROM, sorğu etmək üçün cədvələ işarə edir. Bu mövcud bir masa ola bilər (yuxarıdakı nümunədə olduğu kimi) və ya birləşmə və ya alt sorğular yolu ilə yaradılan bir masa. WHERE yalnız bir filtr kimi davranır tellərçıxarmaq istədiyimiz. Bizim vəziyyətimizdə, yalnız müəllif sütunundakı dəyərin "Dan Brown" olduğu sətirləri görmək istəyirik. İndi ehtiyacımız olan cədvəldən lazım olan bütün sütunlara sahib olduğumuz üçün bu məlumatların necə göstəriləcəyinə qərar verməliyik. Bizim vəziyyətimizdə yalnız kitabların adlarına və identifikatorlarına ehtiyac duyulur, buna görə də biz və budur seçmək SELECT istifadə edin. Eyni zamanda, AS istifadə edərək sütunun adını dəyişə bilərsiniz. Bütün sorğu sadə bir diaqramla görüntülənə bilər: İndi Dan Brownun kitabxanadan götürülmüş bütün kitablarının başlıqlarını (mütləq bənzərsiz deyil) və bu kitabların nə vaxt geri qaytarılması lazım olduğunu görmək istəyirik: Nəticə: Əksər hallarda, müraciət əvvəlkisinə bənzəyir. istisna olmaqla Bölmələrdən. Bu o deməkdir ki başqa bir cədvəldən məlumat tələb edirik... Nə kitab cədvəlinə, nə də borclar cədvəlinə daxil oluruq. Bunun əvəzinə istinad edirik yeni masa iki cədvələ qoşulmaqla yaradılmışdır. borclar JOIN books ON Borings.bookid = books.bookid, bookid dəyərlərinin eyni olduğu "kitablar" və "borclar" cədvəllərindəki bütün qeydlərin birləşdirilməsindən yaranan yeni bir cədvəldir. Belə bir birləşmənin nəticəsi olacaq: Və sonra bu cədvəli yuxarıdakı nümunədə olduğu kimi sorğulayırıq. Bu o deməkdir ki, cədvəllərə qoşularkən yalnız bu birləşməni necə edəcəyiniz barədə narahat olmalısınız. Və sonra tələb, 3 -cü bənddən "sadə tələb" vəziyyətində olduğu kimi aydın olur. Bir az daha mürəkkəb iki masa birləşməsini sınayaq. İndi müəllifin "Dan Brown" kitabının kitabxanasından götürmüş insanların adlarını almaq istəyirik. Bu dəfə aşağıdan yuxarıya keçək: Addım 1- məlumatları haradan alırıq? İstədiyimiz nəticəni əldə etmək üçün "üzv" və "kitablar" cədvəllərini "borclar" cədvəli ilə birləşdirməliyik. JOIN bölməsi belə görünəcək: Bağlantı nəticəsini linkdə görmək olar. Addım 2- hansı məlumatları göstəririk? Yalnız kitabın müəllifinin "Dan Brown" olduğu məlumatlar ilə maraqlanırıq Addım 3- məlumatları necə göstəririk? Məlumat əldə edildikdən sonra kitabları götürənlərin ad və soyadını göstərməlisiniz: Super! Yalnız üç komponenti birləşdirmək və ehtiyac duyduğumuz tələbi etmək qalır: Hansı bizə verəcək: Yaxşı! Ancaq adlar təkrarlanır (tək deyil). Bunu tezliklə düzəldəcəyik. Kobud desək, Birdən çox satırı bir yerə çevirmək üçün birləşmələr lazımdır... Eyni zamanda, toplama zamanı fərqli sütunlar üçün fərqli məntiq istifadə olunur. Dublikat adların göründüyü nümunəmizə davam edək. Ellen Hortonun birdən çox kitab götürdüyünü görmək olar, lakin bu məlumatı göstərmək üçün bu ən yaxşı yol deyil. Başqa bir müraciət edilə bilər: İstədiyimiz nəticəni verəcək: Demək olar ki, bütün birləşmələr GROUP BY maddəsi ilə gəlir. Bu şey, sorğu ilə əldə edilə bilən bir cədvəli cədvəl qruplarına çevirir. Hər qrup, GROUP BY -də göstərdiyimiz sütun üçün unikal bir dəyərə (və ya dəyərlər qrupuna) uyğundur. Misalımızda əvvəlki məşqdən əldə etdiyimiz nəticəni bir sıra qrupuna çeviririk. Birdən çox satırı tam bir dəyərə çevirən sayla da toplayırıq (bizim vəziyyətimizdə bu satır sayıdır). Sonra bu dəyər hər qrupa verilir. Nəticədə hər bir satır, hər qrupun birləşməsinin nəticəsidir. Nəticədəki bütün sahələrin ya GROUP BY -də göstərilməli, ya da bunların üzərində toplama aparılması lazım olduğu məntiqi nəticəyə gələ bilərsiniz. Bütün digər sahələr fərqli satırlarda bir -birindən fərqlənə biləcəyi üçün və SELECT ilə seçsəniz, mümkün olan dəyərlərdən hansının alınmalı olduğu aydın deyil. Yuxarıdakı nümunədə, sayma funksiyası bütün sətirləri işlədi (çünki xətlərin sayını hesablayırdıq). Sum və ya max kimi digər funksiyalar yalnız göstərilən sətirləri işlədir. Məsələn, hər müəllifin yazdığı kitabların sayını öyrənmək istəyiriksə, belə bir sorğuya ehtiyacımız var: Nəticə: Burada sum funksiyası yalnız stok sütununu işlədir və hər qrupdakı bütün dəyərlərin cəmini hesablayır. Alt sorğular daha böyük sorğulara daxil edilmiş adi SQL sorğularıdır. Qaytarılmış nəticənin növünə görə üç növə bölünürlər. Birdən çox sütunu qaytaran sorğular var. Yaxşı bir nümunə, son toplama məşqindəki sorğulardır. Bir alt sorğu olaraq, yeni sorğuların edilə biləcəyi başqa bir cədvəli geri qaytaracaq. Əvvəlki məşqə davam edərək, "Robin Sharma" nın müəllifinin yazdığı kitabların sayını öyrənmək istəyiriksə, mümkün yollardan biri də alt sorğulardan istifadə etməkdir: Nəticə: Yazıla bilər: ["Robin Sharma", "Dan Brown"] 2. İndi bu nəticəni yeni bir sorğuda istifadə edək: Nəticə: Bu eyni kimidir: Yalnız bir satır və bir sütunla nəticələnən sorğular var. Sabit dəyərlər kimi qəbul edilə bilər və müqayisə operatorlarında olduğu kimi dəyərlərin istifadə edildiyi hər yerdə istifadə edilə bilər. Həm də iki ölçülü cədvəllər və ya tək elementli massivlər kimi istifadə edilə bilər. Məsələn, kitabxanadakı mövcud ortalamadan artıq olan bütün kitablar haqqında məlumat əldə edək. Ortalama bu şəkildə əldə edilə bilər: Hansı bizə verir: Əksər verilənlər bazası yazmaları, daha mürəkkəb oxunuşlarla müqayisədə olduqca sadədir. UPDATE sorğusunun sintaksisi oxunan sorğunun mənası ilə eynidir. Yeganə fərq SELECT sütunlarını seçmək əvəzinə SET dəyərlərini təyin etməyimizdir. Dan Brownun bütün kitabları itirildikdə, kəmiyyət dəyərini sıfırlamalısınız. Bunun üçün müraciət belə olacaq: WHERE əvvəlki kimi eyni şeyi edir: satırları seçir. Oxuyarkən istifadə olunan SELECT əvəzinə indi SET -dən istifadə edirik. Ancaq indi yalnız sütunun adını deyil, həm də seçilmiş satırlarda bu sütunun yeni dəyərini göstərməlisiniz. DELETE sorğusu, sütun adları olmayan bir SEÇ və ya YENİLƏNİŞ sorğusudur. Ciddi şəkildə. SELECT və UPDATE ilə olduğu kimi, WHERE cümləsi eyni olaraq qalır: silinəcək sətirləri seçir. Silmə əməliyyatı bütün satırı məhv edir, buna görə ayrı sütunlar təyin etməyin mənası yoxdur. Beləliklə, Dan Braunun kitablarının sayını sıfırlamamaq, bütün qeydləri tamamilə silmək qərarına gəlsək, aşağıdakı tələbi edə bilərik: Bəlkə də digər sorğu növlərindən fərqlənən tək şey INSERT -dir. Format belədir: Harada a, b, c sütun adları, x, y və z isə eyni qaydada həmin sütunlara daxil ediləcək dəyərlərdir. Əsasən budur. Konkret bir nümunəyə nəzər salaq. Bütün "kitablar" cədvəlini dolduran bir INSERT sorğusudur: Sona gəldik, kiçik bir test təklif edirəm. Məqalənin əvvəlində bu istəyə baxın. Bunu başa düşə bilərsinizmi? SELECT, FROM, WHERE, GROUP BY maddələrinə bölməyə çalışın və alt sorğuların fərdi komponentlərini nəzərdən keçirin. Burada daha oxunaqlı bir formadadır: Bu sorğu, kitabxanadan ortalamanın üstündə olan bir kitabı yoxlamış insanların siyahısını qaytarır. Nəticə: Ümid edirəm heç bir problem olmadan başa düşməyi bacardınız. Amma yoxsa, bu yazını təkmilləşdirmək üçün şərhlərinizi və rəylərinizi yüksək qiymətləndirərəm.Verilənlər bazası əmrləri
1. Mövcud verilənlər bazasına baxın
VERİBAZALARI GÖSTƏRİN; 2. Yeni bir verilənlər bazası yaratmaq
DATABASE YARADIN; 3. İstifadə etmək üçün bir verilənlər bazası seçilməsi
İSTİFADƏ EDİN 4. SQL əmrlərini .sql faylından idxal etmək
QAYNAQ 5. Verilənlər bazasının silinməsi
DROP DATABASE Masalarla işləmək
6. Verilənlər bazasında mövcud olan cədvəllərə baxmaq
TABLOLARI GÖSTƏRİN;
7. Yeni bir masa yaratmaq
CƏDVƏL OLUN CREATE TABLE -dən istifadə edərək bütövlük məhdudiyyətləri
Misal
8. Cədvəl məlumatları
9. Cədvələ məlumatların əlavə edilməsi
QIRDIN 10. Cədvəl məlumatlarının yenilənməsi
YENİLƏNİB 11. Cədvəldən bütün məlumatların çıxarılması
SİLİN 12. Cədvəlin silinməsi
DAMLA MASASI İstəklər üçün əmrlər
13. SEÇİN
14. FƏRQLİ SEÇİN
15. HARADA
Misal
16. Qrup
Misal
17. VAR
Misal
18. SİFARİŞ
Misal
19. ARASINDA
Misal
20. BƏYƏN
SEÇİN Misal
21. IN
Misal
22. QOŞUL
Misal 1
Misal 2
Misal 3
23. Görünüş
Yaradılış
GÖRÜNÜŞ YARADIN Silinir
DAMLA GÖRÜNTÜSÜ Misal
24. Məcmu funksiyalar
25. Daxil edilmiş alt sorğular
Misal
"SEÇİN * HARADA a = b CDƏN" və ya "AÇIĞDAN A = b FONDAN AÇMA *" lazımdırmı?
Üzvləri SEÇİN. İlk ad || "" || members.lastname AS "Tam Ad" AS İLK üzvlərdən ON üzvlər.memberid = borclar.memberid INNER JOIN kitablar ON kitablar.bookid = borclar.bookid WHERE borclar.bookid IN (fonddan kitablardan kitab seçin) ) KİTABLARDAN)) GROUP BY üzvləri.birincisi, üzvləri. son adı; 1. Üç sehrli söz
2. Bizim bazamız
3. Sadə tələb
Bookid AS "id" olaraq seçin, kitablardan FROM WHERE Author = "Dan Brown"; id
başlıq
2
İtirilmiş simvol
4
Cəhənnəm
3.1 - məlumatları haradan alırıq
3.2 HARADA - hansı məlumatları göstərmək lazımdır
3.3 SEÇ - məlumatların necə göstərilməsi
4. Bağlantılar (qoşulmalar)
Kitabları seçin. Başlığı "Başlıq" olaraq AS, borçları qaytarın. "Qayıdış Tarixi" olaraq "Borc Alma" kitabından borc götürməklə bağlı kitablara QOŞULUN.bookid = books.bookid WHERE books.author = "Dan Brown"; Başlıq
Qayıdış tarixi
İtirilmiş simvol
2016-03-23 00:00:00
Cəhənnəm
2016-04-13 00:00:00
İtirilmiş simvol
2016-04-19 00:00:00
borclar ÜÇÜN kitablar borclar haqqında QOŞULUN.bookid = kitablar.
WHERE books.author = "Dan Brown"
Members.firstname "AD" kimi, members.lastname AS "Soyad" olaraq SEÇİN
Üzvləri SEÇMƏK.firstname AS "Ad", members.lastname AS "Soyadı" Borclardan QOŞUN kitablar ON borclar.bookid = books.bookid üzvlərə üzv ol ON üzvləri.memberid = borclar.memberid WHERE books.author = "Dan Brown"; Adı
Soyad
Mike
Willis
Ellen
Horton
Ellen
Horton
5. Aqreqasiya
Üzvləri seçin. İlk adı "Ad" olaraq, üzvlər. Son adı "Soyadı" olaraq sayın, (*) AS "Borc götürdüyünüz kitabların sayı" QARŞILIQLARDAN kitablara QOŞULUN. .memberid WHERE books.author = "Dan Brown" GROUP BY members.firstname, members.lastname; Adı
Soyad
Borc alınan kitabların sayı
Mike
Willis
1
Ellen
Horton
2
Müəllifi seçin, məbləği (stoku) YAZAR QRUPUNDAN kitablardan; müəllif
cəm
Robin sharma
4
Dan qəhvəyi
6
John Green
3
Amish tripathi
2
6. Alt sorğular
6.1 İki ölçülü masa
SEÇ * FROM (müəllif SEÇİN, cəmi (fond) FROM by GROUP BY автор) Nəticələr YERDƏ müəllif = "Robin Sharma";
Yazıçı NERƏDƏDƏN kitablardan kitab adı seçin (müəllifi SEÇİN (müəllifi SEÇİN, müəllifi topla (kitab) FROM by GROUP by author) kitablardan) Nəticə olaraq məbləğ> 3); başlıq
kitab
İtirilmiş simvol
2
Öləndə Kim Ağlayacaq?
3
Cəhənnəm
4
Müəllif IN ("Robin Sharma", "Dan Brown") kitablarından FROM kitab seçin, başlıq seçin; 6.3 Fərdi dəyərlər
kitablardan ort (stok) seçin; 7. Əməliyyatlar yazın
7.1 Yeniləmə
YENİLƏNİB kitablar SET stok = 0 HARADA müəllif = "Dan Brown"; 7.2 Silin
KİFERDƏN kitablardan silin müəllif = "Dan Brown"; 7.3 Daxil edin
INSERT INTO x (a, b, c) VALUES (x, y, z);
INSERT INTO kitabları (kitab, başlıq, müəllif, nəşr olunmuş, stok) DƏYƏRLƏRİ (1, "İkshvaku Scionu", "Amish Tripathi", "06-22-2015", 2), (2, "The Lost Symbol", " Dan Brown "," 07-22-2010 ", 3), (3," Öləndə kim ağlayacaq? "," Robin Sharma "," 06-15-2006 ", 4), (4," Cəhənnəm ") , "Dan Brown", "05-05-2014", 3), (5, "Ulduzlarımızın Arızası", "John Green", "01-03-2015", 3); 8. Doğrulama
Üzvləri SEÇİN. İlk ad || "" || members.lastname AS "Tam Ad" AS İLK üzvlərdən ON üzvlər.memberid = borclar.memberid INNER JOIN kitablar ON kitablar.bookid = borclar.bookid WHERE borclar.bookid IN (fonddan kitablardan kitab seçin) ) KİTABLARDAN)) GROUP BY üzvləri.birincisi, üzvləri. son adı; Tam Adı
Lida Tayler