Pentru a extrage date din baza de date, se folosește limba SQL (Language Structured Query Language). SQL este un limbaj de programare foarte asemănător cu limba engleză, dar este destinat programelor de gestionare a bazelor de date. Cunoașterea limbajului SQL este importantă, deoarece este utilizată în fiecare interogare din Microsoft Access. Înțelegerea principiilor de lucru SQL ajută la crearea de interogări îmbunătățite și simplifică corectarea interogărilor care returnează rezultate incorecte.
Notă: Nu puteți modifica comanda SQL pentru o solicitare Web.
În acest articol
Ce este SQL?
SQL este un limbaj de programare conceput pentru a lucra cu seturi de fapte și relații între ele. În programele de gestionare a bazelor de date relaționale, cum ar fi Access, SQL este folosit pentru a manipula datele. Ca multe limbi de programare, SQL este un standard internațional recunoscut de astfel de comitete de standardizare ca ISO și ANSI.
Limbajul SQL descrie seturi de date care ajută la obținerea răspunsurilor la întrebări. Când utilizați SQL, trebuie să utilizați sintaxa corectă. Sintaxa este un set de reguli care vă permit să combinați corect elementele lingvistice. Sintaxa SQL se bazează pe sintaxa engleză și are multe elemente comune cu sintaxa limbii Visual Basic for Applications (VBA).
De exemplu, o instrucțiune SQL simplă care preia o listă de nume de contact cu numele Mary poate să arate astfel:
Notă: limbajul SQL este folosit nu numai pentru a efectua operații pe date, ci și pentru a crea și a modifica structura obiectelor bazei de date, de exemplu tabele. Partea din SQL care este utilizată pentru crearea și modificarea obiectelor bazei de date se numește limba de descriere a datelor DDL. Limba DDL nu este acoperită în această secțiune. Pentru mai multe informații, consultați Crearea și modificarea tabelelor și indexurilor utilizând interogările de determinare a datelor.
SELECT declarații
Instrucțiunea SELECT este utilizată pentru a descrie un set de date în limba SQL. Acesta conține o descriere completă a setului de date de care aveți nevoie pentru a fi preluat din baza de date, inclusiv următoarele:
tabele care conțin date;
legăturile dintre datele din diferite surse;
Domenii sau calcule pe baza cărora sunt selectate datele;
condițiile de selecție la care trebuie să se potrivească datele incluse în rezultatul interogării;
necesitatea și metoda de sortare.
Instrucțiuni SQL
Instrucțiunea SQL constă din mai multe părți, numite propoziții. Fiecare teză din instrucțiunea SQL are propriul scop. Unele sugestii sunt obligatorii. Tabelul de mai jos prezintă instrucțiunile SQL care sunt utilizate cel mai frecvent.
Formatul comun al instrucțiunii SQL:
Fiecare instrucțiune SELECT se termină cu un punct și virgulă (;). Un punct și virgulă pot fi fie la sfârșitul ultimei propoziții, fie pe o linie separată la sfârșitul instrucțiunii SQL.
Exemplu în Acces
Următorul exemplu arată cum poate arăta Access ca o instrucțiune SQL pentru o interogare de selecție simplă.
1. Clauza SELECT
2. Clauza FROM
3. Clauza WHERE
Să luăm un exemplu din sugestiile de a înțelege cum funcționează sintaxa SQL.
Clauza SELECT
În clauza SELECT, nu este necesar să specificați tabelele care conțin câmpuri și nu puteți specifica condițiile de selecție pe care trebuie să le corespundă datele incluse în rezultate.
În instrucțiunea SELECT, clauza SELECT precede întotdeauna clauza FROM.
Din clauza
Aceasta este o clauză FROM. Conține o declarație (FROM), urmată de un identificator (Contacts).
Clauza FROM nu specifică câmpurile pentru eșantion.
WHERE clauză
Aceasta este clauza WHERE. Conține un operator (WHERE) urmat de o expresie (City = "Rostov").
Notă: Spre deosebire de clauzele SELECT și FROM, clauza WHERE este un element opțional al instrucțiunii SELECT.
Cu clauzele SELECT, FROM și WHERE puteți efectua mai multe acțiuni. Pentru mai multe informații despre utilizarea acestor sugestii, consultați secțiunile de la sfârșitul acestui articol.
Rezultatul sortare: clauza ORDER BY
Ca și în cazul Microsoft Office Excel, în Access, puteți sorta rezultatele interogării într-un tabel. Utilizând clauza ORDER BY, puteți să specificați și modul în care rezultatele sunt sortate atunci când interogarea este executată. Dacă utilizați clauza ORDER BY, aceasta trebuie să fie la sfârșitul instrucțiunii SQL.
Clauza ORDER BY conține o listă cu câmpurile pentru care doriți să sortați, în aceeași ordine în care se aplică sortarea.
Notă: În mod implicit, în Acces, sortarea este efectuată în ordine crescătoare (de la A la Z, de la cel mai mic la cel mai înalt). Pentru a sorta valorile în ordine descrescătoare, trebuie să specificați cuvântul cheie DESC.
Pentru mai multe informații despre clauza ORDER BY, consultați clauza ORDER BY.
Lucrul cu date sumare: clauze GROUP BY și HAVING
Posibilitatea utilizării uneia sau a alteia funcții statistice depinde de tipul de date din câmp sau de expresia folosită. Pentru mai multe informații despre funcțiile statistice disponibile, consultați Funcțiile statistice în SQL.
Specificarea câmpurilor care nu sunt utilizate în funcția statistică: clauza GROUP BY
Atunci când se utilizează funcții statistice, este de obicei necesar să se creeze o clauză GROUP BY. Clauza GROUP BY specifică toate câmpurile la care funcția statistică nu este aplicată. Dacă funcțiile statistice sunt aplicate tuturor câmpurilor din interogare, nu este necesar să creați o clauză GROUP BY.
Clauza GROUP BY trebuie să urmeze imediat clauza WHERE sau clauza FROM dacă clauza WHERE nu este prezentă. În clauza GROUP BY, câmpurile sunt specificate în aceeași ordine ca și în clauza SELECT.
GROUP BY Company
Pentru mai multe informații despre clauza GROUP BY, consultați clauza GROUP BY.
Limitarea valorilor statistice utilizând condițiile de grupare: clauza HAVING
Dacă doriți să specificați condițiile pentru limitarea rezultatelor, dar câmpul în care doresc să se aplice este utilizat în funcția statistică, clauza WHERE nu poate fi utilizată. În schimb, utilizați clauza HAVING. Clauza HAVING funcționează la fel ca WHERE, dar este folosită pentru datele statistice.
Să presupunem, de exemplu, că funcția AVG (care calculează valoarea medie) se aplică primului câmp din clauza SELECT:
Notă: Cererea poate include o ofertă și în care având, și oferă, la aceleași criterii de selecție pentru câmpurile care nu sunt utilizate în funcțiile statistice sunt specificate în clauza WHERE, precum și condițiile pentru domeniile care sunt utilizate în funcții statistice - în clauza HAVING.
Pentru mai multe informații despre clauza HAVING, consultați clauza HAVING.
Combinarea rezultatelor interogării: operatorul UNION
Instrucțiunea UNION vă permite să combinați două instrucțiuni SELECT într-una. Combinările SELECT trebuie să aibă același număr și ordinea câmpurilor de ieșire cu aceleași tipuri de date compatibile sau compatibile. Atunci când o interogare este executată, datele din fiecare set de câmpuri corespunzătoare sunt combinate într-un singur câmp de ieșire, astfel că ieșirea interogării are la fel de multe câmpuri ca fiecare instrucțiune SELECT individual.
Notă: În interogările de conectare, tipurile de date numerice și de text sunt compatibile.
Utilizând operatorul UNION, puteți specifica dacă rezultatele interogării includ rânduri duplicate, dacă există. Pentru a face acest lucru, utilizați cuvântul cheie ALL.
Cererea de a combina două instrucțiuni SELECT are următoarea sintaxă de bază:
Să presupunem, de exemplu, că există două tabele numite "Produse" și "Servicii". Ambele tabele conțin câmpuri cu numele produsului sau serviciului, prețul și informațiile despre garanție, precum și domeniul în care este indicată exclusivitatea produsului sau serviciului propus. În ciuda faptului că diferite tipuri de garanții sunt furnizate în tabelele "Produse" și "Servicii", informațiile de bază sunt aceleași (dacă se oferă garanții de calitate pentru produse sau servicii individuale). Pentru a îmbina patru câmpuri din două tabele, puteți utiliza următoarea interogare de conectare:
Mai multe informații despre clauza SELECT
Instrucțiunea SELECT din clauza SELECT listează câmpurile de date pe care doriți să le utilizați.
Încheierea identificatorilor în paranteze pătrate
Numele câmpului din clauza SELECT poate fi închis în paranteze dreptunghiulare. Dacă numele nu conține spații sau caractere speciale (de exemplu, semne de punctuație), parantezele dreptunghiulare nu pot fi utilizate. Dacă numele conține spații sau caractere speciale, sunt necesare paranteze dreptunghiulare.
Sfat: numele care conține spațiile este mai convenabil pentru percepție. Această metodă de numire poate economisi timp atunci când proiectează formulare și rapoarte, dar atunci când creați instrucțiuni SQL, va trebui să introduceți mai multe caractere. Acest fapt trebuie luat în considerare atunci când atribuim nume obiectelor din baza de date.
Dacă instrucțiunea SQL conține mai multe câmpuri cu același nume, în clauza SELECT, numele sursei de date corespunzătoare trebuie adăugată la numele fiecărui câmp. Ca denumire sursă de date, trebuie să utilizați același nume ca și clauza FROM.
Selectarea tuturor câmpurilor
Pentru a include toate câmpurile din sursa de date în interogare, le puteți specifica toate în mod individual în clauza SELECT sau utilizați caracterul wildcard (*). Dacă utilizați un asterisc, când executați interogarea, Access determină câmpurile care conțin sursa de date și include toate aceste câmpuri în interogare. Acest lucru vă ajută să vă asigurați că interogarea este actualizată dacă se adaugă noi câmpuri la sursa de date.
Notă: Utilizarea unui asterisc trebuie monitorizată cu atenție. Dacă adăugați mai târziu câmpuri la sursa de date pe care nu ați intenționat să o utilizați, este posibil ca rezultatele interogării să nu fie la fel de așteptate.
Selectarea valorilor individuale
SELECTAREA DISTINCT [txtCustomerPhone]
Utilizarea aliaselor de câmpuri sau expresii: cuvântul cheie AS
SELECT [txtCustPhone] AS [Telefon pentru clienți]
Notă: Trebuie să utilizați un alias de câmp dacă expresia este utilizată în clauza SELECT.
Folosind o expresie într-o selecție
Uneori este necesar să se afișeze rezultatele calculelor pe baza datelor selectate sau să se extragă doar o parte din datele câmpului. Să presupunem, de exemplu, că este necesar să se întoarcă anul nașterii pentru toți clienții care utilizează datele din câmpul "Ziua nașterii". Clauza SELECT ar putea arăta astfel:
SELECT DatePart ("aaaa", [BirthDate]) AS [Anul nașterii]
Această expresie conține funcția DatePart și două argumente. "yyyy" (constantă) și [Ziua nașterii] (identificator).
Puteți utiliza orice expresie validă ca câmp dacă, atunci când luați o singură valoare, aceasta returnează și o singură valoare.
Mai multe informații despre clauza FROM
Clauza FROM a unei instrucțiuni SELECT specifică tabele sau interogări care conțin datele utilizate de clauza SELECT.
Încheierea identificatorilor în paranteze pătrate
Numele poate fi închis în paranteze dreptunghiulare. Dacă numele nu conține spații sau caractere speciale (de exemplu, semne de punctuație), parantezele dreptunghiulare nu pot fi utilizate. Dacă numele conține spații sau caractere speciale, sunt necesare paranteze dreptunghiulare.
Sfat: numele care conține spațiile este mai convenabil pentru percepție. Această metodă de numire poate economisi timp atunci când proiectează formulare și rapoarte, dar atunci când creați instrucțiuni SQL, va trebui să introduceți mai multe caractere. Acest fapt trebuie luat în considerare atunci când atribuim nume obiectelor din baza de date.
Utilizarea aliaselor surselor de date
Pentru a accesa sursa de date în instrucțiunea SELECT, puteți utiliza aliasul acesteia specificând-o în clauza FROM. Un alias de tabel este numele atribuit sursei de date din interogare atunci când utilizați expresia ca sursă de date sau pentru a simplifica introducerea și citirea instrucțiunii SQL. Acest lucru este util dacă numele sursei de date este prea lung sau dificil de introdus, mai ales dacă există mai multe câmpuri cu același nume din tabele diferite.
De exemplu, dacă doriți să selectați date din două câmpuri numite "ID", dintre care unul este cuprins în tabelul "TableClient", iar celălalt în tabelul "Cuprins", instrucțiunea SELECT poate arăta astfel:
Selectați [tblCustomer]. [ID], [tblOrder]. [ID]
Folosind alias-urile de masă din clauza FROM, puteți simplifica intrarea interogării. Clauza FROM cu pseudonimele de masă ar putea arăta astfel:
De la [tblCustomer] AS [C], [tblOrder] AS [O]
Aceste pseudoane de masă pot fi utilizate în clauza SELECT după cum urmează:
Notă: dacă folosiți aliasuri la o sursă de date, puteți să consultați instrucțiunea SQL fie prin alias, fie prin numele complet.
Combinarea datelor conexe
Dacă doriți să îmbinați perechi de înregistrări din două surse de date în înregistrări unice în rezultatele interogării, puteți efectua asocierea. Un join este o operație SQL care indică modul în care comunică două surse de date și necesitatea includerii datelor dintr-o sursă în rezultate dacă nu există date corespunzătoare în cealaltă.
Pentru a combina datele din două surse, trebuie să efectuați o operație de asociere pe un câmp comun. Dacă valorile acestui câmp sunt aceleași, datele din înregistrările din rezultatele interogării sunt combinate.
Pe lângă îmbinarea datelor, operația de îmbinare este, de asemenea, utilizată pentru a indica dacă înregistrarea ar trebui inclusă într-un tabel dintr-un tabel dacă nu există o înregistrare corespunzătoare în tabelul asociat.
Să presupunem, de exemplu, că într-o interogare este necesară utilizarea datelor din două tabele - "table-client" și "table-order". Ambele tabele conțin câmpul "ClientID" care definește clientul. Fiecare înregistrare din tabelul "tableClient" poate avea una sau mai multe înregistrări corespunzătoare în tabelul "table", iar valorile corespunzătoare sunt determinate de valorile din câmpul "ClientID".
Dacă doriți să combinați tabele, astfel încât înregistrarea de interogare combinată a acestor tabele, cu excepția acelor înregistrări care nu au intrările corespunzătoare într-una din tabele, este posibil ca propunerea ar putea arăta în felul următor (sfârșiturile de linie adăugată pentru a fi citite):
În Microsoft Office Access, operatorul join este specificat în clauza FROM a instrucțiunii SELECT. Există două tipuri de asociații - interne și externe. Acestea sunt descrise în secțiunile următoare.
Asociere internă
Intrarea internă este cel mai comun tip de unire. Atunci când se execută o interogare cu o conexiune internă, în rezultatul sunt incluse numai acele înregistrări care au aceleași valori în ambele tabele fuzionate.
Intrarea interioară are următoarea sintaxă (linia de rupere adăugată din motive de citire):
Tabelul de mai jos prezintă diferitele componente ale operației INNER JOIN.