|
Unul dintre cele mai puternice limbaje structurate pentru interogarea bazelor de date relationale il constituie in prezent SQL (Structured Query Language). Acesta, pronuntat cel mai adesea de catre utilizatorii lui in formula abreviata 'sequel', a devenit chiar un standard pentru o gama din ce in ce mai larga de sisteme de gestiune a bazelor de date. Limbajul SQL permite o comunicare complexa si rapida a utilizatorului cu bazele de date, in functie de cerintele si restrictiile acestuia. Pe langa manipularea si regasirea datelor, se efectueaza si operatii complexe privind actualizarea si administrarea bazei de date.
Exista un anumit grad de standardizare a limbajului SQL, mai multe sisteme de gestiune a bazelor de date recunoscand principalele instructiuni ale acestuia (de exemplu: Oracle, Access, Sybase etc.). Pe plan mondial, standardul in domeniu este considerat ANSI (American National Standards Institute) SQL care are in vedere atat aspectele de definire, interogare, manipulare a datelor, procesare a tranzactiilor, cat si caracteristicile complexe privind integritatea informatiilor, cursoarele derulante sau jonctiunile externe. Multi producatori de sisteme de gestiune a bazelor de date furnizeaza propriile extensii ale limbajului SQL, asigurandu-si astfel exclusivitatea.
Sistemul de gestiune a bazelor de date ACCESS 2000 accepta utilizarea limbajului de interogare SQL. Existenta tehnicii grafice QBE (Query by Example-interogare prin exemplu) permite proiectarea facila a unor interogari complexe. Informatia definita pe grila QBE va fi automat transformata intr-o instructiune SQL. Dialectul ACCESS contine unele particularitati in raport de standardul ANSI SQL, fiind conceput mai mult pentru crearea interogarilor de selectie.
In acest capitol tratam in detaliu doar primele trei categorii de instructiuni, si anume cele care privesc definirea, manipularea si selectia informatiilor din bazele de date.
Pentru a putea scrie corect o instructiune SQL in ACCESS 2000 este necesara respectarea stricta a unor reguli de sintaxa. Amintim in continuare cateva dintre acestea:
In crearea si respectiv executarea unei interogari ACCESS 2000 construita prin utilizarea de instructiuni SQL se parcurg, de fiecare data, mai multe etape de baza:
Pe ecranul calculatorului va fi afisat in final rezultatul interogarii SQL; utilizatorul il va analiza si interpreta in functie de propriile cerinte si restrictii informationale.
In cazul in care cererea de interogare SQL ACCESS are erori de sintaxa sau determina obtinerea de rezultate eronate, va trebui sa se revina in modul de afisare SQL View pentru a se face corectiile necesare.
Principalele comenzi SQL pentru definirea datelor sunt urmatoarele:
Comanda CREATE DATABASE are urmatoarea sintaxa: CREATE DATABASE nume_baza_de_date fiind utilizata pentru crearea unei noi baze de date.
Comanda DROP DATABASE nume_baza_de_date este utilizata pentru stergerea bazei de date.
Pentru crearea unei tabele se utilizeaza comanda CREATE TABLE nume_tabela (camp1 tip_data [NOT NULL], camp2 tip_data [NOT NULL], camp3 tip_data [NOT NULL])
Printre cele mai importante tipuri de date folosite amintim: Character, Memo, Number, Integer, Decimal, Logical, Date, OLE Object etc.Numele tabelei trebuie sa fie unic in cadrul bazei de date, neputand fi unul din cuvintele rezervate. Totodata, acesta poate avea si anumite restrictii privind: numarul de caractere din care este format, utilizarea anumitor simboluri, folosirea literelor mari sau mici, natura caracterului de inceput etc. Aceleasi cerinte apar si pentru numele campurilor; in plus exista posibilitatea duplicarii lor in cadrul bazei de date, dar se pastreaza unicitatea in tabela. Clauza NOT NULL arata ca in campul respectiv nu se memoreaza valori de tip NULL.
Exemplu: Se creeaza tabela Vanzari cu urmatoarea structura a inregistrarii: numar (tip numeric), cod marfa (tip numeric), data vanzarii (tip data calendaristica), localitatea (tip caracter). Exemplu: Se creeaza tabela Vanzari cu urmatoarea structura a inregistrarii: numar (tip numeric), cod marfa (tip numeric), data vanzarii (tip data calendaristica), localitatea (tip caracter). In campul data vanzarii nu se vor memora valori de tip NULL.
CREATE TABLE VANZARI(Nr Number, Cod_m Number, Data_v Date NOT NULL, Localit Char)
Pentru modificarea structurii unui tabel se utilizeaza comanda ALTER TABLE cu urmatoarea sintaxa (simplificata): ALTER TABLE nume_tabela ADD nume_camp tip_data. In aceasta varianta se adauga in structura tabelei campul specificat in comenda.
Exemplu: Se adauga in tabela Personal_Vanzare un nou camp numit Telefon: ALTER TABLE PERSONAL_VANZARE ADD Telefon Integer
Comanda DROP TABLE nume_tabela este folosita pentru a sterge complet o tabela dintr-o baza de date (structura si valorile asociate).
Instructiunile de selectie reprezinta una dintre categoriile cele mai importante ale limbajului de interogare SQL ACCESS. Indiferent daca sunt simple sau complexe, punctul de plecare il constituie fraza SELECT, prin care se regasesc si se afiseaza informatiile dorite de utilizator.
Pentru definirea interogarilor de selectie simple se utilizeaza urmatoarea sintaxa a instructiunii SELECT:
Domeniu permite stabilirearea modalitatii de manipulare a inregistrarilor din baza de date asupra careia se efectueaza selectia si poate fi:
Lista_selectie cuprinde toate campurile care vor aparea in tabela cu rezultatele interogarii. Campurile adaugate in randul Field din grila Query a machetei grafice QBE, care au marcata caseta de validare Show, sunt aceleasi cu cele mentionate in lista de selectie.In scrierea interogarilor de selectie simple SQL ACCESS este posibila si folosirea functiilor totalizatoare. Cele mai importante functii din aceasta categorie sunt:
Clauza FROM Specifica numele tabelei sau tabelelor care vor forma suportul interogarii. Daca in lista_selectie se includ campuri din mai multe tabele, in fata numelui acestora trebuie precizata tabela din care fac parte. Asa cum aratam la regulile de sintaxa, pentru separarea numelor de tabele, se utilizeaza semnul , (virgula). Trebuie sa precizam faptul ca in cadrul acestei clauze se pot mentiona pe langa tabele, ca surse de informatii pentru interogarile SQL, si interogari care au fost deja create.
Clauza WHERE Face interogarile mai selective, specificand faptul ca vor fi afisate numai inregistrarile care indeplinesc criteriul descris. Parametrul criteriul de selectie este o expresie care contine un operator de tip text (sir) sau numeric, in functie de tipul campului. Clauza WHERE este optionala si nu opereaza cu functii totalizatoare. In cadrul conditiei din clauza WHERE apar pot fi utilizati operatorii : AND, OR, NOT, IN, BETWEEN, LIKE. Apeland la acestia, este posibila construirea unor conditii mai complexe.
Clauza ORDER BY Utilizata atunci cand se doreste ca rezultatele interogarii sa fie ordonate in mod crescator (ASC) sau descrescator (DESC). Sortarea este optionala si se poate realiza dupa unul sau mai multe campuri_criteriu (definite drept chei de sortare). Componenta BY a clauzei nu poate sa lipseasca atunci cand se doreste sortarea rezultatelor interogarii SQL ACCESS !
Clauza GROUP BY Precizeaza campul sau campurile pe baza carora se va efectua gruparea inregistrarilor. In acelasi timp, prin intermediul acestei clauze, se pot executa functiile agregate descrise in lista de selectie pentru fiecare dintre grupari (constituite pe baza campurilor de grupare). Echivalentul acestei clauze in macheta grafica QBE de constructie a interogarii il reprezinta randul Total.
Clauza HAVING Se refera la criteriul care va fi aplicat campului-definit ca argument al functiei agregat. Altfel spus, cand se foloseste clauza GROUP BY si este necesara si o conditie, se va utiliza clauza HAVING. Spre deosebire de WHERE, care actioneaza inainte de a se efectua gruparea inregistrarilor, HAVING va opera dupa definirea acesteia. De remarcat faptul ca se admite utilizarea unei functii agregat care nu apare in lista de selectie, precum si apelarea la mai multe criterii de grupare.
O facilitate deosebit de importanta a limbajului SQL o reprezinta posibilitatea de a grupa si folosi date din tabele diferite. Operatiile de asociere induse de clauza JOIN au ca rezultat producerea tuturor combinatiilor posibile, pentru continutul informational al fiecarei tabele. Noile inregistrari care rezulta in urma jonctiunii vor deveni disponibile pentru selectiile ulterioare. La o asociere pot participa mai mult de doua tabele.
Principala modalitate de realizarea a jonctiunii este sintetizata de urmatoarea sintaxa:
Semnificatia elementelor de sintaxa descrise mai sus este urmatoarea:
Jonctiunile tip INNER JOIN determina o asociere a inregistrarilor din tabele, astfel incat sa rezulte un numar total de inregistrari egal cu produsul numarului de inregistrari din fiecare tabela.
Jonctiunile externe (OUTER) sunt de doua tipuri: de stanga (LEFT OUTER JOIN) si de dreapta (RIGHT OUTER JOIN), fiind destul de putin utilizate. Echivalentul QBE al acestor categorii de jonctiuni este alegerea optiunilor 1, 2 sau 3, din caseta Join Properties, care au fost explicate intr-un capitol precedent.
Cele mai importante instructiuni sunt: INSERT, UPDATE si DELETE.
Comanda INSERT se foloseste pentru adaugarea de inregistrari dintr-o tabela in alta. Prin aceasta interogare de adaugare nu se pot insera date dintr-o tabela in ea insasi; operatia ar fi totusi posibila printr-o selectare prealabila a datelor initiale intr-un tabel temporar, urmata de modificarea si readucerea lor in tabelul de la care s-a plecat.
Sintaxa comenzii este urmatoarea:
In acest caz se adauga o inregistrare intr-o tabela, mentionandu-se campurile si valorile asociate acestora. Ca particularitate se remarca inserarea unei singure inregistrari la un moment dat. Prima forma a lui INSERT se utilizeaza pentru operatii simple care presupun lucrul cu un numar redus de inregistrari. Dupa lansarea in executie a interogarii apare un mesaj de avertizare privind adaugarea noii inregistrari in baza de date si caracterul ireversibil al acestei operatii.
In cadrul acestui tip de inserare a datelor trebuie sa se respecte urmatoarele reguli:
Comanda
DELETE are urmatoarea sintaxa:
DELETE FROM nume_tabela [WHERE criteriul_de_stergere] se materializeaza
in interogarea actiune de stergere partiala sau totala a inregistrarilor din
tabele. In acelasi timp se va sterge doar continutul tabelei nu si aceasta
(pentru eliminarea tabelei se va apela la instructiunea DROP TABLE).
Comanda UPDATE are urmatoarea sintaxa:
Scrierea unei interogari in cadrul alteia duce la aparitia unei subinterogari; setul de rezultate obtinut de la o interogare va constitui argument pentru o alta. Utilizatorul poate astfel sa creeze legaturi intre mai multe interogari SQL ACCESS, pe baza unor campuri unice, cu rol de cautare in structura tabelelor. Subinterogarile inlocuiesc interogarile imbricate din versiunile precedente, cu performante mult imbunatatite. Pot fi construite si prin varianta de lucru a machetei grafice QBE Access.
Cea mai simpla subinterogare are sintaxa urmatoare: