SQL sorğularından istifadə edərək Access verilənlər bazasında məlumatların seçilməsi. Microsoft Office Access verilənlər bazasını Microsoft SQL Serverə köçürmək Girişdə sql sorğularını yazın

06.04.2023

Hər birimiz müntəzəm olaraq müxtəlif verilənlər bazası ilə qarşılaşırıq və istifadə edirik. E-poçt ünvanı seçdiyimiz zaman verilənlər bazası ilə işləyirik. Verilənlər bazaları axtarış xidmətlərindən, müştəri məlumatlarını saxlamaq üçün banklardan və s.

Lakin, verilənlər bazalarının daimi istifadəsinə baxmayaraq, hətta bir çox inkişaf etdiricilər üçün proqram sistemləri eyni terminlərin müxtəlif şərhlərinə görə çoxlu "boş yerlər" var. SQL dilinə nəzər salmazdan əvvəl baza verilənlər bazası terminlərinin qısa tərifini verəcəyik. Belə ki.

Verilənlər bazası - sifarişli məlumat strukturlarını və onların əlaqələrini saxlamaq üçün fayl və ya fayl dəsti. Çox vaxt verilənlər bazası idarəetmə sistemi adlanır - bu, yalnız müəyyən bir formatda məlumat deposudur və müxtəlif DBMS ilə işləyə bilər.

Cədvəl - Müəyyən bir atribut üzrə qruplaşdırılmış sənədləri, məsələn, son bir ay üçün sifarişlərin siyahısını saxlayan bir qovluğu təsəvvür edək. Bu kompüterdəki cədvəldir.Ayrıca cədvəlin özünəməxsus adı var.

Məlumat növü - müəyyən bir sütunda və ya cərgədə saxlanmasına icazə verilən məlumat növü. Bu rəqəmlər və ya müəyyən bir formatın mətni ola bilər.

Sütun və sıra- hamımız sətir və sütunları olan elektron cədvəllərlə işləmişik. İstənilən əlaqəli verilənlər bazası cədvəllərlə eyni şəkildə işləyir. Satırlar bəzən qeydlər adlanır.

əsas açar- hər bir cədvəl sətirində onu unikal şəkildə müəyyən etmək üçün bir və ya bir neçə sütun ola bilər. Əsas açar olmadan, istədiyiniz sətirləri yeniləmək, dəyişdirmək və silmək çox çətindir.

SQL nədir?

SQL(İngilis dili - strukturlaşdırılmış sorğu dili) yalnız verilənlər bazası ilə işləmək üçün hazırlanmışdır və hazırda bütün məşhur DBMS üçün standartdır. Dilin sintaksisi az sayda operatordan ibarətdir və öyrənmək asandır. Ancaq xarici sadəliyə baxmayaraq, imkan verir sql yaradılması istənilən ölçülü verilənlər bazası ilə mürəkkəb əməliyyatlar üçün sorğular.

1992-ci ildən ANSI SQL adlı ümumi qəbul edilmiş standart mövcuddur. O, operatorların əsas sintaksisini və funksiyalarını müəyyənləşdirir və ORACLE kimi DBMS bazarının bütün liderləri tərəfindən dəstəklənir. Nümunələr dilin sadəliyini və imkanlarını aydın şəkildə göstərir:

  • verilənlər bazası və cədvəllərin yaradılması;
  • məlumatların seçilməsi;
  • qeydlər əlavə etmək;
  • məlumatların dəyişdirilməsi və silinməsi.

SQL məlumat növləri

Verilənlər bazası cədvəlindəki bütün sütunlar eyni tipli məlumatları saxlayır. SQL-də məlumat növləri digər proqramlaşdırma dillərində olduğu kimidir.

Cədvəllərin və verilənlər bazalarının yaradılması

SQL-də yeni verilənlər bazası, cədvəllər və digər sorğular yaratmağın iki yolu var:

  • DBMS konsolu vasitəsilə
  • Verilənlər bazası serverinə daxil olan interaktiv idarəetmə vasitələrindən istifadə.

Operator tərəfindən yeni verilənlər bazası yaradılır MƏLUMAT BAZASI YARADIN<наименование базы данных>; . Gördüyünüz kimi, sintaksis sadə və yığcamdır.

Aşağıdakı parametrlərlə CREATE TABLE ifadəsindən istifadə edərək verilənlər bazası daxilində cədvəllər yaradırıq:

  • masa adı
  • sütun adları və məlumat növləri

Nümunə olaraq, aşağıdakı sütunlardan ibarət Əmtəə cədvəlini yaradaq:

Cədvəl yaradırıq:

CƏDVƏL YARATIN Əmtəə

(əmtəə_id CHAR(15) NULL DEYİL,

vendor_id CHAR(15) NULL DEYİL,

əmtəə_adı CHAR(254) NULL,

əmtəə_qiyməti DECIMAL(8,2) NULL,

əmtəə_dec VARCHAR(1000) NULL);

Cədvəldə beş sütun var. Addan sonra məlumat növü gəlir, sütunlar vergüllə ayrılır. Sütun dəyəri boş ola bilər (NULL) və ya doldurulmalıdır (NULL DEYİL) və bu, cədvəl yaradılarkən müəyyən edilir.

Cədvəldən məlumatların seçilməsi

Məlumat seçimi operatoru ən çox istifadə edilən SQL sorğusudur. Məlumat əldə etmək üçün belə bir cədvəldən nəyi seçmək istədiyimizi göstərməlisiniz. Əvvəlcə sadə bir nümunə:

Əmtəədən əmtəə_adını SEÇİN

SELECT ifadəsindən sonra informasiyanın alınması üçün sütunun adını, FROM isə cədvəli müəyyən edir.

Sorğunun icrasının nəticəsi verilənlər bazasına daxil edildiyi ardıcıllıqla Əmtəə_adı dəyərləri olan bütün cədvəl sətirləri olacaq, yəni. heç bir çeşidləmə olmadan. Nəticəni sifariş etmək üçün əlavə ORDER BY bəndindən istifadə olunur.

Çoxsaylı sahələrə sorğu vermək üçün aşağıdakı nümunədə olduğu kimi onları vergüllə ayırın:

Əmtəədən əmtəə_id, əmtəə_adı, əmtəə_qiymətini SEÇİN

Sorğunun nəticəsi olaraq sətrin bütün sütunlarının qiymətini almaq mümkündür. Bunun üçün "*" işarəsi istifadə olunur:

Əmtəədən * SEÇİN

  • Əlavə olaraq SELECT dəstəkləyir:
  • Məlumatların çeşidlənməsi (SİPARİŞ BY ifadəsi)
  • Şərtlərə görə seçin (HARADA)
  • Qruplaşdırma termini (GROUP BY)

Xəttin əlavə edilməsi

Cədvələ sətir əlavə etmək üçün INSERT ifadəsi ilə SQL sorğularından istifadə olunur. Əlavə etmək üç yolla edilə bilər:

  • yeni bütöv bir xətt əlavə edin;
  • simin bir hissəsi;
  • sorğu nəticələri.

Tam sətir əlavə etmək üçün cədvəlin adını və yeni sətirin sütunlarının (sahələrinin) dəyərlərini göstərməlisiniz. Budur bir nümunə:

Əmtəə DƏYƏRLƏRİNƏ DAXİL EDİN("106 ", "50", "Coca-Cola", "1,68", "Spirtsiz ,)

Nümunə cədvələ yeni məhsul əlavə edir. Dəyərlər hər sütun üçün VALUES-dən sonra müəyyən edilir. Sütun üçün uyğun dəyər yoxdursa, NULL göstərilməlidir. Sütunlar cədvəl yaradılarkən göstərilən ardıcıllıqla dəyərlərlə doldurulur.

Əgər satırın yalnız bir hissəsini əlavə etsəniz, nümunədə olduğu kimi sütunların adlarını açıq şəkildə göstərməlisiniz:

INSERT INTO əmtəə (əmtəə_id, satıcı_id, əmtəə_adı)

DƏYƏRLƏR("106 ", '50", "Coca Cola",)

Biz yalnız məhsulun identifikatorlarını, təchizatçını və onun adını daxil etdik, qalan sahələri isə boş buraxdıq.

Sorğu nəticələrinin əlavə edilməsi

INSERT əsasən sətirlər əlavə etmək üçün istifadə olunur, lakin SELECT ifadəsinin nəticələrini əlavə etmək üçün də istifadə edilə bilər.

Məlumatı dəyişdirin

Verilənlər bazası cədvəlinin sahələrində məlumatları dəyişdirmək üçün YENİLƏNİB ifadəsindən istifadə etməlisiniz. Operator iki şəkildə istifadə edilə bilər:

  • Cədvəlin bütün sətirləri yenilənir.
  • Yalnız müəyyən bir xətt üçün.

UPDATE üç əsas elementdən ibarətdir:

  • dəyişiklik etmək lazım olan cədvəl;
  • sahə adları və onların yeni dəyərləri;
  • dəyişdirmək üçün sətirlərin seçilməsi şərtləri.

Məsələni nəzərdən keçirək. Tutaq ki, ID=106 olan məhsulun qiyməti dəyişib, ona görə də bu sıra yenilənməlidir. Aşağıdakı bəyanatı yazırıq:

YENİLƏNİN Əmtəə SET əmtəə_qiyməti = "3.2" HARADA əmtəə_id = "106"

Cədvəlin adını, bizim vəziyyətimizdə Əmtəə, yeniləmənin həyata keçiriləcəyi yeri, sonra SET-dən sonra - sütunun yeni dəyərini göstərdik və WHERE-də istədiyiniz ID dəyərini göstərərək istədiyiniz qeydi tapdıq.

Bir neçə sütunu dəyişdirmək üçün SET ifadəsindən sonra vergüllə ayrılmış çoxlu sütun-dəyər cütlərini təyin edin. Məhsulun adının və qiymətinin yeniləndiyi bir nümunəyə baxaq:

Əmtəə SETini YENİLƏNİB əmtəə_adı='Fanta', əmtəə_qiyməti = "3.2" HARADA əmtəə_id = "106"

Sütundakı məlumatı silmək üçün cədvəl strukturu icazə verərsə, onu NULL olaraq təyin edə bilərsiniz. Yadda saxlamaq lazımdır ki, NULL tam olaraq "yox" dəyəridir və mətn və ya rəqəm şəklində sıfır deyil. Məhsul təsvirini silin:

YENİLƏNİB Əmtəə SET-i commodity_desc = NULL HERE commodity_id = "106"

Sıraların çıxarılması

Cədvəldəki sətirləri silmək üçün SQL sorğuları DELETE əmri ilə yerinə yetirilir. İki istifadə halı var:

  • cədvəldəki müəyyən sətirlər silinir;
  • cədvəldəki bütün sətirlər silinir.

Cədvəldən bir sətirin silinməsinə misal:

commodity_id = "106" olduğu Əmtəədən SİLİN

DELETE FROM-dan sonra sətirlərin silinəcəyi cədvəlin adını müəyyənləşdiririk. WHERE bəndində sətirlərin silinməsi üçün seçiləcəyi şərt var. Nümunədə ID=106 olan məhsul xəttini silirik. HARADA qeyd etmək çox vacibdir. bu ifadəni buraxmaq cədvəldəki bütün sətirləri siləcək. Bu, sahələrin dəyərinin dəyişdirilməsinə də aiddir.

DELETE bəyanatı sütun adlarını və ya meta simvollarını göstərmir. O, sətirləri tamamilə silir, lakin bir sütunu silə bilməz.

Microsoft Access-də SQL-dən istifadə

Adətən interaktiv şəkildə cədvəllər, verilənlər bazaları yaratmaq, verilənlər bazasındakı məlumatları idarə etmək, dəyişdirmək, təhlil etmək və rahat interaktiv sorğu dizayneri (Query Designer) vasitəsilə SQL Access sorğularını həyata keçirmək üçün istifadə olunur, ondan istifadə edərək istənilən mürəkkəblikdə SQL ifadələrini yarada və dərhal icra edə bilərsiniz.

Serverə giriş rejimi də dəstəklənir, burada Access DBMS istənilən ODBC məlumat mənbəyinə SQL sorğularının generatoru kimi istifadə edilə bilər. Bu imkan Access proqramlarının istənilən formatla qarşılıqlı əlaqədə olmasına imkan verir.

SQL uzantıları

SQL sorğuları döngüler, filiallar və s. kimi prosedur proqramlaşdırma dillərinin bütün xüsusiyyətlərinə malik olmadığından, DBMS təchizatçıları qabaqcıl xüsusiyyətlərə malik SQL-in öz versiyasını hazırlayırlar. İlk növbədə, bu, saxlanılan prosedurlara və prosedur dillərinin standart operatorlarına dəstəkdir.

Dilin ən çox yayılmış dialektləri:

  • Oracle verilənlər bazası - PL/SQL
  • Interbase, Firebird - PSQL
  • Microsoft SQL Server - Transact-SQL
  • PostgreSQL - PL/pgSQL.

İnternetə SQL

MySQL DBMS GNU General Public License əsasında paylanır. Xüsusi modullar hazırlamaq imkanı olan kommersiya lisenziyası var. Onun ayrılmaz hissəsi kimi, XAMPP, WAMP və LAMP kimi internet serverlərinin ən populyar məclislərinə daxildir və İnternetdə proqramların hazırlanması üçün ən populyar DBMS-dir.

O, Sun Microsystems tərəfindən hazırlanıb və hazırda Oracle Corporation tərəfindən saxlanılır. 64 terabata qədər verilənlər bazalarını, SQL:2003 sintaksis standartını, verilənlər bazalarının replikasiyasını və bulud xidmətlərini dəstəkləyir.

Access-də sorğular verilənlər bazası cədvəllərində verilənlərin seçilməsi, yenilənməsi və işlənməsi üçün əsas vasitədir. Access, əlaqəli verilənlər bazası konsepsiyasına uyğun olaraq, sorğuları yerinə yetirmək üçün Strukturlaşdırılmış Sorğu Dilindən (SQL) istifadə edir. SQL ifadələrinin köməyi ilə Access-də istənilən sorğu həyata keçirilir.

Sorğunun əsas növü seçmə sorğudur. Bu sorğunun nəticəsi sorğu bağlanana qədər mövcud olan yeni cədvəldir. Sorğunun qurulduğu cədvəllərin qeydlərini birləşdirərək qeydlər formalaşdırılır. Cədvəl qeydlərinin birləşdirilməsi üsulu verilənlərin sxemində onların əlaqəsini təyin edərkən və ya sorğu yaratarkən müəyyən edilir. Sorğuda tərtib edilmiş seçim şərtləri cədvəllərin birləşməsinin nəticəsini təşkil edən qeydləri süzgəcdən keçirməyə imkan verir.

Access-də bir neçə növ sorğu yaradıla bilər:

  • nümunə sorğu- bir cədvəldən və ya sorğudan və ya bir neçə əlaqəli cədvəldən və digər sorğulardan məlumatları seçir. Nəticə sorğu bağlanana qədər mövcud olan cədvəldir. Nəticələr cədvəlinin qeydlərinin formalaşdırılması müəyyən edilmiş seçim şərtlərinə uyğun olaraq və bir neçə cədvəldən istifadə edildikdə onların qeydlərini birləşdirərək həyata keçirilir;
  • cədvəl yaratmaq üçün sorğu- əlaqəli cədvəllərdən və digər sorğulardan məlumatları seçir, lakin seçmə sorğudan fərqli olaraq nəticəni yeni daimi cədvəldə saxlayır;
  • yeniləmək, əlavə etmək, silmək üçün sorğular- hərəkət sorğularıdır, nəticədə cədvəllərdəki məlumatlar dəyişdirilir.

Dizayn rejimində Access-də sorğular istifadə olunan cədvəlləri əks etdirən məlumat sxemini və sorğu cədvəlinin strukturunun və qeydlərin seçilməsi şərtlərinin qurulduğu sorğu formasını ehtiva edir (şək. 4.1).

Sorğudan istifadə edərək, aşağıdakı məlumat emalı növlərini həyata keçirə bilərsiniz:

  • istifadəçi tərəfindən seçilmiş cədvəl sahələrini sorğu cədvəlinə daxil etmək;
  • alınan qeydlərin hər birində hesablamalar aparmaq;
  • seçim meyarlarına cavab verən qeydləri seçin;
  • əlaqəli cədvəllərin qeydlərinin birləşməsi əsasında yeni virtual cədvəl yaratmaq;
  • bir və ya bir neçə sahədə eyni dəyərlərə malik olan, eyni zamanda qrupun digər sahələrində statistik funksiyaları yerinə yetirən və nəticəyə hər qrup üçün bir qeyd daxil edən qrup qeydləri;
  • mövcud cədvəllərdən verilənlərdən istifadə etməklə yeni verilənlər bazası cədvəli yaratmaq;
  • qeydlərin seçilmiş alt dəstindəki sahələri yeniləmək;
  • verilənlər bazası cədvəlindən qeydlərin seçilmiş alt çoxluğunu silmək;
  • qeydlərin seçilmiş alt dəstini başqa cədvələ əlavə edin.

Access-də sorğular digər sorğular, formalar, hesabatlar üçün qeyd mənbəyi kimi xidmət edir. Sorğudan istifadə edərək, bir neçə cədvəldən müəyyən bir mövzu sahəsi sənədini formalaşdırmaq üçün tam məlumat toplaya bilərsiniz, sonra ondan forma yaratmaq üçün istifadə edə bilərsiniz - bu sənədin elektron təqdimatı. Əgər forma və ya hesabat bir neçə əlaqəli cədvəl əsasında sehrbaz tərəfindən yaradılıbsa, o zaman sorğu mənbəyi kimi onlar üçün avtomatik olaraq yaradılır.
Düzəltmək üçün video təlimatına baxın.

SQL verilənlər bazasından məlumatları əldə etmək üçün istifadə olunur. SQL ingilis dilinə çox bənzəyən, lakin verilənlər bazası idarəetmə proqramları üçün nəzərdə tutulmuş proqramlaşdırma dilidir. Access-də hər bir sorğuda SQL istifadə olunur.

SQL-in necə işlədiyini başa düşmək sizə daha dəqiq sorğular yaratmağa kömək edir və yanlış nəticələr verən sorğuları düzəltməyi asanlaşdırır.

Bu məqalə Access üçün SQL məqalələr seriyasının bir hissəsidir. O, məlumatların əldə edilməsi üçün SQL-dən istifadənin əsaslarını təsvir edir və SQL sintaksisinin nümunələrini təqdim edir.

Bu məqalədə

SQL nədir?

SQL faktlar toplusu və onlar arasındakı əlaqələrlə işləmək üçün nəzərdə tutulmuş proqramlaşdırma dilidir. Microsoft Office Access kimi əlaqəli verilənlər bazası proqramları verilənlərin manipulyasiyası üçün SQL-dən istifadə edir. Bir çox proqramlaşdırma dillərindən fərqli olaraq, SQL hətta yeni başlayanlar üçün də oxumaq və başa düşmək asandır. Bir çox proqramlaşdırma dilləri kimi, SQL də ISO və ANSI kimi standartlar komitələri tərəfindən tanınan beynəlxalq standartdır.

Verilənlər dəsti suallara cavab vermək üçün SQL-də təsvir edilmişdir. SQL-dən istifadə edərkən düzgün sintaksisdən istifadə edilməlidir. Sintaksis dilin elementlərini düzgün birləşdirməyə imkan verən qaydalar toplusudur. SQL sintaksisiİngilis sintaksisinə əsaslanır və Visual Basic for Applications (VBA) dil sintaksisi ilə bir çox elementləri paylaşır.

Məsələn, Mary adlı kontaktların soyadlarının siyahısını əldə edən sadə SQL ifadəsi belə görünə bilər:

Soyadı SEÇİN
Kontaktlardan
WHERE First_Name = "Məryəm";

Qeyd: SQL dili yalnız verilənlər üzərində əməliyyatları yerinə yetirmək üçün deyil, həm də verilənlər bazası obyektlərinin, məsələn, cədvəllərin strukturunu yaratmaq və dəyişdirmək üçün istifadə olunur. SQL-in verilənlər bazası obyektlərini yaratmaq və dəyişdirmək üçün istifadə olunan hissəsi DDL adlanır. DDL bu məqalədə əhatə olunmur. əlavə informasiya bax Data Definition Sorğu ilə Cədvəllər və ya İndekslər yaradın və dəyişdirin.

SELECT ifadələri

SELECT ifadəsi SQL-də verilənlər toplusunu təsvir etmək üçün istifadə olunur. O, verilənlər bazasından əldə ediləcək məlumat dəstinin tam təsvirini, o cümlədən aşağıdakıları ehtiva edir:

    məlumatları ehtiva edən cədvəllər;

    müxtəlif mənbələrdən alınan məlumatlar arasında əlaqə;

    məlumatların seçildiyi sahələr və ya hesablamalar;

    sorğunun nəticəsinə daxil edilmiş məlumatların yerinə yetirməli olduğu seçim şərtləri;

    ehtiyac və çeşidləmə üsulu.

SQL ifadələri

SQL ifadəsi bəndlər adlanan bir neçə hissədən ibarətdir. SQL ifadəsindəki hər bir bəndin bir məqsədi var. Bəzi təkliflər məcburidir. Aşağıdakı cədvəldə ən çox istifadə olunan SQL ifadələri verilmişdir.

SQL bəndi

Təsvir

Məcburi

İstədiyiniz məlumatları ehtiva edən sahələri müəyyən edir.

SELECT bəndində göstərilən sahələri ehtiva edən cədvəlləri müəyyən edir.

Nəticələrə daxil olan bütün qeydlərin cavab verməli olduğu sahə seçimi meyarlarını müəyyən edir.

Nəticələr üçün çeşidləmə qaydasını təyin edir.

Ümumi funksiyaları ehtiva edən SQL ifadəsində SELECT bəndində heç bir xülasə dəyəri hesablanmayan sahələri müəyyən edir.

Yalnız belə sahələr varsa

Ümumi funksiyaları ehtiva edən SQL ifadəsində SELECT bəndində ümumi dəyərin hesablandığı sahələrə tətbiq edilən şərtləri müəyyən edir.

SQL şərtləri

Hər bir SQL cümləsi nitq hissələri ilə müqayisə oluna 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əli hissəsi

Tərif

Misal

identifikator

isim

Sahə adı kimi verilənlər bazası obyektini müəyyən etmək üçün istifadə edilən ad.

Müştərilər.[Telefon Nömrəsi]

operator

fel və ya zərf

Fəaliyyəti təmsil edən və ya dəyişdirən açar söz.

Sabit

isim

Dəyişməyən dəyər, məsələn, rəqəm və ya NULL.

ifadə

sifət

Tək qiymətə qiymətləndirən 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ı:

SEÇİM sahəsi_1
Cədvəldən_1
HARADA meyar_1
;

Qeydlər:

    Access SQL ifadəsindəki sətir fasilələrinə hörmət etmir. Buna baxmayaraq, SQL ifadəsinin həm onu ​​yazan şəxs, həm də başqaları üçün asan oxunması üçün hər cümləni yeni sətirdən başlamaq tövsiyə olunur.

    Hər SELECT ifadəsi nöqtəli vergül (;) ilə bitir. Nöqtəli vergül ya sonuncu cümlənin sonunda, ya da SQL ifadəsinin sonunda ayrıca sətirdə ola bilər.

Access-də nümunə

Aşağıdakı nümunə sadə seçim sorğusu üçün Access-də SQL ifadəsinin necə görünə biləcəyini göstərir.

1. SELECT bəndi

2. FROM bəndi

3. WHERE bəndi

SQL sintaksisinin necə işlədiyini başa düşmək üçün nümunəni cümlələrə bölək.

SELECT bəndi

SELECT , Şirkət

Bu SELECT bəndidir. O, iki identifikatordan sonra ("[E-poçt ünvanı]" və "Şirkət") (SEÇİM) ifadəsini ehtiva edir.

Əgər identifikatorda boşluqlar varsa və ya xüsusi işarələr(məsələn, "E-poçt ünvanı"), kvadrat mötərizə içərisində olmalıdır.

SELECT bəndində siz sahələr olan cədvəlləri göstərməyə ehtiyac yoxdur və siz nəticələrə daxil ediləcək məlumatların yerinə yetirməli olduğu seçim şərtlərini təyin edə bilməzsiniz.

SELECT ifadəsində SELECT bəndi həmişə FROM bəndindən əvvəl gəlir.

FROM bəndi

Kontaktlardan

Bu FROM bəndidir. O, ifadəni (FROM) və ardınca identifikatordan (Əlaqə) ehtiva edir.

FROM bəndi seçiləcək sahələri müəyyən etmir.

WHERE bəndi

WHERE City="Seattle"

Bu WHERE bəndidir. O, (HARADA) operatorundan sonra ifadədən ibarətdir (Şəhər="Rostov").

SELECT, FROM və WHERE bəndləri ilə çox şey edə bilərsiniz. Bu təkliflərdən necə istifadə etmək barədə ətraflı məlumat üçün aşağıdakı məqalələrə baxın:

Nəticələri çeşidləyin: SİFARİŞ ET

Microsoft Excel kimi, Access də cədvəldəki sorğunun nəticələrini çeşidləməyə imkan verir. ORDER BY bəndindən istifadə edərək, sorğu yerinə yetirildikdə nəticələrin necə çeşidlənəcəyini də təyin edə bilərsiniz. Əgər ORDER BY bəndi istifadə olunursa, o, SQL ifadəsinin sonunda olmalıdır.

ORDER BY bəndi çeşidləmənin tətbiq olunacağı eyni ardıcıllıqla çeşidlənəcək sahələrin siyahısını ehtiva edir.

Tutaq ki, məsələn, siz nəticələri ilk olaraq "Şirkət" sahəsinə görə azalan qaydada çeşidləmək istəyirsiniz, sonra isə "Şirkət" sahəsində eyni dəyərə malik qeydlər varsa, onları "E-poçt ünvanı" üzrə çeşidləyin. " sahəsi artan qaydada. ORDER BY bəndi belə görünür:

ŞİRKƏT DESC TARAFINDAN SİFARİŞ,

Qeyd: Varsayılan olaraq, Access dəyərləri artan qaydada (A-dan Z-yə, kiçikdən böyüyə) çeşidləyir. Əvəzində dəyərləri azalan qaydada çeşidləmək üçün müəyyən etməlisiniz açar söz DESC.

ORDER BY bəndi haqqında ətraflı məlumat üçün ORDER BY bəndinə baxın.

Xülasə məlumatları ilə işləmək: GROUP BY və HAVING bəndləri

Bəzən ümumi aylıq satışlar və ya stokda olan ən bahalı əşyalar kimi ümumi məlumatlarla işləmək lazımdır. Bunun üçün SELECT bəndi sahəyə ümumi funksiya tətbiq edir. Məsələn, sorğunun nəticəsi hər bir şirkət üçün e-poçt ünvanlarının sayını qaytarmaqdırsa, SELECT bəndi belə görünə bilər:

Bir və ya digərindən istifadə etmək imkanı məcmu funksiya sahədə verilənlərin 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 Ümumi Funksiyaları məqaləsinə baxın.

Ümumi funksiyada istifadə edilməyən sahələrin təyin edilməsi: GROUP BY bəndi

Ümumi funksiyalardan istifadə edərkən adətən GROUP BY bəndi yaratmalısınız. GROUP BY bəndi toplama funksiyasının tətbiq olunmadığı bütün sahələri müəyyən edir. Əgər məcmu funksiyalar sorğunun bütün sahələrinə tətbiq edilirsə, sizə GROUP BY bəndi yaratmağa ehtiyac yoxdur.

GROUP BY bəndi, WHERE bəndi yoxdursa, dərhal WHERE və ya FROM bəndindən sonra gəlməlidir. GROUP BY bəndində sahələr SELECT bəndində olduğu kimi eyni ardıcıllıqla müəyyən edilir.

Əvvəlki nümunəyə davam edək. Əgər SELECT bəndi yalnız [E-poçt ünvanı] sahəsinə aqreqasiya funksiyasını tətbiq edirsə, o zaman GROUP BY bəndi belə görünür:

Şirkətə görə Qrup

GROUP BY bəndi haqqında ətraflı məlumat üçün GROUP BY bəndinə baxın.

Qruplaşdırma şərtləri ilə məcmu dəyərlərin məhdudlaşdırılması: HAVING bəndi

Nəticələri məhdudlaşdırmaq üçün şərtləri müəyyən etmək istəyirsinizsə, lakin onları tətbiq etmək istədiyiniz sahə ümumi funksiyada istifadə olunursa, siz WHERE bəndindən istifadə edə bilməzsiniz. Əvəzində HAVING bəndindən istifadə edilməlidir. HAVING bəndi WHERE bəndi ilə eyni işləyir, lakin ümumiləşdirilmiş məlumatlar üçün istifadə olunur.

Tutaq ki, məsələn, AVG funksiyası (orta dəyəri hesablayır) SELECT bəndindəki birinci sahəyə tətbiq edilir:

SELECT COUNT(), Şirkət

Əgər siz COUNT funksiyasının dəyəri əsasında sorğu nəticələrini məhdudlaşdırmaq istəyirsinizsə, WHERE bəndində bu sahəyə 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ı olduqda sətirləri qaytarmasını istəyirsinizsə, aşağıdakı HAVING bəndindən istifadə edə bilərsiniz:

COUNT()>1

Qeyd: Sorğuya həm WHERE bəndində, həm də HAVING bəndində daxil ola bilər, bunun üçün WHERE bəndində göstərilən ümumi funksiyalarda istifadə edilməyən sahələr üçün şərtlər və ümumi funksiyalarda istifadə olunan sahələr üçün şərtlər HAVING bəndində göstərilmişdir. .

HAVING bəndi haqqında ətraflı məlumat üçün HAVING bəndinə baxın.

Sorğu Nəticələrinin Birləşdirilməsi: UNION Operatoru

UNION operatoru birləşmiş dəst kimi çoxsaylı oxşar seçmə sorğular tərəfindən qaytarılan bütün məlumatlara eyni vaxtda baxmaq üçün istifadə olunur.

UNION operatoru iki SELECT ifadəsini bir yerdə birləşdirməyə imkan verir. Birləşdirilmiş SELECT ifadələri eyni və ya uyğun məlumat növləri ilə çıxış sahələrinin eyni sayda və sırasına malik olmalıdır. Sorğu icra edildikdə, hər bir uyğun sahə dəstindən alınan məlumatlar bir çıxış sahəsinə birləşdirilir, buna görə də sorğunun çıxışı hər bir SELECT ifadəsi qədər sahəyə malikdir.

Qeyd: Birlik sorğularında ədədi və mətn məlumat növləri uyğun gəlir.

UNION operatorundan istifadə edərək, əgər varsa, təkrar sətirlərin sorğu nəticələrinə daxil edilib-edilməməsini təyin edə bilərsiniz. Bunu etmək üçün ALL açar sözündən istifadə edin.

İki SELECT ifadəsini birləşdirən sorğu aşağıdakı əsas sintaksisə malikdir:

SEÇİM sahəsi_1
Cədvəldən_1
BİRLİK
SEÇİN sahə_a
Cədvəldən_a
;

Tutaq ki, "Məhsullar" və "Xidmətlər" adlı iki cədvəl var. Hər iki cədvəldə məhsul və ya xidmətin adı, qiymət və zəmanət məlumatı, həmçinin təklif olunan məhsul və ya xidmətin müstəsnalığını göstərən sahələr var. Baxmayaraq ki, "Məhsullar" və "Xidmətlər" cədvəlləri təqdim edir fərqli növlər zəmanətlər, əsas məlumat eynidir (ayrı-ayrı məhsullar və ya xidmətlər üçün keyfiyyət zəmanətinin təmin edilib-edilməməsi). İki cədvəldən dörd sahəni birləşdirmək üçün aşağıdakı qoşulma sorğusundan istifadə edə bilərsiniz:

Ad, qiymət, zəmanət_mövcud, eksklüziv_təklif SEÇİN
Məhsullardan
BÜTÜN BİRLİK
Ad, qiymət, zəmanət_mövcud, eksklüziv_təklif SEÇİN
FROM Xidmətlər
;

UNION operatorundan istifadə edərək SELECT ifadələrinin birləşdirilməsi haqqında ətraflı məlumat üçün məqaləyə baxın

"Mağaza" təhsil layihəsinin təsviri

Cədvəl keçid sxemi

Cədvəllərin təsviri

m_kateqoriya - məhsul kateqoriyaları

m_income - malların qəbulu

m_nəticə - malların istehlakı

m_product - kataloq, məhsul təsviri

m_supplier - kataloq; təchizatçı məlumat

m_unit - kataloq; vahidlər

Bu dərslikdə verilən nümunələri praktiki olaraq yoxlamaq üçün sizdə aşağıdakı proqram təminatı olmalıdır:

Microsoft Access 2003 və ya daha sonra.

MS Access-də SQL sorğusu. Başlamaq

Cədvəlin məzmununu görmək üçün sol paneldə cədvəlin adına iki dəfə klikləyin:

Cədvəl sahəsində redaktə rejiminə keçmək üçün yuxarı paneldə Dizayn rejimini seçin:

SQL sorğusunun nəticəsini göstərmək üçün sol paneldə sorğu adının üzərinə iki dəfə klikləyin:

SQL sorğusunun redaktə rejiminə keçmək üçün yuxarı paneldə SQL rejimini seçin:

SQL sorğusu. MS Access-də nümunələr. SEÇİN: 1-10

SQL sorğusunda verilənlər bazası cədvəllərindən seçim etmək üçün SELECT ifadəsi istifadə olunur.

SQL sorğusu Q001.İstədiyiniz ardıcıllıqla yalnız tələb olunan sahələri əldə etmək üçün nümunə SQL sorğusu:

SELECT dt, product_id, məbləğ


m_gəlirdən;

SQL sorğusu Q002. Bu SQL sorğu nümunəsində ulduz simvolu (*) m_product cədvəlinin bütün sütunlarını göstərmək üçün, başqa sözlə, m_product əlaqəsinin bütün sahələrini əldə etmək üçün istifadə olunur:

SEÇİN*
FROM m_product;

SorğuSQLQ003. DISTINCT ifadəsi dublikat qeydləri aradan qaldırmaq və bir çox unikal qeydlər əldə etmək üçün istifadə olunur:

FƏRQLİ məhsul_id SEÇİN


m_gəlirdən;

SQL sorğusu Q004. ORDER BY ifadəsi qeydləri müəyyən bir sahənin dəyərlərinə görə çeşidləmək (sifariş etmək) üçün istifadə olunur. Sahənin adı ORDER BY bəndindən sonra gəlir:

SEÇİN*
m_gəlirdən


qiymətə görə SİFARİŞ;

SQL sorğusu Q005. ASC ifadəsi ORDER BY ifadəsinə əlavə olaraq istifadə olunur və artan çeşidi müəyyən etmək üçün istifadə olunur. DESC ifadəsi ORDER BY ifadəsinə əlavə olaraq istifadə olunur və azalan çeşidi müəyyən etmək üçün istifadə olunur. Nə ASC, nə də DESC göstərilmədiyi halda, ASC-nin olması (defolt) qəbul edilir:

SEÇİN*
m_gəlirdən


dt DESC BY SİFARİŞ , qiymət;

SQL sorğusu Q006. Cədvəldən lazımi qeydləri seçmək üçün seçim şərtini ifadə edən müxtəlif məntiqi ifadələrdən istifadə olunur. Boolean ifadəsi WHERE bəndindən sonra gəlir. m_income cədvəlindən məbləğin dəyəri 200-dən çox olan bütün qeydləri əldə etmək nümunəsi:

SEÇİN*
m_gəlirdən


HARADA məbləğ>200;

SQL sorğusu Q007. Mürəkkəb şərtləri ifadə etmək üçün istifadə edin məntiqi əməliyyatlar AND (bağlama), OR (dizyunksiya) və NOT (məntiqi inkar). m_outcome cədvəlindən məbləğ dəyəri 20 və qiymət dəyəri 10-dan böyük və ya ona bərabər olan bütün qeydləri əldə etməyə nümunə:

qiymət


m_nəticədən
HARƏDƏ məbləğ=20 VƏ qiymət>=10;

SQL sorğusu Q008.İki və ya daha çox cədvəldəki məlumatları birləşdirmək üçün INNER JOIN, LEFT JOIN, RIGHT JOIN ifadələrindən istifadə edin. Aşağıdakı nümunə dt, product_id, məbləğ, qiymət sahələrini m_income cədvəlindən və başlıq sahəsini m_product cədvəlindən alır. m_income cədvəlinin qeydi m_product cədvəlinin qeydinə m_income.product_id dəyəri m_product.id dəyərinə bərabər olduqda bağlanır:



ON m_income.product_id=m_product.id;

SQL sorğusu Q009. Bu SQL sorğusunda diqqət etməli olduğunuz iki şey var: 1) axtarış mətni tək dırnaq içərisindədir ("); 2) tarix MS üçün düzgün olan #Month/Day/Year# formatındadır. Giriş. Digər sistemlərdə tarix formatı fərqli ola bilər. 12 iyun 2011-ci il tarixində südün qəbulu haqqında məlumatın göstərilməsi nümunəsi. Tarix formatına diqqət yetirin #6/12/2011#:

SELECT dt, product_id, başlıq, məbləğ, qiymət


FROM m_income DAXİLİ QOŞULUN m_product

WHERE title="Milk" And dt=#6/12/2011#; !}

SQL sorğusu Q010. BETWEEN təlimatı bir sıra dəyərlərin ona aid olub olmadığını yoxlamaq üçün istifadə olunur. 1 iyun və 30 iyun 2011-ci il tarixləri arasında alınan mallar haqqında məlumatı əks etdirən nümunə SQL sorğusu:

SEÇİN*
FROM m_income DAXİLİ QOŞULUN m_product


ON m_income.product_id=m_product.id
HARADA dt #6/1/2011# və #6/30/2011# ARASINDA;

SQL sorğusu. MS Access-də nümunələr. SEÇİN: 11-20

Bir SQL sorğusu digərinə daxil edilə bilər. Alt sorğu sorğu daxilindəki sorğudan başqa bir şey deyil. Tipik olaraq, alt sorğu WHERE bəndində istifadə olunur. Ancaq alt sorğulardan istifadə etməyin başqa yolları da var.

Sorğu Q011. Kodları da m_income cədvəlində olan m_product cədvəlindəki məhsullar haqqında məlumatları göstərir:

SEÇİN*
m_məhsulundan


WHERE id IN (m_income FROM product_id SEÇİN);

Sorğu Q012. m_product cədvəlindən kodları m_outcome cədvəlində olmayan məhsulların siyahısı göstərilir:

SEÇİN*
m_məhsulundan


İD OLMADIĞINDA (m_nəticədən məhsul_id SEÇİN);

Sorğu Q013. Bu SQL sorğusu m_income cədvəlində kodları olan, lakin m_outcome cədvəlində olmayan kodların və məhsul adlarının unikal siyahısını qaytarır:

SEÇİN DISTINCT product_id, başlıq


FROM m_income DAXİLİ QOŞULUN m_product
ON m_income.product_id=m_product.id
WHERE product_id IN YOX (m_nəticədən məhsul_id SEÇİN);

Sorğu Q014. Kateqoriyaların unikal siyahısı m_kateqoriya cədvəlində göstərilir, adları M hərfi ilə başlayır:

DISTINCT başlığı SEÇİN


m_məhsulundan
"M*" kimi başlıq;

Sorğu Q015. Sorğuda sahələr üzrə hesab əməliyyatlarının yerinə yetirilməsi və sorğuda sahələrin adının dəyişdirilməsi nümunəsi (ləqəb). Bu nümunə, mənfəətin satışın 7 faizini nəzərə alaraq, hər bir məhsulun istehlak qeydi üçün xərc = kəmiyyət*qiymət və mənfəəti hesablayır:


məbləğ*qiymət/100*7 AS mənfəət
FROM m_outcome;

Sorğu Q016. Arifmetik əməliyyatları təhlil edərək və sadələşdirərək, sorğunun icra sürətini artıra bilərsiniz:

Dt, məhsul_id, məbləğ, qiymət, məbləğ*qiymət AS nəticə_cəmi,


nəticə_cəmi*0,07 AS mənfəət
FROM m_outcome;

Q017 sorğusu. INNER JOIN ifadəsindən istifadə edərək, bir neçə cədvəldən məlumatları birləşdirə bilərsiniz. Aşağıdakı misalda, ctgry_id dəyərindən asılı olaraq, m_income cədvəlindəki hər bir giriş məhsulun aid olduğu m_kateqoriya cədvəlindəki kateqoriyanın adı ilə uyğunlaşdırılır:

c.title, b.title, dt, məbləğ, qiymət, məbləğ*qiymət gəlir_summa kimi SEÇİN


FROM (m_gəlir DAXİLİ QOŞULMA KİMİ m_product AS b ON a.product_id=b.id)
İNNER JOIN m_category AS c ON b.ctgry_id=c.id
SİFARİŞ C.title, b.title;

Sorğu Q018. SUM - cəm, COUNT - kəmiyyət, AVG - arifmetik orta, MAX - maksimum dəyər, MIN - minimum qiymət kimi funksiyalar məcmu funksiyalar adlanır. Onlar birdən çox dəyər alır və emal edildikdə bir dəyər qaytarır. SUM məcmu funksiyasından istifadə edərək sahələrin məbləğinin və qiymətinin məhsulunun cəminin hesablanması nümunəsi:

Cəmi_məblək kimi CƏMİ(məbləğ*qiymət) SEÇİN


m_gəlirdən;

Sorğu Q019.Çoxlu məcmu funksiyalardan istifadə nümunəsi:

Məbləği (məbləği) Məbləğ_Məbləği, AVG(məbləği) Məbləğ_AVG AS SEÇİN,


MAX(məbləğ) AS Məbləğ_Maks, Min(məbləğ) AS Məbləğ_Min,
Say(*) AS Ümumi_Sayı
m_gəlirdən;

Q020 sorğusu. Bu misalda 2011-ci ilin iyun ayında alınan kodu 1 olan bütün maddələrin cəmi hesablanır:

Cəmi(məbləğ*qiymət) gəlir_cəmi kimi SEÇİN


m_gəlirdən
HARADA product_id=1 VƏ dt #6/1/2011# VƏ #6/30/2011# ARASINDA;.

Q021 sorğusu. Aşağıdakı SQL sorğusu 4 və ya 6 kodlu malların nə qədər satıldığını hesablayır:

Nəticə_cəmi kimi Cəmi (məbləğ*qiymət) SEÇİN


m_nəticədən
HARADA product_id=4 OR product_id=6;

Sorğu Q022. 12 iyun 2011-ci il tarixində 4 və ya 6 kodu olan malların hansı məbləğdə satıldığı hesablanır:

Nəticə_cəmi kimi Cəmi (məbləğ*qiymət) SEÇİN


m_nəticədən
HARADA (məhsul_id=4 OR məhsul_id=6) VƏ dt=#6/12/2011#;

Sorğu Q023. Vəzifə budur. "Bişmiş məhsullar" kateqoriyasındakı malların kreditləşdirildiyi ümumi məbləği hesablayın.

Bu problemi həll etmək üçün üç cədvəl üzərində işləməlisiniz: m_income, m_product və m_category, çünki:


- kreditləşdirilmiş malların miqdarı və qiyməti m_gəlir cədvəlində saxlanılır;
- hər bir məhsulun kateqoriya kodu m_product cədvəlində saxlanılır;
- kateqoriya başlığının adı m_category cədvəlində saxlanılır.

Bu problemi həll etmək üçün aşağıdakı alqoritmdən istifadə edirik:


- alt sorğu vasitəsilə m_kateqoriya cədvəlindən “Bişmiş məmulatlar” kateqoriya kodunun müəyyən edilməsi;
- hər bir kreditləşdirilmiş məhsulun kateqoriyasını müəyyən etmək üçün m_income və m_product cədvəllərinə qoşulmaq;
- kateqoriya kodu yuxarıdakı alt sorğu ilə müəyyən edilmiş koda bərabər olan mallar üçün qəbz məbləğinin (= kəmiyyət * qiymət) hesablanması.
SEÇİN
m_product-DAN DAXİLİ QOŞULMA KİMİ m_gəlir AS b ON a.id=b.product_id
WHERE ctgry_id = (SEÇ id FROM m_category WHERE title="Bişmiş mallar"); !}

Sorğu Q024."Bişmiş məhsullar" kateqoriyasına aid malların ümumi məbləğinin hesablanması problemi aşağıdakı alqoritmlə həll ediləcək:
- m_kateqoriya cədvəlindən onun məhsul_id dəyərindən asılı olaraq m_gəlir cədvəlinin hər bir qeydi kateqoriyanın adına uyğun gəlir;
- kateqoriyası "Bişmiş məhsullar"a bərabər olan qeydləri seçin;
- gəlirin məbləğini hesablayın = kəmiyyət * qiymət.

FROM (m_məhsul DAXİLİ QOŞULMA KİMİ m_gəlir AS b ON a.id=b.product_id)

WHERE c.title="Bişmiş məmulatlar"; !}

Sorğu Q025. Bu nümunə neçə maddənin istehlak edildiyini hesablayır:

COUNT(məhsul_id) məhsul_cnt kimi SEÇİN


FROM (SEÇİN DISTINCT product_id FROM m_outcome) AS t;

Sorğu Q026. Qeydləri qruplaşdırmaq üçün GROUP BY bəndindən istifadə olunur. Tipik olaraq, qeydlər bir və ya bir neçə sahənin dəyərinə görə qruplaşdırılır və hər bir qrupa ümumi əməliyyat tətbiq edilir. Məsələn, aşağıdakı sorğu malların satışı haqqında hesabat yaradır. Yəni, malların adlarını və satıldıqları məbləği ehtiva edən bir cədvəl yaradılır:

Başlıq SEÇİN, SUM(məbləğ*qiymət) nəticə_cəmi AS


FROM m_product DAXİLİ QOŞULMA KİMİ m_nəticə AS b
ON a.id=b.product_id
GROUP BY BY;

Sorğu Q027. Kateqoriya üzrə satış hesabatı. Yəni, məhsul kateqoriyalarının adlarını, bu kateqoriyaların mallarının satıldığı ümumi məbləği və satışın orta məbləğini ehtiva edən bir cədvəl yaradılır. ROUND funksiyası orta dəyəri ən yaxın yüzliyə yuvarlaqlaşdırmaq üçün istifadə olunur (onluq ayırıcıdan sonra ikinci onluq yer):

