SQL sorğularından istifadə edərək Access verilənlər bazasında məlumatların seçilməsi. Başlayanlar üçün SQL üzrə illüstrasiyalı dərslik Girişdə sql dilində sorğu

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 proqram sistemləri tərtibatçıları üçün eyni terminlərin müxtəlif şərhləri səbəbindən çoxlu "ağ ləkələ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.

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.

DBMS Girişi

Microsoft Access müasir verilənlər bazası idarəetmə sistemlərinə xas olan bütün alətləri və imkanları əsaslı şəkildə balanslaşdıran DBMS-nin əlaqəli növüdür. Əlaqəli verilənlər bazası məlumatların tapılmasını, təhlilini, saxlanmasını və qorunmasını asanlaşdırır, çünki onlar bir yerdə saxlanılır. İngilis dilindən tərcümədə Access "giriş" deməkdir. MS Access ən güclü, çevik və istifadəsi asan DBMS-lərdən biridir. Proqramın bir sətrini yazmadan orada əksər proqramlar yarada bilərsiniz, lakin çox mürəkkəb bir şey yaratmaq lazımdırsa, bu halda MS Access güclü proqramlaşdırma dilini - Visual Basic Tətbiqini təqdim edir.

Microsoft Access DBMS-nin populyarlığı aşağıdakı səbəblərlə bağlıdır:

Tədqiqatda əlçatanlıq və başa düşülənlik Access-in onlardan biri olmasına imkan verir ən yaxşı sistemlər verilənlər bazası idarəetmə proqramlarının sürətli yaradılması;

OLE texnologiyasından istifadə etmək bacarığı;

Microsoft Office paketi ilə inteqrasiya;

Veb texnologiyalarına tam dəstək;

Vizual texnologiya hərəkətlərinizin nəticələrini daim görməyə və onları düzəltməyə imkan verir;

Obyektlərin inkişafı üçün böyük bir "usta" dəstinin olması.

Proqramın işlədiyi obyektlərin əsas növləri bunlardır: cədvəl, sorğu, forma, hesabat, səhifə, makro, modul.

Cədvəl məlumatları saxlamaq üçün istifadə olunan bir obyektdir. Hər bir cədvələ obyekt haqqında məlumat daxildir müəyyən növ. Cədvəldə müxtəlif növ məlumatları saxlayan sahələr (sütunlar) və qeydlər (sətirlər) var. Hər cədvəl üçün əsas açar müəyyən edilməlidir (hər qeyd üçün bir sahə unikal dəyər və ya hər bir cədvəl qeydi üçün unikal identifikator olan məcmu dəyəri hər bir qeyd üçün unikal olan bir neçə sahə.

Məlumata çıxış sürətini artırmaq üçün cədvəlin ayrı-ayrı sahələrini (və ya onların birləşməsini) indekslər elan etmək olar. İndeks, əsas dəyərlərdən istifadə etməklə cədvəldə axtarışı və çeşidlənməsini sürətləndirən, cədvəl sətirlərinin unikallığını təmin etməyə imkan verən alətdir. Cədvəlin əsas açarı avtomatik olaraq indeksləşdirilir. Bəzi məlumat növləri olan sahələr üçün indekslərin yaradılmasına icazə verilmir.

Sorğu istifadəçiyə bir və ya bir neçə cədvəldən istədiyi məlumatları əldə etməyə imkan verən obyektdir. Siz həmçinin artıq mövcud olan bir və ya bir neçə cədvəlin məlumatlarından istifadə edərək yeni cədvəllər yaratmaq üçün sorğulardan istifadə edə bilərsiniz. Ən çox yayılmış sorğu növü seçmə sorğudur. Seçilmiş sorğu müəyyən şərtlərə əsasən bir və ya bir neçə cədvəldən məlumatları seçir və sonra onları istədiyiniz ardıcıllıqla göstərir.

Forma ilk növbədə məlumatların daxil edilməsi, ekranda göstərilməsi və ya proqramın işinə nəzarət üçün nəzərdə tutulmuş obyektdir.

Hesabat - daha sonra çap edilə bilən və ya başqa bir tətbiqin sənədinə daxil edilə bilən bir sənəd yaratmaq üçün nəzərdə tutulmuş obyekt.

vizual inkişaf proqramlaşdırma bazası

Səhifə - Cari Access verilənlər bazasındakı məlumatlara daxil olmaq üçün istifadə olunur.

Makro, Access-in konkret hadisəyə cavab olaraq yerinə yetirməli olduğu bir və ya bir neçə hərəkətin strukturlaşdırılmış təsviri olan obyektdir.

Modul, bir prosesi daha kiçik addımlara bölməyə və makrolardan istifadə etməklə tapılmayan səhvləri aşkar etməyə imkan verən Microsoft Visual Basic proqramlarını ehtiva edən obyektdir.

DBMS Start - Programs - Microsoft Access tərəfindən işə salınır. Fayl - Yeni əmrini yerinə yetirin.

Verilənlər bazası obyektləri ilə işləmək üçün interfeys vahiddir. Onların hər biri üçün standart iş rejimləri mövcuddur: Yaratmaq (obyektlərin strukturunu yaratmaq); Konstruktor (obyektlərin strukturunun dəyişdirilməsi); Açıq (View, Run - verilənlər bazası obyektləri ilə işləmək üçün nəzərdə tutulmuşdur).

SQL sorğu dili

1986-cı ildən SQL (Structured Query Language - strukturlaşdırılmış sorğu dili). standart relational verilənlər bazası dilidir. Xüsusilə, Access və Excel proqramlarında istifadə olunur.

SQL saxlanılan məlumatları təsvir etmək, saxlanılan məlumatları çıxarmaq və verilənləri dəyişdirmək üçün nəzərdə tutulmuş informasiya-məntiqi dildir. Əvvəlcə SQL istifadəçinin verilənlər bazası ilə işləməsinin əsas üsulu idi və cədvəllər yaratmağa, cədvəllərə yeni qeydlər əlavə etməyə, cədvəllərdən qeydləri çıxarmağa, qeydləri silməyə və cədvəl strukturlarını dəyişdirməyə imkan verən kiçik əmrlər (operatorlar) dəsti idi. Artan mürəkkəbliyə görə SQL dili daha çox tətbiq olunan proqramlaşdırma dilinə çevrildi və istifadəçilər vizual sorğu qurucularından istifadə edə bildilər.

SQL dili operatorlar toplusudur:

verilənlərin təyini operatorları (Data Definition Language, DDL);

məlumatların manipulyasiya operatorları (Data Manipulation Language, DML);

verilənlərə çıxış tərifi operatorları (Data Control Language, DCL);

Transaction Control Language (TCL) ifadələri.

MS Access-də sorğular SQL dilindən istifadə etməklə saxlanılır və həyata keçirilir. Əksər sorğular qrafik alətlərdən (şablon sorğularından) istifadə etməklə yaradıla bilsə də, onlar SQL ifadələri kimi saxlanılır. Bəzi hallarda (məsələn, alt sorğularda) yalnız SQL istifadə edilə bilər.

SQL qeyri-prosedur dilidir. O, sadəcə olaraq nə edilməli olduğunu bəyan edir və icrası DBMS-ə (verilənlər bazasının idarəetmə sistemi) həvalə olunur.

SQL üç dəyərli məntiqdən istifadə edir. Ənənəvi məntiqi TRUE və FALSE ilə yanaşı, NULL (UNKNOWN və ya NO DATA) istifadə olunur.

Əməliyyatlar digər proqramlaşdırma dillərində olduğu kimi ayrı-ayrı elementlər üzərində deyil, bütün verilənlər topluları üzərində aparılır.

SQL sorğusu ifadələrdən ibarətdir. Hər bir təlimat bir neçə bənddən ibarət ola bilər.

Vaxt keçdikcə proses Microsoft Office Access (Access) fayl-server verilənlər bazasını müştəri-server DBMS formatına köçürməyi tələb edə bilər. Bu məqsədlə adətən ODBC istifadə olunur. Bununla belə, Microsoft SQL Serverə (MS SQL) köçürmək üçün Access və MS SQL DBMS-də rahat xüsusi alətlər var.

Verilənlər bazasını Access-dən MS SQL-ə köçürməyin üç yolu var. Onların hamısını iki cədvəldən və bir sorğudan ibarət sadə verilənlər bazası nümunəsində nəzərdən keçirin.

İstifadə edərək verilənlər bazasını köçürməkAccess ("Format çevirmək üçün sehrbazdırSQLserver")

Köçürməyə başlamaq üçün "Verilənlər bazası ilə işləmək" sekmesinin "Məlumat Hərəkəti" sahəsində "SQL Server" düyməsini sıxmalısınız.

Açılan pəncərədə məlumatların hara köçürüləcəyini seçməlisiniz.

İki seçim var:

  1. Mövcud MS SQL verilənlər bazasına ixrac etmək;
  2. Yeni verilənlər bazası yaradın (standart).

Verilənlər bazasını köçürəcəyimiz serverin adını, yaradılan verilənlər bazasının adını təyin edirik və qoşulma üçün istifadəçi adı və şifrəni təyin edirik.

Bir cədvəl seçmək üçün ">" düyməsini, bütün cədvəlləri seçmək üçün isə ">>" düyməsini istifadə edin. Köçürmədən imtina etmək üçün düymələr "<» и «<<» соответственно.

Cədvəlləri seçdikdən sonra onların köçürülməsi üçün əlavə seçimlər təyin edə bilərsiniz. Xüsusilə, Access-in müasir versiyaları yalnız məlumat cədvəllərinin özlərini deyil, həm də onlar arasındakı əlaqələri ixrac edə bilər. Bu, verilənlər bazası köçürmələri üçün tələb olunan vaxtı xeyli azaldır, çünki köçdən sonra onların yenidən yaradılmasına ehtiyac yoxdur.

  • Access istifadəçi interfeysi ilə yeni müştəri-server proqramı yaradın;
  • Köçürülmüş cədvəlləri mənbə verilənlər bazasına xarici kimi daxil edin (defolt);
  • Mənbə verilənlər bazası ilə heç nə etməyin.

Bütün lazımi məlumatlar toplandıqdan sonra, ya yoxlama üçün əvvəlki addımlardan birinə qayıda bilərsiniz, ya da "Bitir" düyməsini klikləməklə köçürmə prosesinə başlaya bilərsiniz.

Köçürmə prosesinin gedişi xüsusi pəncərədə aydın şəkildə göstərilir.

Miqrasiya tamamlandıqdan sonra SQL Server Management Studio-nu aça və nəticəni görə bilərsiniz.

Bu üsul ən sadə və rahatdır, lakin təəssüf ki, yalnız cədvəlləri və onları müşayiət edən elementləri (indekslər, əlaqələr və s.) ötürməyə imkan verir.

Verilənlər bazasının idxalıGiriş vasitələriMicrosoftSQLserver

MS SQL müxtəlif mənbələrdən məlumatları idxal edə bilər. Lakin Access-dən birbaşa idxal yalnız köhnə formatlı (.mdb) verilənlər bazası üçün mümkündür.

Bu cür verilənlər bazalarının idxalı üçün ətraflı təlimatları tapa bilərsiniz.

Yeni formatların (2007 və yuxarı) verilənlər bazalarının idxalı daha çətindir.

Bu problemi həll etməyin iki yolu var:

  • Əvvəlcə Access verilənlər bazasını köhnə formata ixrac edin.
    Bu halda yuxarıdakı linkdə verilən təlimatlardan asanlıqla istifadə edə bilərsiniz;
  • ODBC-dən istifadə.
    Access verilənlər bazası üçün MS SQL Server vasitəsilə sonrakı əlaqə ilə məlumat mənbəyinin yaradılması.

Təəssüf ki, ODBC yanaşması Windows-un 64-bit versiyalarında olduqca mürəkkəbdir.

Səbəb MS SQL-in 64-bit versiyalarının SQL Server Management Studio-nun 32-bit versiyaları ilə birləşdirilmiş olmasıdır. Bu hal o deməkdir ki, 64 bitlik drayverlər əsasında məlumat mənbələri yaradılmış Access verilənlər bazaları bu proqramdan istifadə etməklə idxal edilə bilməz.

Yenə iki çıxış yolu var (yalnız qrafik interfeysdən istifadə edən üsullar deməkdir):

  • Windows, MS SQL, Office proqramlarının 32 bit versiyalarından istifadə etmək;
  • Yalnız 32-bit Access-dən istifadə edin və 32-bit ODBC menecerindən istifadə edərək məlumat mənbəyini konfiqurasiya edin (adətən C:\Windows\SysWOW64\odbcad32.exe);
  • MS SQL ilə işləmək üçün alternativ proqram təminatından istifadə edin.

Bununla belə, siz hələ də idxal prosesini qura bilsəniz belə, bunun faydaları sərf olunan vaxt və səydən çox az ola bilər.

İdxal edərkən, yalnız cədvəllərin özləri və onların məzmunu köçürülür və başqa heç bir şey yoxdur (əvvəlki metodun imkanları ilə müqayisə edin).

Onu da qeyd etmək lazımdır ki, Access-dən birbaşa idxalla sorğuların ixracı ilə bağlı problem qismən həll olunur (ODBC vasitəsilə sorğulara giriş yoxdur). Lakin, standart olaraq, sorğular adi cədvəllər şəklində MS SQL verilənlər bazasına idxal olunur.

Xoşbəxtlikdən, idxal parametrlərini dəqiq tənzimləmək mümkündür və görünüş yaratmaq üçün sorğu ilə cədvəl yaratmaq üçün SQL sorğusunu əl ilə əvəz edə bilərsiniz.

Bunu etmək üçün, seçilmiş Access sorğusu üçün yuxarıdakı ekran görüntüsünün pəncərəsində "Dəyişdir" düyməsini basın.

Açılan pəncərədə "Change SQL ..." düyməsini sıxın

SQL sorğusunun redaktə pəncərəsi açılacaq, bu pəncərədə əslində avtomatik olaraq yaradılan sorğunu əvəz etməlisiniz.

öz ilə.

Nəticədə, Access-dən sorğu MS SQL verilənlər bazasına cədvəl deyil, görünüş kimi düzgün köçürüləcək.

Əlbəttə ki, belə tənzimləmələr zəhmətli əl əməyidir, bu da müəyyən bilik və bacarıq tələb edir, amma yenə də, necə deyərlər, "heç nədən yaxşıdır".

Buna görə də Access verilənlər bazalarının MS SQL-ə köçürülməsinin bu üsulu hər iki DBMS-də ixtisaslı mütəxəssislər üçün daha uyğundur.

Aşağıda Windows-un 32-bit versiyasında ODBC-dən istifadə edərək Access verilənlər bazasını idxal etmək nümunəsidir. Windows-un 64-bit versiyasında, Access-in 32-bit versiyasından istifadə edərkən, idxal oxşardır, lakin məlumat mənbəyi 32-bit ODBC menecerində yaradılır.

Məlumat mənbəyi yaradırıq.

Açılan pəncərədə onun adını daxil edin.

Sonra "Seç" düyməsini basın və hansı Access verilənlər bazasına qoşulmaq istədiyinizi göstərin.

Mənbə adı və verilənlər bazası faylı göstərildikdə, “Ok” düyməsini sıxmaq qalır və istədiyiniz Access verilənlər bazası üçün məlumat mənbəyi hazırdır.

İndi siz birbaşa verilənlər bazasını MS SQL-ə idxal etməyə davam edə bilərsiniz.

Bunu etmək üçün, idxal etmək istədiyiniz verilənlər bazasının kontekst menyusunda "Tapşırıqlar" -\u003e "Məlumatları idxal et" elementlərini seçin.

"Məlumatların İdxal və İxrac Sihirbazı" açılacaq

"Məlumat Mənbəsi" açılan siyahısında siz "Odbc üçün .Net Framework Data Provider" (əgər defolt olaraq seçilməyibsə) seçməlisiniz və cədvəldəki Dsn sətirində Access üçün yuxarıda yaradılmış məlumat mənbəyinin adını göstərməlisiniz. verilənlər bazası. Bağlantı sətri ("Bağlantı sətri") avtomatik olaraq yaradılacaq.

Sonra, hansı verilənlər bazasını, MS SQL idxalının hansı nümunəsini təyin etməlisiniz. Bunu etmək üçün, "Növbəti" düyməsini kliklədikdən sonra "Təyinat" açılan siyahıdan ya "Microsoft SQL Server Native Client" (aşağıdakı ekran görüntüsündə göstərildiyi kimi) və ya "SQL Server üçün Microsoft OLE DB Provayderi" seçin. bağlantılar üçün istədiyiniz verilənlər bazası istifadəçi adı və parol.

Sonra idxal ediləcək cədvəlləri seçməlisiniz. Yuxarıda qeyd edildiyi kimi, ODBC istifadə edərkən, Access sorğularını idxal etmək mümkün deyil. Buna görə, idxal ediləcək obyektlərin siyahısı ilə əvvəlki ekran görüntüsündən fərqli olaraq, bu siyahıda yalnız cədvəllər olacaq.

Onay qutularının köməyi ilə siz həm bütün cədvəlləri birdən seçə bilərsiniz (bu, bu nümunədə edilir), həm də bəzilərini fərdi olaraq.

Sonra idxal prosesi üçün son parametrləri olan bir pəncərə görünəcək. Bütün standart dəyərləri buraxaq.

"Bitir" düyməsini basdıqdan sonra idxal prosesi başa çatacaq. Hər şey düzgün aparılırsa və idxal uğurlu olarsa, idxal haqqında məlumat olan pəncərədə səhvlər olmayacaq (aşağıdakı ekran görüntüsünə baxın).

Sihirbazı tamamlamaq üçün "Bağla" düyməsini sıxmaq kifayətdir.

Nəticə SQL Server Management Studio tərəfindən görülə bilər.

Vasitələrlə verilənlər bazasının yan tərəfdən ötürülməsiODBC

Bu üsul Access-dən verilənlərin hər hansı digər DBMS-yə ixracı üçün universaldır. ODBC ilə işləməyi dəstəkləməsi kifayətdir.

Belə bir ixrac nümunəsi daha əvvəl "" məqaləsində müzakirə edilmişdir.

üçünXanımSQL verilənlər bazasını köçürmək üçün yol verirGiriş tələb olunmur, çünki yalnız verilənləri olan cədvəllər, sorğular isə yalnız adi cədvəllər kimi ixrac olunur.

Bununla belə, bu daşınma hələ də mövcuddur (versiya 2014 istisna deyildi). Beləliklə, gəlin buna da nəzər salaq.

Əvvəlcə MS SQL ilə işləmək üçün məlumat mənbəyi yaradaq (bu, xüsusi DSN olsun).

Mənbə üçün sürücünü göstərin.

Bundan sonra onun yaradılması və konfiqurasiyası prosesi başlayacaq.

Məlumat mənbəyinin adını təyin edin və qoşulmaq istədiyiniz MS SQL nümunəsinin adını təyin edin.

Bundan sonra cədvəli və ya sorğunu köçürməyi planlaşdırdığımız verilənlər bazasını müəyyənləşdiririk. İstifadə edərək köçürməODBC yalnız artıq mövcud verilənlər bazasında icra edilə bilər. Buna görə də, məlumatların yeni verilənlər bazasına köçürülməsi lazımdırsa, ilk növbədə yaradılmalıdır.

"Bitir" düyməsini kliklədikdən sonra yaradılan məlumat mənbəyi haqqında xülasə məlumatı olan bir pəncərə görünəcək.

Məlumat mənbəyinin nəhayət yaradılması üçün “OK” düyməsini sıxmağınız kifayətdir. Ancaq əvvəlcə "Məlumat mənbəyini yoxlayın" düyməsini sıxaraq onun performansını yoxlamaq daha yaxşıdır.

Hər şey düzgün aparılırsa, uğurlu yoxlama haqqında bir mesaj göstərilir.

İndi məlumat mənbəyi olduğu üçün biz birbaşa miqrasiya prosesinə keçə bilərik.Nümunə olaraq verilənlər bazasından bir “Kontaktlar Sorğusu” sorğusunu ixrac edəcəyik.

Bunu etmək üçün onu siçan ilə seçin və "Xarici məlumatlar" sekmesinin "İxrac" sahəsində "Ətraflı" düyməsini basın. Açılan menyuda "ODBC Database" seçin.

Bu vəziyyətdə orijinal dəyər qalır.

"Ok" düyməsini basdıqdan sonra yaradılmış məlumat mənbəyini seçməlisiniz.

Sonra serverə qoşulmaq üçün istifadəçi adı və şifrəni daxil edin.

"Ok" düyməsini basdıqdan sonra ixrac həyata keçiriləcək.

Ancaq yuxarıda qeyd edildiyi kimi, sorğu vəziyyətində ixrac nəticəsi düzgün deyil.

MS SQL verilənlər bazasında "Kontaktlar sorğusu" görünüşünün əvəzinə eyni adlı cədvəl yaradılmışdır.

Həmçinin, yalnız cədvəlləri ixrac etsəniz belə, ixracdan sonra atılacaq bir çox əlavə addımlar var (linklərin yenidən yaradılması və s.). Buna görə də, verilənlər bazalarını Access-dən MS SQL-ə köçürməyin təsvir olunan üsulu praktiki olaraq artıq istifadə edilmir.

"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 AND (bağlama), OR (dizyunksiya) və NOT (məntiqi inkar) məntiqi əməliyyatlarından istifadə olunur. 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. Sahələrin məbləği və qiymətindən istifadə edərək məhsulun cəminin hesablanması nümunəsi məcmu funksiya CƏM:

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. Böyük miqdarda məlumatla bu SQL sorğusunun performansı şü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. Qiymətləndirmək üçün qorunan söz IIF (şərti ifadə) istifadə olunur boolean ifadəsi və nəticədən asılı olaraq bu və ya digər hərəkəti yerinə yetirin (DOĞRU və ya YANLIŞ). 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) qədər olan günlərin sayı Hal-hazırki Tarix DateDiff funksiyasından istifadə edərək son istifadə tarixi müqayisə edilir (cədvəl m_product):


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)"Сладкое"");. !}