Ev, dizayn, təmir, dekorasiya.  Həyət və bağ.  Öz əllərinizlə

Ev, dizayn, təmir, dekorasiya. Həyət və bağ. Öz əllərinizlə

» Verilənlər bazası və sbd nədir? SQL sorğu dili sql dilindən istifadə üsulları.

Verilənlər bazası və sbd nədir? SQL sorğu dili sql dilindən istifadə üsulları.

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:

  • İerarxik
  • Şəbəkə
  • Əlaqəli
  • Obyekt yönümlü

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 dilinin komponentləri

SQL dili aşağıdakı komponentlərdən ibarətdir:

  1. məlumat manipulyasiya dili (DML);
  2. məlumatların müəyyən edilməsi dili (DDL);
  3. Məlumat İdarəetmə Dili (DCL)

1.
Məlumat manipulyasiya dili 4 əsas əmrdən ibarətdir:

  • verilənlər bazasından məlumatların alınması -
  • verilənlər bazası cədvəlinə məlumat daxil etmək -
  • verilənlər bazası cədvəllərindəki məlumatların yenilənməsi (dəyişdirilməsi) -
  • verilənlər bazasından məlumatların silinməsi -

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:

  • verilənlər bazası yaratmaq - DATABASE CREATE
  • masa yaratmaq - CƏDVƏL YARAT
  • cədvəlin (quruluşun) dəyişdirilməsi - ALTER TABLE
  • masa atmaq - DAMLA TABLOSU

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ı.

Phpmyadmin -də sql sorğusunu necə etmək olar

  1. Başlat denwer qısa yolunu işə salın.
  2. Brauzerinizin ünvan çubuğuna http: // localhost / tools / phpmyadmin yazın.
  3. Pəncərənin sol hissəsində maraqlandığınız verilənlər bazasını seçin və ya yaradın (hələ yaradılmamışsa). Phpmyadmin -də bir verilənlər bazası yaratmaq artıq nəzərdən keçirilir.
  4. Sorğunun işləyəcəyi cədvəli bilirsinizsə, pəncərənin sol hissəsində bu cədvəli seçin.
  5. SQL sekmesini seçin və sorğunuzu yazmağa başlayın.

Phpmyadmin -də verilənlər bazası yaratmaq

Əvvəlcə ilk iki nöqtəni tamamlamalısınız.
Sonra:

  • açılmış veb interfeysində nişanı seçin Verilənlər bazası;
  • sahədə Verilənlər bazası yaradın bazanın adını daxil edin;
  • düyməsini basın Yarat;
  • phpMyAdmin -də işləməyə davam etmək üçün indi yaradılmış verilənlər bazasına gedə bilərsiniz.

Sql skripka xidmətində işləyir

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:

  1. Hesabınızı yaradın (hesabınız varsa daxil olun).
  2. Düyməni basın Tətbiqə keçin.
  3. Menyu Sxema -> İdxal et.
  4. Verilənlər bazası cədvəllərini yaratmaq və doldurmaq üçün kodu kopyalayın və görünən pəncərəyə yapışdırın

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ə.

  • SELECT ifadəsi, bir dəyişənə bir dəyərin təyin edilməsi sorğuya əsaslananda istifadə olunur.

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:

  • @@ ERROR - Cari bağlantıda son T -SQL ifadəsini icra edərkən meydana gələn xətanın sayını ehtiva edir. Heç bir səhv tapılmazsa, 0 ehtiva edir. Bu sistem dəyişəninin dəyəri hər bir sonrakı ifadə icra edildikdən sonra sıfırlanır. İçindəki dəyəri saxlamaq istəyirsinizsə, bu kod səhv kodunun saxlanılması lazım olan ifadənin icrasından dərhal sonra yerli dəyişənə köçürülməlidir.
  • @@ IDENTITY - Son INSERT ifadəsi nəticəsində verilənlər bazasına daxil edilmiş son identifikasiya dəyərini ehtiva edir. Son INSERT ifadəsində heç bir eyniləşdirmə dəyəri yaradılmamışsa, @@ IDENTITY sistem dəyişicisi NULL -dur. Bu ifadə, identifikasiya dəyərinin olmaması ifadənin icrası zamanı baş verən qəzaya səbəb olsa belə doğrudur. Və tək bir ifadə istifadə edərək birdən çox əlavə edildikdə, bu sistem dəyişəninə yalnız son identifikasiya dəyəri verilir.
  • @@ ROWCOUNT - Ən çox istifadə olunan sistem dəyişənlərindən biridir. Son ifadədən təsirlənən xətlərin sayı haqqında məlumatı qaytarır. Tipik olaraq, run-addım səhv kateqoriyasına daxil olanlardan başqa səhvləri idarə etmək üçün istifadə olunur. Məsələn, bir proqram DELETE ifadəsi WHERE cümləsi ilə çağırıldıqdan sonra təsirlənmiş sətirlərin sayının sıfır olduğunu taparsa, gözlənilməz bir şeyin baş verdiyi qənaətinə gələ bilərik. Səhv mesajı əl ilə aktivləşdirilə bilə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.

Bu yazıda

SQL nədir?

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.

Bəyanatları seçin

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 cümlələri

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.

SQL şərtləri

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]

Əsas SQL bəndləri: SELECT, FROM və WHERE

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.

Access -də nümunə

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 bənd

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.

FROM maddəsi

Ə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 maddəsi

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:

Nəticələrin çeşidlənməsi: SİFARİŞ EDİ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.

Pivot Məlumatları ilə İş: GROUP BY və HAVING Şərtləri

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.

Bir məcmu funksiyada istifadə edilməyən sahələri təyin etmək: QRUP BY maddəsi

Ü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.

Qruplaşdırma Şərtlərindən İstifadə Edərək Ümumi Dəyərlərin Məhdudlaşdırılması: HAVING Maddəsi

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.

Sorğu nəticələrini birləşdirmək: UNION Operatoru

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.

Nümunələr üçün verilənlər bazası qurulması

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 ; QAYNAQ

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 ( , , İLK DÖVLƏT ( ), XARİCİ AÇAR ( ) ƏDƏBİYYATLAR ());

CREATE TABLE -dən istifadə edərək bütövlük məhdudiyyətləri

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:

  • bir masa hüceyrəsi NULL ola bilməz;
  • ilkin açar - İLK KEY (col_name1, col_name2, ...);
  • xarici açar - XARİCİ KEY (col_namex1,…, col_namexn) REFERANSLAR tablo_adı (col_namex1,…, col_namexn).

Birdən çox əsas açar təyin edilə bilər. Bu vəziyyətdə, kompozit bir əsas açar alırsınız.

Misal

"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));

8. Cədvəl məlumatları

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 ;

9. Cədvələ məlumatların əlavə edilməsi

QIRDIN (, , , ...) DƏYƏRLƏR ( , , , …);

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 Dəyərlər ( , , , …);

10. Cədvəl məlumatlarının yenilənməsi

YENİLƏNİB SET = , = , ... HARADA ;

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

SELECT, müəyyən bir cədvəldən məlumat almaq üçün istifadə olunur:

SEÇİN , ,… ƏLDƏN ;

Aşağıdakı əmr cədvəldəki bütün məlumatları göstərə bilər:

* SEÇİN ;

14. FƏRQLİ 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 , ,… ƏLDƏN ;

15. HARADA

Sorğuda şərtləri təyin etmək üçün SELECT -də WHERE açar sözündən istifadə edə bilərsiniz:

SEÇİN , ,… ƏLDƏN HARADA ;

Ərizədə aşağıdakı şərtlər göstərilə bilər:

  • mətn müqayisə;
  • ədədi dəyərlərin müqayisəsi;
  • məntiqi əməliyyatlar AND (və), OR (və ya) və NOT (inkar).

Misal

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;

16. Qrup

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 , ,… ƏLDƏN Qrupa görə ;

Misal

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;

17. VAR

HAVING açar sözü SQL -ə əlavə edildi, çünki WHERE məcmu funksiyalarla istifadə edilə bilməz.

SEÇİN , , ... ƏLDƏN Qrupa görə VAR

Misal

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;

18. SİFARİŞ

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 , ,… ƏLDƏN SİFARİŞ , ,… ASC | DESC;

Misal

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;

19. ARASINDA

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 , ,… ƏLDƏN HARADA ARASINDA ;

Misal

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;

20. BƏYƏ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:

  • % (heç biri, bir və ya daha çox simvol);
  • _ (bir xarakter).
SEÇİN , ,… ƏLDƏN HARADA KİMİ ;

Misal

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.

21. IN

WHERE cümləsi üçün birdən çox dəyər təyin etmək üçün IN istifadə edə bilərsiniz:

SEÇİN , ,… ƏLDƏN HARADA IN ( , , …);

Misal

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.');

22. QOŞUL

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 , ,… ƏLDƏN QOŞUL AÇIQ = ;

Misal 1

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ı;

Misal 2

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;

Misal 3

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;

23. Görünüş

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.

Yaradılış

GÖRÜNÜŞ YARADIN SEÇMƏ KİMİ , ,… ƏLDƏN HARADA ;

Silinir

DAMLA GÖRÜNTÜSÜ ;

Misal

3 krediti olan kurslardan ibarət bir görünüş yaradaq:

24. Məcmu funksiyalar

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:

  • COUNT (col_name) - satır sayını qaytarır;
  • SUM (col_name) - verilən sütundakı dəyərlərin cəmini qaytarır;
  • AVG (col_name) - Verilən sütunun orta dəyərini qaytarır;
  • MIN (col_name) - Verilmiş sütun üçün ən kiçik dəyəri qaytarır;
  • MAX (col_name) - Verilən sütun üçün ən böyük dəyəri qaytarır.

25. Daxil edilmiş alt sorğular

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.

Misal

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);

"SEÇİN * HARADA a = b CDƏN" və ya "AÇIĞDAN A = b FONDAN AÇMA *" lazımdırmı?

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:


Ü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ı;

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.

1. Üç sehrli söz

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.

2. Bizim bazamız

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.

  • Kitablar cədvəlində kitabın adı, müəllifi, nəşr tarixi və mövcudluğu haqqında məlumatlar saxlanılır. Bu sadədir.
  • "Üzvlər" cədvəlində kitabxanada qeydiyyatdan keçmiş bütün insanların adları və soyadları var.
  • "Borclar" cədvəlində kitabxanadan götürülmüş kitablar haqqında məlumatlar saxlanılır. Bookid sütunu, "kitablar" cədvəlindəki kitabın şəxsiyyətini, "üzvlər" sütunu isə "üzvlər" cədvəlindəki müvafiq şəxsi ifadə edir. Kitabın geri qaytarılması lazım olan bir tariximiz də var.

3. Sadə tələb

Sadə bir sorğu ilə başlayaq: ehtiyacımız var adlaridentifikatorlar Müəllif "Dan Brown" tərəfindən yazılmış bütün kitabların (id)


Müraciət belə olacaq:


Bookid AS "id" olaraq seçin, kitablardan FROM WHERE Author = "Dan Brown";

Və nəticə belədir:


id başlıq
2 İtirilmiş simvol
4 Cəhənnəm

Olduqca sadə. Nə olduğunu başa düşmək üçün sorğuya nəzər salaq.

3.1 - məlumatları haradan alırıq

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.

3.2 HARADA - hansı məlumatları göstərmək lazımdır

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.

3.3 SEÇ - məlumatların necə göstərilməsi

İ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:


4. Bağlantılar (qoşulmalar)

İ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:


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";

Nəticə:


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

Ə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:


borclar ÜÇÜN kitablar borclar haqqında QOŞULUN.bookid = kitablar.

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


WHERE books.author = "Dan Brown"

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:


Members.firstname "AD" kimi, members.lastname AS "Soyad" olaraq SEÇİN

Super! Yalnız üç komponenti birləşdirmək və ehtiyac duyduğumuz tələbi etmək qalır:


Ü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";

Hansı bizə verəcək:


Adı Soyad
Mike Willis
Ellen Horton
Ellen Horton

Yaxşı! Ancaq adlar təkrarlanır (tək deyil). Bunu tezliklə düzəldəcəyik.

5. Aqreqasiya

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:


Ü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;

İstədiyimiz nəticəni verəcək:


Adı Soyad Borc alınan kitabların sayı
Mike Willis 1
Ellen Horton 2

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:


Müəllifi seçin, məbləği (stoku) YAZAR QRUPUNDAN kitablardan;

Nəticə:


müəllif cəm
Robin sharma 4
Dan qəhvəyi 6
John Green 3
Amish tripathi 2

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.

6. Alt sorğular


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.

6.1 İki ölçülü masa

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:


SEÇ * FROM (müəllif SEÇİN, cəmi (fond) FROM by GROUP BY автор) Nəticələr YERDƏ müəllif = "Robin Sharma";

Nəticə:



Yazıla bilər: ["Robin Sharma", "Dan Brown"]


2. İndi bu nəticəni yeni bir sorğuda istifadə edək:


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);

Nəticə:


başlıq kitab
İtirilmiş simvol 2
Öləndə Kim Ağlayacaq? 3
Cəhənnəm 4

Bu eyni kimidir:


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

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:


kitablardan ort (stok) seçin;

Hansı bizə verir:


7. Əməliyyatlar yazın

Əksər verilənlər bazası yazmaları, daha mürəkkəb oxunuşlarla müqayisədə olduqca sadədir.

7.1 Yeniləmə

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:


YENİLƏNİB kitablar SET stok = 0 HARADA müəllif = "Dan Brown";

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.


7.2 Silin

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:


KİFERDƏN kitablardan silin müəllif = "Dan Brown";

7.3 Daxil edin

Bəlkə də digər sorğu növlərindən fərqlənən tək şey INSERT -dir. Format belədir:


INSERT INTO x (a, b, c) VALUES (x, y, z);

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:


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

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:


Ü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ı;

Bu sorğu, kitabxanadan ortalamanın üstündə olan bir kitabı yoxlamış insanların siyahısını qaytarır.


Nəticə:


Tam Adı
Lida Tayler

Ü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.