SEÇİN c.başlıq, SUM(məbləğ*qiymət) nəticə_cəmi,


ROUND(AVG(məbləğ*qiymət),2) nəticə_cəm_orta
FROM (m_məhsul DAXİLİ QOŞULMA KİMİ m_nəticə AS b ON a.id=b.product_id)
INNER JOIN m_category AS c ON a.ctgry_id=c.id
c.başlığa görə qruplaşdırmaq;

Sorğu Q028. Hər bir məhsul üçün onun qəbzlərinin ümumi və orta sayı hesablanır və mədaxillərinin ümumi sayı ən azı 500 ədəd olan mallar haqqında məlumat göstərilir:

məhsul_id SEÇİN, SUM(məbləğ) məbləği_sum,


Dəyirmi(Ort(məbləğ),2) AS məbləğ_orta
m_gəlirdən
məhsul_idinə görə qruplaşdırın
Məbləğin (məbləğin) OLMASI>=500;

Sorğu Q029. Bu sorğu hər bir maddə üzrə onun 2011-ci ilin ikinci rübündə daxilolmalarının cəmini və orta hesablamasını hesablayır. Malların qəbulunun ümumi məbləği 1000-dən az deyilsə, bu məhsul haqqında məlumat göstərilir:

Başlıq SEÇİN, SUM(məbləğ*qiymət) gəlir_cəmi AS


FROM m_come a DAXİLİ QOŞULUN m_product b ON a.product_id=b.id
HARADA dt #4/1/2011# VƏ #6/30/2011# ARASINDA
Başlığa görə qruplaşdırın
MƏBLƏĞİN OLMASI(məbləğ*qiymət)>=1000;

Sorğu Q030. Bəzi hallarda hansısa cədvəlin hər bir qeydini digər cədvəlin hər bir qeydi ilə uyğunlaşdırmaq lazımdır; dekart məhsulu adlanır. Belə birləşmə nəticəsində yaranan cədvəl Dekart cədvəli adlanır. Məsələn, bəzi A cədvəlində 100, B cədvəlində isə 15 giriş varsa, onda onların Dekart cədvəli 100*15=150 qeyddən ibarət olacaq. Aşağıdakı sorğu m_income cədvəlindəki hər girişi m_outcome cədvəlindəki hər girişlə birləşdirir:
m_gəlirdən, m_nəticədən;

Sorğu Q031. Qeydləri iki sahə üzrə qruplaşdırmaq nümunəsi. Aşağıdakı SQL sorğusu hər bir təchizatçı üçün ondan alınan malların miqdarını və miqdarını hesablayır:


SUM(məbləğ*qiymət) gəlir_cəmi kimi

Sorğu Q032. Qeydləri iki sahə üzrə qruplaşdırmaq nümunəsi. Aşağıdakı sorğu hər bir təchizatçı üçün bizim tərəfimizdən satılan məhsullarının miqdarını və miqdarını hesablayır:

təchizatçı_id, məhsul_id, SUM(məbləğ) məbləği_sum,




təchizatçı_id, məhsul_idinə görə Qrup;

Sorğu Q033. Bu nümunədə yuxarıdakı iki sorğu (q031 və q032) alt sorğular kimi istifadə olunur. Bu sorğuların nəticələri LEFT JOIN metodundan istifadə edərək bir hesabatda birləşdirilir. Aşağıdakı sorğuda hər bir təchizatçı üçün alınan və satılan məhsulların sayı və miqdarı haqqında hesabat göstərilir. Diqqət yetirməlisiniz ki, əgər hansısa məhsul artıq gəlibsə, lakin hələ satılmayıbsa, bu qeyd üçün nəticə_cəmi xanası boş olacaq. bu sorğu yalnız istifadə nümunəsidir mürəkkəb sorğular alt sorğu kimi. Performans sorğu verilmişdir Böyük miqdarda verilənlərə malik SQL şübhəlidir:

SEÇİN*
FROM



SUM(məbləğ*qiymət) gəlir_cəmi kimi

ON a.product_id=b.id QROUP BY BY təchizatçı_id, product_id) AS a
SOL QOŞULUN
(təchizatçı_id, məhsul_id, SUM(məbləğ) məbləği_sum,
SUM(məbləğ*qiymət) nəticə_cəmi
m_nəticədən DAXİLİ QOŞULMA KİMİ m_product AS b
ON a.product_id=b.id GROUP BY BY təchizatçı_id, product_id) AS b
ON (a.product_id=b.product_id) VƏ (a.supplier_id=b.supplier_id);

Sorğu Q034. Bu nümunədə yuxarıdakı iki sorğu (q031 və q032) alt sorğular kimi istifadə olunur. Bu sorğuların nəticələri RIGTH JOIN metodundan istifadə edərək bir hesabatda birləşdirilir. Aşağıdakı sorğu hər bir müştərinin istifadə etdiyi ödəniş sistemləri üçün ödənişlərinin məbləği və etdikləri investisiyaların məbləği haqqında hesabat çap edir. Aşağıdakı sorğuda hər bir təchizatçı üçün alınan və satılan məhsulların sayı və miqdarı haqqında hesabat göstərilir. Nəzərə alın ki, əgər məhsul artıq satılıbsa, lakin hələ alınmayıbsa, bu giriş üçün gəlir_sum xanası boş olacaq. Belə boş hüceyrələrin olması satışın uçotunda səhvin göstəricisidir, çünki satışdan əvvəl ilk növbədə müvafiq məhsulun gəlməsi lazımdır:

SEÇİN*
FROM


(təchizatçı_id, məhsul_id, SUM(məbləğ) məbləği_sum,
SUM(məbləğ*qiymət) gəlir_cəmi kimi
m_gəlirDƏN DAXİLİ QOŞULMA KİMİ m_product AS b ON a.product_id=b.id
təchizatçı_id, məhsul_id) GROUP BY a
SAĞ QOŞULUN
(təchizatçı_id, məhsul_id, SUM(məbləğ) məbləği_sum,
SUM(məbləğ*qiymət) nəticə_cəmi
m_nəticədən DAXİLİ QOŞULMA KİMİ m_product AS b ON a.product_id=b.id
təchizatçı_id, məhsul_id) BY BY QRUPLA b
ON (a.təchizatçı_id=b.təchizatçı_id) VƏ (a.məhsul_id=b.məhsul_id);

Sorğu Q035. Məhsullar üzrə gəlir və xərclərin məbləği haqqında hesabat göstərilir. Bunun üçün m_gəlir və m_nəticə cədvəllərinə uyğun məhsulların siyahısı yaradılır, sonra bu siyahıdan hər bir məhsul üçün m_gəlir cədvəlinə uyğun olaraq onun daxilolmalarının cəmi və m_nəticə cədvəlinə uyğun olaraq xərclərinin cəmi hesablanır:

məhsul_id, gəlir_məbləği AS SUM(məbləğlə) SEÇİN,


SUM(xarici_məbləğ) nəticə_məbləği AS
FROM
(məhsul identifikatorunu SEÇİN, məbləğdə AS, məbləğdə 0 AS xaric
m_gəlirdən
BÜTÜN BİRLİK
SEÇİN məhsul_id, 0 AS məbləğində, məbləğ AS out_abcount
FROM m_nəticə) AS t
GROUP BY product_id;

Sorğu Q036. EXISTS funksiyası ona ötürülən çoxluq elementlərdən ibarətdirsə, TRUE qaytarır. EXISTS funksiyası ona ötürülən çoxluq boşdursa, yəni heç bir elementi yoxdursa FALSE qaytarır. Aşağıdakı sorğu həm m_income cədvəlində, həm də m_outcome cədvəlində olan məhsul kodlarını qaytarır:

FƏRQLİ məhsul_id SEÇİN


FROM m_come AS a
MÖVCUD VAR(m_nəticədən məhsul_id SEÇİN AS b

Sorğu Q037. Həm m_income cədvəlində, həm də m_outcome cədvəlində olan məhsul kodları göstərilir:

FƏRQLİ məhsul_id SEÇİN


FROM m_come AS a
WHERE product_id IN (m_nəticədən məhsul_id SEÇİN)

Sorğu Q038. m_income cədvəlində olduğu kimi, lakin m_outcome cədvəlində olmayan məhsul kodları göstərilir:

FƏRQLİ məhsul_id SEÇİN


FROM m_come AS a
MÖVCUD OLMAYAN YERDƏ(m_nəticədən məhsul_id SEÇİN AS b
WHERE b.məhsul_id=a.məhsul_id);

Sorğu Q039.Ən yüksək satış məbləği olan məhsulların siyahısı göstərilir. Alqoritm belədir. Hər bir məhsul üçün onun satışlarının məbləği hesablanır. Sonra bu məbləğlərin maksimumu müəyyən edilir. Sonra hər bir məhsul üçün onun satışlarının məbləği yenidən hesablanır və satışların cəmi maksimuma bərabər olan kod və malların satışının cəmi göstərilir:

məhsul_id, SUM(məbləğ*qiymət) məbləği_sum kimi SEÇİN


m_nəticədən
məhsul_idinə görə qruplaşdırın
MƏMBƏ OLAN(məbləğ*qiymət) = (MAX(s_miqdar) SEÇİN
FROM (məhsulun_idinə görə m_nəticə QRUPUDAN s_məbləğ KİMİ SUM(məbləğ*qiymət) SEÇİN));

Sorğu Q040. IIF (şərti operator) sözü məntiqi ifadəni qiymətləndirmək və nəticədən asılı olaraq hərəkəti yerinə yetirmək üçün istifadə olunur (TRUE və ya FALSE). Aşağıdakı misalda, miqdar 500-dən az olarsa, malın çatdırılması "kiçik" sayılır. Əks halda, yəni qəbz miqdarı 500-dən çox və ya ona bərabər olarsa, çatdırılma "böyük" sayılır:

SELECT dt, product_id, məbləğ,


IIF(m_gəlirdən məbləğ;

SQL sorğusu Q041. IIF ifadəsinin bir dəfədən çox istifadə edildiyi halda onu SWITCH ifadəsi ilə əvəz etmək daha rahatdır. SWITCH operatoru (çox seçim operatoru) məntiqi ifadəni qiymətləndirmək və nəticədən asılı olaraq hərəkəti yerinə yetirmək üçün istifadə olunur. Aşağıdakı misalda, partiyadakı malların miqdarı 500-dən az olarsa, təhvil verilmiş lot “kiçik” sayılır. Əks halda, yəni malın miqdarı 500-dən çox və ya ona bərabər olarsa, lot “böyük” sayılır. ":

SELECT dt, product_id, məbləğ,


SWITCH(məbləğ =500,"böyük") AS işarəsi
m_gəlirdən;

Sorğu Q042. Növbəti sorğuda daxil olan partiyada malların miqdarı 300-dən azdırsa, o zaman partiya “kiçik” sayılır. Əks halda, yəni şərt məbləği SELECT dt, product_id, məbləğ,
IIF(məbləğ IIF(m_gəlirdən məbləğ;

SQL sorğusu Q043. Növbəti sorğuda daxil olan partiyada malların miqdarı 300-dən azdırsa, o zaman partiya “kiçik” sayılır. Əks halda, yəni şərt məbləği SELECT dt, product_id, məbləğ,
SWITCH(məbləğin məbləği>=1000,"böyük") AS işarəsi
m_gəlirdən;

SQL sorğusu Q044. Aşağıdakı sorğuda satışlar üç qrupa bölünür: kiçik (150-yə qədər), orta (150-dən 300-ə qədər), böyük (300 və daha çox). Sonra, hər bir qrup üçün ümumi məbləğ hesablanır:

Kateqoriya SEÇİN, SUM(nəticə_cəmi) Ctgry_Total


FROM (məbləği*nəticə_cəmi kimi qiymət seçin,
IIf(məbləğ*qiymət IIf(məbləğ*qiymət m_nəticədən) AS t
Kateqoriyaya görə Qrup;

SQL sorğusu Q045. DateAdd funksiyası verilən tarixə günlər, aylar və ya illər əlavə etmək və yeni tarix əldə etmək üçün istifadə olunur. Növbəti sorğu:
1) dt sahəsindən tarixə 30 gün əlavə edin və göstərin yeni tarix dt_plus_30d sahəsində;
2) dt sahəsindən tarixə 1 ay əlavə edin və dt_plus_1m sahəsində yeni tarixi göstərin:

SEÇİN dt, dateadd("d",30,dt) AS dt_plus_30d, dateadd("m",1,dt) AS dt_plus_1m


m_gəlirdən;

SQL sorğusu Q046. DateDiff funksiyası iki tarix arasındakı fərqi müxtəlif vahidlərdə (günlər, aylar və ya illər) hesablamaq üçün nəzərdə tutulmuşdur. Aşağıdakı sorğu dt sahəsindəki tarix ilə cari tarix arasındakı fərqi günlər, aylar və illərlə hesablayır:

SEÇİN dt, DateDiff("d",dt,Tarix()) AS son_gün,


DateDiff("m",dt,Date()) AS son_aylar,
DateDiff("yyyy",dt,Tarix()) AS son_illər
m_gəlirdən;

SQL sorğusu Q047. Malların qəbul edildiyi gündən (cədvəl m_gəlir) cari tarixə qədər olan günlərin sayı DateDiff funksiyasından istifadə etməklə hesablanır və son istifadə tarixi müqayisə edilir (cədvəl m_məhsul):


DateDiff("d",dt,Date()) AS son_günlər
m_gəlirDƏN DAXİLİ QOŞULMA KİMİ m_product AS b
ON a.product_id=b.id;

SQL sorğusu Q048. Malların qəbul edildiyi tarixdən cari tarixə qədər olan günlərin sayı hesablanır, sonra bu rəqəmin istifadə müddətini keçib-keçməməsi yoxlanılır:

SELECT a.id, product_id, dt, lifedays,


DateDiff("d",dt,Date()) AS son_günlər, IIf(son_günlər>həyat günləri,"Bəli","Xeyr") AS date_expire
m_gəlirdən a DAXİLİ QOŞUL m_məhsulu b
ON a.product_id=b.id;

SQL sorğusu Q049. Malların qəbul edildiyi tarixdən cari tarixə qədər olan ayların sayı hesablanır. month_last1 sütunu ayların mütləq sayını, month_last2 sütunu tam ayların sayını hesablayır:

dt, DateDiff("m",dt,Tarix()) AS ay_son1, SEÇİN


DateDiff("m",dt,Tarix())-iif(gün(dt)>gün(tarix()),1,0) AS ay_son2
m_gəlirdən;

SQL sorğusu Q050. 2011-ci il üçün alınan malların miqdarı və miqdarı haqqında rüblük hesabat göstərilir:

SEÇİM kvartal, SUM(nəticə_cəmi) AS Ümumi


FROM (SEÇİN məbləğ*qiymət AS nəticə_cəm, ay(dt) AS m,
KÖVÇƏ(m =10.4) AS kvartal
m_gəlirdən HARADA il(dt)=2011) AS t
QRUP BY blok;

Sorğu Q051. Aşağıdakı sorğu istifadəçilərin malların qəbulu məbləğindən çox olan məbləğə malların istehlakı haqqında məlumatı sistemə daxil edə bilib-bilmədiyini öyrənməyə kömək edir:

məhsul_id SEÇİN, SUM(cəmdə) gəlir_cəmi AS, SUM(xərc_cəm) nəticə_cəmi AS


FROM (məhsul_id-i SEÇİN, məbləğ*qiymət daxildə, 0 xaric kimi
m_gəlirindən
BÜTÜN BİRLİK
məhsul_id-sini SEÇİN, cəmi kimi 0, cəmi kimi məbləğ*qiymət
m_nəticədən) AS t
məhsul_idinə görə qruplaşdırın
CƏMİ VAR (cəmdə)
Sorğu Q052. Sorğunun qaytardığı sətirlərin nömrələnməsi müxtəlif üsullarla həyata keçirilir. Məsələn, siz MS Access-in özündən istifadə etməklə MS Access-də hazırlanmış hesabatın sətirlərini yenidən nömrələyə bilərsiniz. Siz həmçinin proqramlaşdırma dillərindən, məsələn, VBA və ya PHP-dən istifadə edərək yenidən nömrələyə bilərsiniz. Ancaq bəzən bunu SQL sorğusunun özündə etmək lazımdır. Beləliklə, aşağıdakı sorğu ID sahəsinin dəyərlərinin artan sırasına uyğun olaraq m_income cədvəlinin sətirlərini nömrələyəcəkdir:

COUNT(*) N, b.id, b.məhsul_id, b.miqdar, b.qiymət kimi SEÇİN


FROM m_income a DAXİLİ QOŞUL m_gəlir b ON a.id QRUP BY b.id, b.məhsul_id, b.miqdar, b.qiymət;

Sorğu Q053. Satış məbləğinə görə məhsullar arasında ilk beşlik göstərilir. İlk beş qeydin çıxışı TOP təlimatından istifadə etməklə həyata keçirilir:

TOP 5, məhsul_id, cəm(məbləğ*qiymət) cəm kimi SEÇİN


m_nəticədən
məhsul_idinə görə qruplaşdırın
məbləğə görə SİFARİŞ(məbləğ*qiymət) DESC;

Sorğu Q054. Satışların həcminə görə məhsullar arasında ilk beşlik göstərilir və nəticədə sətirlər nömrələnir:

COUNT(*) N, b.məhsul_id, b.summa kimi SEÇİN


FROM


FROM m_outcome GROUP BY BY product_id) AS a
DAXİLİ QOŞULUN
(məhsul identifikatorunu seçin, cəmi(məbləğ*qiymət) cəmi,
summa*10000000+məhsul_id AS id
FROM m_outcome QRUP BY product_id) AS b
ON a.id>=b.id
QRUPLA B.məhsul_id, b.summa
COUNT (*) SAYIB (*) SİPARİŞİNİN OLMASI;

Sorğu Q055. Aşağıdakı SQL sorğusu MS Access SQL-də COS, SIN, TAN, SQRT, ^ və ABS riyazi funksiyalarının istifadəsini göstərir:

SEÇ (m_income-dən say(*) seçin) N kimi, 3.1415926 pi, k,


2*pi*(k-1)/N x, COS(x) COS_, SIN(x) SIN_, TAN(x) TAN_,
SQR(x) SQRT_ kimi, x^3 "x^3", ABS(x) ABS_ kimi
FROM (SAYI(*) K AS SEÇİN
m_gəlirDƏN DAXİLİ QOŞULMA KİMİ m_income AS b ON a.idGROUP BY BY) t;

SQL sorğusu. MS Access-də nümunələr. YENİLƏNİB: 1-10

U001 sorğusu. Aşağıdakı SQL dəyişiklik sorğusu m_income cədvəlində 3 kodu olan maddələrin qiymətlərini 10% artırır:

YENİLƏNİB m_gəlir SET qiyməti = qiymət*1.1


HARADA məhsul_id=3;

U002 sorğusu. Aşağıdakı SQL yeniləmə sorğusu m_income cədvəlindəki bütün məhsulların kəmiyyətini adları "Kərə yağı" sözü ilə başlayan 22 vahid artırır:

YENİLƏNİB m_gəlir SET məbləği = məbləğ+22


WHERE product_id IN (m_product FROM identifikatoru "Neft*" KİMİ başlığı SEÇİN HARADA);

U003 sorğusu. m_outcome cədvəlində aşağıdakı SQL dəyişiklik sorğusu OOO Sladkoe tərəfindən istehsal olunan bütün malların qiymətlərini 2 faiz azaldır:

YENİLƏNİB m_nəticə SET qiyməti = qiymət*0.98


məhsul_id HARADA
(m_product-dan a.id SEÇİN və İNNER JOIN m_supplier b
ON a.supplier_id=b.id WHERE b.title="OOO)"Сладкое"");. !}

SQL sorğusu SQL ifadələrindən istifadə etməklə yaradılmış sorğudur. SQL (Structured Query Language) sorğular yaratmaq və Microsoft Access verilənlər bazası kimi əlaqəli verilənlər bazalarını yeniləmək və idarə etmək üçün istifadə olunur.

İstifadəçi Sorğu Dizaynı görünüşündə sorğu yaratdıqda, Microsoft Access avtomatik olaraq ekvivalent SQL ifadəsini yaradır. Yalnız SQL rejimində edilə bilən bir sıra sorğular var. Təcrübəli proqramçılar tez-tez SQL-də ifadəni dərhal yazmağı sorğu yaratmaqdan daha asan tapırlar.

Konstruktorda sorğu növü:

Mürəkkəb hesablamalarla nəticə əldə etmək üçün ardıcıl olaraq bir neçə sorğu verməlisiniz. Aydındır ki, bu hərəkətlər istifadəçi müdaxiləsi olmadan avtomatik olaraq həyata keçirilməlidir.

Bunun üçün bir neçə ardıcıl yerinə yetirilən əmrlərdən ibarət makrolardan istifadə olunur.

Sorğularda hesablamalar, düsturlar yaratmaq və redaktə etmək bacarığı.

Sorğu sxemində göstərilən cədvəllərdən sahələr üçün istənilən hesablamaları təyin edə bilərsiniz.

Hesablamaları yerinə yetirmək üçün sorğuya əlavə hesablanmış sahələr əlavə etməlisiniz, onların dəyərləri digər sorğu sahələrinin dəyərlərinə əsasən hesablanır.

Yekun sorğular, qruplaşdırma, yekun funksiyalar.

Son sorğu rejimindən istifadə etməklə yaradılır - Xülasə sorğusu.

Bağlantı cədvəli də daxil olmaqla üç cədvəldən istifadə edilə bilər.

Bu halda, sorğunun istənilən yerindən (sağ siçan düyməsini) kontekst menyusuna zəng edə və "qrup əməliyyatları" funksiyasını seçə bilərsiniz.

Sorğu forması görünəcək yeni xətt Qruplaşdırma.

Cəmi funksiyalar: cəmləri hesablamaq istədiyimiz sahədə seçilmiş sahələrin bütün dəyərlərini yekunlaşdırmaq üçün siyahıdan "Cəmi" funksiyasını seçin. Count funksiyası sahə dəyərlərinin sayını hesablayacaq. microsoft məlumat redaktəsi

Sorğu hər hansı məlumat əməliyyatlarını yerinə yetirmək üçün DBMS-ə edilən çağırışdır: ümumi həcmdən məlumatların bir hissəsini seçmək, hesablanmış sahələri əlavə etmək, məlumatların kütləvi şəkildə dəyişdirilməsi və s.

Müraciətdə siz:

  • - bir neçə əlaqəli cədvəldən məlumat seçin;
  • - mürəkkəb seçim şərtlərindən istifadə etmək;
  • - istifadəçi parametr dəyərlərini özü daxil edə, hesablanmış sahələr əlavə edə bilər;
  • - Son hesablamaları aparın.

Müraciət növləri:

  • - nümunə;
  • - cədvəl yaratmaq;
  • - yenilənmə (məlumatların dəyişdirilməsi);
  • - qeydlərin əlavə edilməsi;
  • - qeydlərin silinməsi.

Sorğular formalar və hesabatlar üçün qeyd mənbələri kimi istifadə olunur. Əksər hallarda, həm formalarda, həm də hesabatlarda, verməzdən əvvəl bəzi şərtlərə uyğun olaraq məlumatların bir hissəsini seçmək və məlumatları çeşidləmək lazımdır. Bu istəklərlə edilir. Sorğu ayrıca saxlanıla və ya forma və ya hesabatla əlaqələndirilə bilər.

Microsoft Access-də bir neçə növ sorğu var.