Limbajul SQL (Structured Query Language sau limbajul structurat de interogări) este un limbaj de interogări şi gestionare a bazelor de date relaţionale. Access foloseşte SQL ca limbaj de interogare. În momentul creării unei interogări în modul de interogare Design, Access construieşte în paralel instrucţiunile SQL echivalente. De altfel, majoritatea proprietăţilor interogărilor în modul de interogare Design prezintă clauze echivalente şi opţiuni accesibile în limbajul SQL.
Anumite interogări SQL, numite interogări specifice limbajului SQL, nu pot fi create în grila de generare a interogărilor, ci trebuie să fie scrise direct în modul SQL. Este vorba de:
- interogările directe ce permit operarea directă cu tabele în server,
- interogările definiţii de date ce permite crearea, ştergerea sau modificarea structurilor tabelelor,
- interogările Union ce permit regruparea câmpurilor de două tabele (sau mai multe) în acelaşi câmp rezultat din interogare. Aceste interogări sunt foarte utile în fuzionarea înregistrărilor ce provin din tabele diferite.
INSTRUCŢIUNEA SELECT
SELECT este cea mai folosită instrucţiune, corespunzând interogării Selection din Access. Permite extragerea câmpurilor unui ansamblu de înregistrări ce corespund unor criterii.
Sintaxă: | |
SELECT [ALL |DISTINCT <listă de câmpuri>
FROM <listă de tabele>
[WHERE ...]
[GROUP BY...]
[HAVING...]
[ORDER BY]
ALL | Sunt luate în considerare toate înregistrările ce corespund criteriilor. |
Distinct | Sunt omise toate înregistrările pentru care câmpurile selectate conţin date în dublu exemplar. |
<listă de câmpuri> | Listă de câmpuri selectate, separate de virgule |
* | Indică faptul că toate câmpurile tabelului/tabelelor specifcat(e) sunt selectate. |
alias1, alias2 | Indică numele ce trebuie folosite drept antete de coloană în locul numelor coloanelor originale din tabel. |
<listă de tabele> | Numele tabelului sau tabelelor ce conţin datele care trebuie extrase. |
CLAUZA FROM
Aceasta specifică tabelele sau interogările din care sunt extrase datele.
Sintaxă:
FROM table 1 [LEFT|RIGHT|INNER JOIN table2
ON TABLE1.camp1 <operator de comparare> TABLE2.câmp2
[LEFT|RIGHT| INNER] | Aceşti operatori permit definirea tipului de imbricare între tabele. | |
LEFT JOIN | Se foloseşte pentru a crea o imbricare externă de stânga. Rezultatul acesteia cuprinde toate înregistrările provenite din primul tabel (cel din stânga: <tabel1>) şi pe acelea pentru care există o valoare corespunzătoare în al doilea tabel (cel din dreapta: <tabel2>). | |
RIGHT JOIN | Se foloseşte pentru a crea o imbricare externă de dreapta. Rezultatul acesteia cuprinde toate înregistrările provenite din al doilea tabel (cel din dreapta: <tabel2>) şi pe acelea pentru care nu există valoare corespunzătoare în primul tabel (cel din stânga: <tabel1>). | |
INNER JOIN | Se foloseşte pentru a crea o imbricare ce nu cuprinde decât înregistrările în care datele câmpurilor sunt identice. | |
<operator de comparare> | Toţi operatorii de comparare relaţională ce sunt utilizaţi (=, <, >, < =, > =). | |
Exemple: | | |
Select Clients.Cli_societate, Commandes.Cde_DateCde
From Clients INNER JOIN Commandes ON
Clients.Cli_CodeCli =Commandes.Cde_CodeCli
Listă de comenzi lansate de societate. În primul exemplu, sunt selectaţi doar clienţii care au facut deja comenzi.
Select Clients.Cli_societate, Commandes.Cde_DateCde
From Clients LEFT JOIN Commandes ON
Clients.Cli_CodeCli =Commandes.Cde_CodeCli
În al doilea exemplu, sunt selectaţi toţi clienţii.
CLAUZA WHERE
Permite filtrarea înregistrărilor după anumite criterii.
Condiţiile clauzei WHERE se exprimă cu ajutorul operatorilor următori:
- operatori de comparare: =, <, >, < =, > =, Is [Not] Null, [Not] In, Between.
- operatori logici: And, Or, Not.
Exemplu:
SELECT * From Produse WHERE [Prod_Pret] = 500000
SELECT * From Produse WHERE [Prod_Pret]
BETWEEN 100000 AND 200000
SELECT * FROM Clienti WHERE [Cli_plata] In
(`France, `Italia, `Spania)
CLAUZA GROUP BY
Clauza GROUP BY corespunde „Totalului” interogărilor Access (numite Regrupări în versiunile anterioare). Permite regruparea datelor într-unul sau mai multe câmpuri. În principal, clauza este folosită pentru executarea funcţiilor de agregare SQL, ca şi Sum (sumă), Count (calcul), Avg (medie).
Exemple: |
Această interogare returnează numărul comenzilor lansate de client.
SELECT Clienti.Cli_Societate, Count(Comenzi.Cde_DateCde
AS NbComenzi
FROM Clienti
LEFT JOIN Comenzi
ON Clienti.Cli_CodeCli = Comenzi.Cde_CodeCli
GROUP BY Clienti.Cli_Societate
Această interogare returnează totalul fiecărei comenzi.
SELECT Comenzi.Cde_NumCde, Sum([Cde_Pret]*[Cde_Buc]
AS TotalCde
FROM Comenzi
INNER JOIN [Detalii Comenzi]
ON Comenzi.Cde_NumCde = [Detalii Comenzi].Cde_NumCde
GROUP BY Comenzi.Cde_NumCde
CLAUZA HAVING
Specifică înregistrările regrupate ce trebuie afişate într-o instrucţiune SELECT dotată cu o clauză GROUP BY. Odată ce regruparea este efectuată se afişează lista de câmpuri a clauzei GROUP BY şi sunt selectate doar înregistrările care respectă condiţia specificată în clauza HAVING.
Exemplu: | |
Această interogare extrage comenzile ale căror total este mai mare de
2 000 000.
SELECT Comenzi.Cde_NumCde, Sum([Cde_Pret]*[Cde_Buc]
AS TotalCde, Commandes.Cde_DateCde FROM Comenzi
INNER JOIN [Detalii Comenzi]
ON Comenzi.Cde_NumCde = [Detalii Comenzi].Cde_NumCde
GROUP BY Comenzi.Cde_NumCde, Comenzi.Cde_DateCde
HAVING (Sum(Cde_Pret*Cde_Buc)> 2 000 000)
CLAUZA ORDER BY
Această clauză determină sortarea (aranjarea în ordine crescătoare sau descrescătoare), înregistrările rezultă dintr-o interogare în funcţie de câmpul/câmpurile specificat(e).
Sintaxă:
[ORDER BY camp1 [ASC|DESC][, camp2 [ASC|DESC]][,. . . ]]
ASC | Ordine crescătoare. | |
DESC | Ordine descrescătoare. | |
Exemplu: | | |
SELECT Clienti.Cli_Soc, Count(Comenzi.Cde_DateCde)
AS NbComenzi
FROM Clienti
LEFT JOIN Comenzi
ON Clienti.Cli_CodeCli =Comenzi.Cde_CodeCli
GROUP BY Clienti.Cli_Soc
ORDER BY Count (Comenzi.Cde_DateCde) DESC
Instrucţiunea UPDATE
Corespunde unei interogări de actualizare care modifică valorile câmpurilor într-un tabel specificat, pentru înregistrările ce corespund criteriului dat (facultativ).
Sintaxă: | |
UPDATE table SET câmp1=valoarenouă1,[câmp2=valoarenouă2] ... [WHERE criteriu] |
Observaţie:
- Dacă nu se specifică nici o clauză WHERE, toate înregistrările sunt actualizate.
Exemple: |
Această interogare modifică codul ţării din toate înregistrările tabelului Clienţi.
UPDATE Clients SET Clients.Cli_Pays = „RO”
Această interogare modifică în tabelul Clienţi codul de ţară al înregistrărilor clienţilor al căror oraş este „Timişoara”.
UPDATE Clients SET Clients.Cli_Pays = „RO”
Where Clienti.Cli_oras =”Timisoara
INSTRUCŢIUNEA DELETE
Corespunde unei interogări DELETE ce şterge înregistrările din tabelul menţionat în clauza FROM, după criteriile date (facultativ).
Sintaxă:
DELETE FROM tabel
[Where criteriu]
Observaţie:
- Dacă nu este specificată nici o caluză WHERE, toate înregistrările sunt şterse.
Exemplu:
Această interogare şterge comezile de dinainte de 1997.
DELETE Comenzi.Cde_DateCde
FROM Comenzi
WHERE (( Comenzi.Cde_DateCde) < #1/1/1997#)
INSTRUCŢIUNEA INSERT INTO
Instrucţiunea SQL INSERT INTO corespunde unei interogări Add care adaugă înregistrări într-un tabel.
Sintaxa:
Interogare Add de adăugare a unei singure înregistrări :
INSERT INTO <TabelDestinatie>[( câmp1 [, câmp2 [‚ ...] ] ) ]
VALUES ( valoare1 [, valoare2 [, ...]])
Observaţie:
- Trebuie să existe tot atâtea valori câte coloane de valorificat, de acelaşi tip şi în aceeaşi ordine.
Interogare Add cu una sau mai multe înregistrări:
INSERT INTO <TabelDestinatie>[( câmp1 [, câmp2 [‚ ...] ] ) ]
SELECT [<TabelSursa>.]câmp1 [, câmp2 [,...] ]
FROM <lista de tabele>
Observaţie:
- Instrucţiunea SELECT trebuie să returneze atâtea valori în aceeaşi ordine şi de acelaşi tip către coloanele de valorificat (câmpul instrucţiunii INSERT).
Exemple:
Adăugarea unei înregistrări în tabelul Clienţi
INSERT INTO Clienti (Cli_CodCli, Cli_societate, Cli_oras, Cli_plata)
VALUES( `Mirton`, `Editura Mirton`, `Timisoara~, `RO`)
Adăugarea unei înregistrări din tabelul Prospecte în tabelul Clienţi.
INSERT INTO Clienti
SELECT Prospecte.*
FROM Prospecte
ALTE INSTRUCŢIUNI
Interogare
TRANSFORM | Crează o interogare imbricată. |
UNION | Crează o interogare ce fuzionează rezultatele a două sau mai multe tabele sau interogări. |
Crearea şi gestiunea de tabele
CREATE TABLE | Crează un nou tabel. |
CREATE INDEX | Crează un nou index pentru un tabel existent. |
ALTER TABLE | Modifică structura unui tabel. |
DROP TABLE | Şterge tabelul din baza de date. |
DROP INDEX | Şterge indexul unui tabel. |
Crearea şi gestiunea utilizatorilor şi a grupurilor
CREATE USER | Crează unul sau mai mulţi utilizatori. |
ADD USER | Adaugă unul sau mai mulţi utilizatori grupului de utilizatori existenţi |
DROP USER | Şterge unul sau mai mulţi utilizatori. |
CREATE GROUP | Crează una sau mai multe grupe de utilizatori. |
DROP GROUP | Şterge una sau mai multe grupe de utilizatori. |
GRANT | Oferă privilegii specifice unui utilizator sau a unui grup de utilizatori existent. |
REVOKE | Retrage privilegiile specifice ale unui utilizator sau a unui grup de utilizatori existent. |
Niciun comentariu:
Trimiteți un comentariu