Access SQL: concepte de bază, vocabular și sintaxă

Se aplică la
Access pentru Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Atunci când doriți să regăsiți date dintr-o bază de date, solicitați datele respective utilizând Limbajul de interogare structurat (SQL). SQL este un limbaj informatic care se aseamănă foarte mult cu limba engleză, dar pe care îl înțeleg programele de baze de date. Fiecare interogare pe care o rulați utilizează SQL în culise.

Înțelegerea modului în care funcționează SQL vă poate ajuta să creați interogări mai bune și vă poate ajuta să înțelegeți mai ușor cum să remediați o interogare care nu returnează rezultatele dorite.

Acesta este un articol dintr-un set de articole despre Access SQL. Acest articol descrie utilizarea de bază a SQL pentru selectarea datelor și utilizează exemple pentru a ilustra sintaxa SQL.

În acest articol

Ce este SQL?

SQL este un limbaj informatic pentru lucrul cu seturi de evenimente și relațiile dintre acestea. Programele de baze de date relaționale, cum ar fi Microsoft Office Access, utilizează SQL pentru a lucra cu datele. Spre deosebire de multe limbaje informatice, SQL nu este greu de citit și de înțeles, chiar și pentru un începător. La fel ca multe limbaje informatice, SQL este un standard internațional recunoscut de autorități de standardizare, cum ar fi ISO și ANSI.

Utilizați SQL pentru a descrie seturi de date care vă pot ajuta să răspundeți la întrebări. Când utilizați SQL, trebuie să utilizați sintaxa corectă. Sintaxa este setul de reguli prin care sunt combinate corect elementele unui limbaj. Sintaxa SQL se bazează pe sintaxa limbii engleze și utilizează multe dintre elementele sintaxei Visual Basic for Applications (VBA).

De exemplu, o instrucțiune SQL simplă care regăsește o listă cu numele de familie al persoanelor cu prenumele Maria poate arăta astfel:

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

Notă

SQL nu se utilizează doar pentru gestionarea datelor, dar și pentru crearea și modificarea proiectului obiectelor bazei de date, cum ar fi tabele. Partea din SQL care este utilizată pentru crearea și modificarea obiectelor bazei de date se numește limbaj de definire a datelor (DDL). Acest subiect nu tratează limbajul DDL. Pentru mai multe informații, consultați articolul Crearea sau modificarea tabelelor sau indexurilor utilizând o interogare de definiție de date.

Instrucțiunile SELECT

Pentru a descrie un set de date utilizând SQL, scrieți o instrucțiune SELECT. O instrucțiune SELECT conține o descriere completă a unui set de date pe care doriți să le obțineți de la o bază de date. Acestea cuprind următoarele:

  • Ce tabele conțin datele.
  • Cum se asociază datele din surse diferite.
  • Ce câmpuri sau calcule vor produce datele.
  • Criteriile care trebuie să fie îndeplinite pentru a fi incluse.
  • Dacă să se sorteze rezultatele și cum să se sorteze acestea.

Clauze SQL

La fel ca o propoziție, o instrucțiune SQL are clauze. Fiecare clauză efectuează o funcție pentru instrucțiunea SQL. Unele clauze sunt obligatorii într-o instrucțiune SELECT. Tabelul următor listează cele mai comune clauze SQL.

Clauză SQL Ce face Obligatorii
SELECT Listează câmpurile care conțin date de interes. Da
FROM Listează tabelele care conțin câmpurile listate în clauza SELECT. Da
WHERE Specifică criteriile de câmp ce trebuie îndeplinite de fiecare înregistrare pentru ca aceasta să fie inclusă în rezultate. Nu
ORDER BY Specifică modalitatea de sortare a rezultatelor. Nu
GROUP BY Într-o instrucțiune SQL care conține funcții agregate, listează câmpurile care nu sunt rezumate în clauza SELECT. Doar dacă există astfel de câmpuri
HAVING Într-o instrucțiune SQL care conține funcții agregate, specifică ce condiții se aplică la câmpurile care sunt rezumate în instrucțiunea SELECT. Nu

Termeni SQL

Fiecare clauză SQL este formată din termeni - comparabile cu părțile de vorbire. Tabelul următor listează tipurile de termeni SQL.

Termen SQL Parte de vorbire comparabilă Definiție Exemplu
identificator substantiv Un nume pe care îl utilizați pentru a identifica un obiect din baza de date, cum ar fi un nume de câmp. Clienților. [Număr de telefon]
operator verb sau adverb Un cuvânt cheie care reprezintă o acțiune sau care modifică o acțiune. AS
constantă substantiv O valoare care nu se modifică, precum un număr sau o valoare NULL. 42
expresie adjectiv O combinație de identificatori, operatori, constante și funcții care se evaluează la o singură valoare. >= Produse. [Preț unitar]

Începutul paginii

Clauze SQL de bază: SELECT, FROM și WHERE

O instrucțiune SQL are forma generală:

SELECT field_1
FROM table_1
WHERE criterion_1
;

Notă

  • Access ignoră sfârșiturile de linie într-o instrucțiune SQL. Totuși, luați în considerare utilizarea unei linii separate pentru fiecare clauză, pentru a contribui la îmbunătățirea lizibilității instrucțiunilor SQL pentru dvs. și pentru alte persoane.
  • Fiecare instrucțiune SELECT se termină prin punct și virgulă (;). Semnul punct și virgulă poate apărea la sfârșitul ultimei clauze sau separat pe o linie la sfârșitul instrucțiunii SQL.

Un exemplu din Access

În continuare se ilustrează cum poate arăta în Access o instrucțiune SQL pentru o interogare de selectare simplă:

Fila obiect SQL afișând o instrucțiune SELECT

1. clauza SELECT

2. clauza FROM

3. clauza WHERE

Acest exemplu de instrucțiune SQL semnifică "Selectați datele stocate în câmpuri denumite Adresă de poștă electronică și Firmă din tabelul denumit Persoane de contact, mai precis înregistrările în care valoarea câmpului Localitate este Sibiu."

Să privim exemplul, câte o clauză o dată, pentru a vedea cum funcționează sintaxa SQL.

Clauza SELECT

SELECT [E-mail Address], Company

Aceasta este clauza SELECT. Ea cuprinde un operator (SELECT) urmat de doi identificatori ([Adresă de poștă electronică] și Firmă).

Dacă un identificator conține spații sau caractere speciale (cum ar fi "Adresă de poștă electronică"), trebuie cuprins între paranteze drepte.

O clauză SELECT nu trebuie să menționeze ce tabele conțin câmpurile și nu poate specifica nicio condiție pe care să o îndeplinească datele de inclus.

Clauza SELECT apare întotdeauna în fața clauzei FROM într-o instrucțiune SELECT.

Clauza FROM

FROM Contacts

Aceasta este clauza FROM. Aceasta cuprinde un operator (FROM) urmat de un identificator (Contacte).

O clauză FROM nu listează câmpurile care să fie selectate.

Clauza WHERE

WHERE City="Seattle"

Aceasta este clauza WHERE. Ea cuprinde un operator (WHERE) urmat de o expresie (Localitate="Sibiu").

Notă

Spre deosebire de clauzele SELECT și FROM, clauza WHERE nu este un element obligatoriu al unei instrucțiuni SELECT.

Puteți să efectuați multe acțiuni pe care SQL vi le permite, utilizând clauzele SELECT, FROM și WHERE. Mai multe informații despre modul în care utilizați aceste clauze sunt prezentate în aceste articole suplimentare:

Începutul paginii

Sortarea rezultatelor: ORDONARE DUPĂ

La fel ca Microsoft Excel, Access vă permite să sortați rezultatele interogării într-o foaie de date. De asemenea, este posibil să specificați în interogare cum doriți să sortați rezultatele atunci când se execută interogarea, utilizând o clauză ORDER BY. Dacă utilizați clauza ORDER BY, aceasta este ultima clauză din instrucțiunea SQL.

O clauză ORDER BY conține o listă de câmpuri pe care doriți să le utilizați pentru sortare, în aceeași ordine în care aplicați operațiunile de sortare.

De exemplu, să presupunem că doriți ca rezultatele să fie filtrate mai întâi după valoarea câmpului Firmă în ordine descrescătoare și - dacă există înregistrări cu aceeași valoare pentru Firmă - sortate apoi după valorile din câmpul Adresă de poștă electronică în ordine crescătoare. Clauza ORDER BY poate arăta astfel:

ORDER BY Company DESC, [E-mail Address]

Notă

În mod implicit, Access sortează valorile în ordine crescătoare (A-Z, de la mic la mare). Utilizați cuvântul cheie DESC pentru a sorta în schimb valorile în ordine descrescătoare.

Pentru mai multe informații despre clauza ORDER BY, vedeți subiectul Clauza ORDER BY.

Începutul paginii

Lucrul cu date rezumate: GROUP BY și HAVING

Uneori doriți să lucrați cu date rezumate, cum ar fi numărul total de vânzări dintr-o lună sau cu cele mai scumpe elemente dintr-un stoc. Pentru a face acest lucru, aplicați o funcție agregată unui câmp din clauza SELECT. De exemplu, dacă doriți ca interogarea să afișeze numărul de adrese de poștă electronică listate pentru fiecare firmă, clauza SELECT poate arăta astfel:

SELECT COUNT([E-mail Address]), Company

Funcțiile agregate pe care le utilizați depind de tipul de date din câmp sau de expresia pe care doriți să o utilizați. Pentru mai multe informații despre funcțiile agregate, consultați articolul Funcții agregate SQL.

Specificarea câmpurilor care nu sunt utilizate într-o funcție agregată: clauza GROUP BY

Când utilizați funcții agregate, trebuie, de obicei, să creați și o clauză GROUP BY. O clauză GROUP BY listează toate câmpurile la care nu aplicați o funcție agregată. Dacă aplicați funcții agregate la toate câmpurile dintr-o interogare, nu este necesar să creați clauza GROUP BY.

Clauza GROUP BY urmează imediat după clauza WHERE sau după clauza FROM dacă nu există nicio clauză WHERE. O clauză GROUP BY listează câmpurile așa cum apar ele în clauza SELECT.

De exemplu, continuând exemplul anterior, dacă clauza SELECT aplică o funcție agregată la [Adresă de poștă electronică], dar nu și la Firmă, clauza dvs. GROUP BY poate arăta astfel:

GROUP BY Company

Pentru mai multe informații despre clauza GROUP BY, consultați subiectul Clauza GROUP BY.

Limitarea valorilor agregate utilizând criterii de grup: clauza HAVING

Dacă doriți să utilizați criterii pentru a limita rezultatele, dar câmpul la care doriți să aplicați criterii se utilizează într-o funcție agregată, nu este posibil să utilizați o clauză WHERE. În schimb, utilizați o clauză HAVING. O clauză HAVING funcționează la fel ca o clauză WHERE, dar se utilizează pentru datele agregate.

De exemplu, să presupunem că utilizați funcția AVG (care calculează o valoare medie) cu primul câmp din clauza SELECT:

SELECT COUNT([E-mail Address]), Company

Dacă doriți ca interogarea să restricționeze rezultatele pe baza valorii funcției COUNT, nu este posibil să utilizați criterii pentru acel câmp în clauza WHERE. În schimb, puneți criteriile într-o clauză HAVING. De exemplu, dacă doriți ca interogarea să returneze rândurile dacă există mai multe de o singură adresă de poștă electronică asociată firmei, clauza HAVING poate arăta astfel:

HAVING COUNT([E-mail Address])>1

Notă

O interogare poate avea o clauză WHERE și o clauză HAVING - criteriile pentru câmpurile care nu sunt utilizate într-o funcție agregată merg în clauza WHERE, iar criteriile pentru câmpurile utilizate în câmpurile agregate merg în clauza HAVING.

Pentru mai multe informații despre clauza HAVING, consultați subiectul Clauza HAVING.

Începutul paginii

Combinarea rezultatelor interogării: UNION

Când doriți să examinați toate datele returnate de mai multe interogări de selectare similare, ca pe un set combinat, utilizați operatorul UNION.

Operatorul UNION vă permite să combinați două instrucțiuni SELECT într-una singură. Instrucțiunile SELECT pe care le combinați trebuie să aibă același număr de câmpuri de ieșire, în aceeași ordine și cu aceleași tipuri de date sau cu tipuri de date compatibile. Când executați interogarea de uniune, datele din fiecare set de câmpuri corespunzătoare sunt combinate într-un singur câmp de ieșire, astfel încât ieșirea de interogare să aibă același număr de câmpuri ca fiecare dintre enunțurile SELECT.

Notă

În scopul efectuării unei interogări de uniune, tipurile de date Număr și Text sunt compatibile.

Când utilizați operatorul UNION, este posibil, de asemenea, să specificați dacă rezultatele interogării să includă rânduri duble, dacă există, utilizând cuvântul cheie ALL.

Sintaxa SQL de bază pentru o interogare de uniune care combină instrucțiuni SELECT arată astfel:

SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;

De exemplu, să presupunem că aveți un tabel denumit Produse și alt tabel denumit Servicii. Ambele tabele au câmpuri care conțin numele produsului sau serviciului, prețul, garanția sau perioada de garanție și dacă oferiți produsul sau serviciul în mod exclusiv. Chiar dacă tabelul Produse stochează informații despre garanție și tabelul Servicii stochează informații despre perioada de garanție, informațiile de bază sunt aceleași (dacă un anumit produs sau serviciu este livrat cu o garanție de calitate). Aveți posibilitatea să utilizați o interogare de uniune, cum este cea următoare, pentru a combina cele patru câmpuri din cele două tabele:

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;

Pentru mai multe informații despre cum să combinați instrucțiunile SELECT utilizând operatorul UNION, consultați Combinarea rezultatelor mai multor interogări de selectare prin utilizarea unei interogări de uniune.

Începutul paginii