Sunteți pe pagina 1din 22

LIMBAJUL SQL

Introducere
Limbajul SQL (Structured Query Language)
reprezint, n prezent, unul dintre cele mai puternice
limbaje structurate pentru interogarea bazelor de date
relaionale.
Exist un anumit grad de standardizare a limbajului
SQL, mai multe sisteme de gestiune a bazelor de date
recunoscnd principalele instruciuni ale acestuia (de
exemplu: Oracle, Access, Sybase etc.).
Pe plan mondial, standardul n domeniu este considerat
American National Standards Institute (ANSI) SQL care
are n vedere att aspectele de definire, interogare,
manipulare a datelor, procesare a tranzaciilor, ct i
caracteristicile complexe privind integritatea informaiilor,
cursoarele derulante sau jonciunile externe.
SQL n Access
Sistemul de gestiune a bazelor de date ACCESS
2000 accept utilizarea limbajului de interogare SQL.
Existena tehnicii grafice QBE (Query by Example-
interogare prin exemplu) permite proiectarea facil a
unor interogri complexe, informaia definit pe grila
QBE fiind automat transformat ntr-o instruciune
SQL.
Dialectul ACCESS conine unele particulariti n
raport de standardul ANSI SQL, fiind conceput mai
mult pentru crearea interogrilor de selecie.
Reguli de sintax
Pentru a putea scrie corect o instructiune SQL n
Access trebuie s se respecte urmtoarele reguli de
sintax:
orice comand se va ncheia cu punct ;
ntr-o interogare unde se folosesc cmpuri din
mai multe tabele, pentru a separa numele tabelului
de numele cmpului, se va utiliza . dup
modelul tabel.cmp;
parantezele drepte ncadreaz numele de cmpuri
doar cnd acestea conin spaii sau simboluri
neacceptate de SQL;
pentru a delimita parametrii dintr-o list, se utilizeaz
virgulele
valorile de tip ir se marcheaz prin apostrof sau
ghilimele
inegalitile din cadrul clauzelor se vor specifica prin
<>
simbolurile ? i * sunt folosite pentru a desemna unul
sau mai multe caractere de nlocuire
pentru a evidenia valorile de tip data / timp se
apeleaz la caracterul #
Etapele crerii unei interogri
din fereastra Database (Baza de date) se va selecta butonul
Queries (Interogri) ;
pentru a crea interogarea SQL dorit va fi necesar, fie
activarea butonului New (Nou), fie alegerea opiunii
Create query in Design view (Creare interogare n
vizualizare proiect);
pentru a scrie interogarea SQL Access este necesar ca din
meniul View utilizatorul s opteze pentru modul de
vizualizare SQL View. n fereastra care apare se vor tasta
instruciunile SQL specifice, respectnd sintaxa
corespunztoare;
interogarea SQL Access creat se poate lansa n execuie n
dou moduri: prin utilizarea butonului din bara Query
Design sau prin opiunea Run, din meniul Query.
Comenzile pentru definirea datelor (LDD)

Principalele comenzi SQL pentru definire a


datelor sunt urmtoarele:
CREATE DATABASE
DROP DATABASE
CREATE TABLE
ALTER TABLE
DROP TABLE
Comanda CREATE DATABASE are urmtoarea
sintax:
CREATE DATABASE nume_baza_de_date fiind
utilizat pentru crearea unei noi baze de date. Access SQL
nu accept o astfel de comand.

Comanda DROP DATABASE cu sintaxa:


DROP DATABASE nume_baza_de_date este utilizat
pentru tergerea bazei de date. Access SQL nu accept o
astfel de comand.
Pentru crearea unei tabele se utilizeaz comanda:
CREATE TABLE nume_tabela (cmp1 tip_data [NOT
NULL], cmp2 tip_data [NOT NULL], cmp3 tip_data
[NOT NULL]...);
Printre cele mai importante tipuri de date folosite amintim:
Character, Memo, Number, Integer, Decimal, Logical, Date,
OLE Object etc.

Pentru modificarea structurii unui tabel se utilizeaz


comanda ALTER TABLE cu sintax :
ALTER TABLE nume_tabela ADD nume_cmp
tip_data;

Comanda DROP TABLE nume_tabela este folosit pentru


a terge complet o tabel dintr-o baza de date (structura i
valorile asociate).
Comenzi pentru selecia datelor
Pentru definirea interogrilor de selecie simple se utilizeaz
urmtoarea sintax a instruciunii SELECT:
SELECT [domeniu] lista_selectie
FROM nume_tabela1, nume_tabela2,...
[WHERE criteriul_de_selectie]
[ORDER BY cmpuri_criteriu [ASC|DESC]];
Domeniu permite stabilirea modalitii de manipulare a
nregistrrilor din baza de date i poate fi:
ALL : permite includerea tuturor nregistrrilor ce
ndeplinesc condiiile impuse.
DISTINCT : are ca efect eliminarea nregistrrilor care
conin duplicate n cmpurile selectate astfel, se va afia doar
o apariie a datei multiple;
DISTINCTROW are n vedere nregistrrile duplicate n
ansamblul lor, nu numai pe cele care au cmpuri duplicate.
Lista_selectie cuprinde toate cmpurile care vor aprea
n tabela cu rezultatele interogrii.
Clauza FROM specific numele tabelei sau tabelelor
care vor forma suportul interogrii.
Clauza WHERE face interogrile mai selective,
specificnd faptul c vor fi afiate numai nregistrrile care
ndeplinesc criteriul descris. Clauza WHERE este opional
i nu opereaz cu funcii totalizatoare. n cadrul condiiei din
clauza WHERE pot fi utilizai operatorii : AND, OR, NOT,
IN, BETWEEN, LIKE.
Clauza ORDER BY utilizat atunci cnd se dorete ca
rezultatele interogrii s fie ordonate n mod cresctor
(ASC) sau descresctor (DESC).
n cadrul interogrilor de selecie simple SQL
ACCESS se pot folosi i funcii totalizatoare. Cele mai
importante funcii din aceast categorie sunt:
COUNT : returneaz numrul de nregistrri care
respect condiiile stabilite prin clauza WHERE,
SUM : red suma tuturor valorilor dintr-un cmp;
opereaz numai cu valori numerice,
AVG : calculeaz valoarea medie a unui cmp
numeric,
MAX : permite determinarea celei mai mari valori
dintr-un cmp, nu opereaz n cadrul clauzei WHERE;
MIN : duce la obinerea celei mai mici valori a unui
cmp, rmne valabil i aici restricia privind clauza
WHERE.
Pentru definirea interogrilor de selecie agregate se utilizeaz
urmtoarea sintax a instruciunii SELECT:
SELECT [domeniu] f_agreg(nume_camp) as alias [,lista_selectie]]
FROM nume_tabela1, nume_tabela2,...
GROUP BY camp_grupare
[HAVING criteriu_grupare]
[ORDER BY campuri_criteriu [ASC|DESC]];

n cadrul listei de selecie se pot defini i alias-uri. Acestea


reprezint un pseudonim (nume) asociat unui cmp care este
argument al funciei agregat, astfel : cmp AS alias.
Clauza GROUP BY precizeaz cmpul sau cmpurile pe baza
crora se va efectua gruparea nregistrrilor.
Clauza HAVING se refer la criteriul care va fi aplicat
cmpului-definit ca argument al funciei agregat. Altfel spus, cnd
se folosete clauza GROUP BY i este necesar i o condiie, se va
utiliza clauza HAVING.
Asocieri
Limbajul SQL ofer posibilitatea de a grupa i
folosi date din tabele diferite.
Jonciunile se pot clasifica n:
- jonciuni CROSS mai puin utilizat, cu rol n
ilustrarea elementelor specifice proprietilor
combinatorii ale asocierilor;
- jonciuni de ECHIVALEN, cea mai
folosit, presupune folosirea clauzei WHERE
asociat cu o egalitate dorit;
- jonciuni de NEECHIVALEN, care face
apel n clauza WHERE la oricare operator de
comparare n afar de semnul egal.
Sintaxa general pentru jonciunile echivalente i
neechivalente este:
SELECT [domeniu] lista_selectie
FROM nume_tabela1, nume_tabela2
WHERE criteriul_asociere
[ORDER BY cmpuri_criteriu [ASC|DESC]];

Deoarece n aceste instruciunile SQL se


utilizeaz cmpuri ce fac parte din tabele diferite,
este necesar ntotdeauna specificarea tabelei de
care aparin.
Forma general de descriere a unui astfel de
cmp va fi urmtoarea:
nume_tabel.nume_cmp.
O alt abordare privete jonciunile ca fiind: interne
(INNER JOIN) i externe (OUTER JOIN).

Jonciunile tip INNER JOIN determin o asociere


a nregistrrilor din tabele, astfel nct s rezulte un
numr total de nregistrri egal cu produsul numrului
de nregistrri din fiecare tabel.

Jonciunile externe (OUTER) sunt de dou tipuri:


de stnga (LEFT OUTER JOIN) i de dreapta (RIGHT
OUTER JOIN), fiind destul de puin utilizate.
Jonciunile au urmtoarea sintax:
SELECT [domeniu] lista_selectie
FROM nume_tab1
{INNER|LEFT OUTER|RIGHT OUTER} JOIN nume_tabe2
ON criteriul_de_asociere
[{INNER|LEFT OUTER|RIGHT OUTER} JOIN nume_tab3
ON criteriul_de_asociere]...
[WHERE criteriul_de_selectie]
[ORDER BY cmpuri_criteriu [ASC|DESC]];

INNER, LEFT OUTER, RIGHT, OUTER se refera la


tipurile de jonciuni;
JOIN specific tabela care va fi asociat (nume_tab2,
nume_tab3...) tabelei precizat n clauza FROM;
ON criteriul de asociere arat relaia dintre cmpurile pe
care se bazeaz jonciunea.
Combinrile
Cnd utilizatorul dorete s vad rezultatele mai
multor interogri SELECT n acelai timp, prin
combinarea ieirilor lor, poate utiliza facilitatea UNION
a limbajului de interogare SQL.
Sintax general:
SELECT lista_cmpuri FROM tabela1
UNION SELECT lista_campuri FROM tabela2
[GROUP BY camp_de_grupare]
[HAVING criteriul_de_agregare]
[UNION]
[ORDER BY camp_criteriu_de_sortare];
Instruciunile care genereaz interogri
UNION se caracterizeaz prin urmtoarele
restricii:
numrul de cmpuri din lista de cmpuri
asociat fiecrei instruciuni SELECT i UNION
SELECT trebuie s fie acelai;
este permis doar o dat utilizarea clauzei
ORDER BY, dup ultima instruciune UNION
SELECT;
secvena de nume din fiecare list de cmpuri
trebuie s corespund unor intrri identice.
Comenzi pentru manipularea datelor
INSERT
Sintaxa comenzii prezint dou forme:
INSERTVALUES i INSERT SELECT.
INSERT INTO tab (cmp1, cmp2...)
VALUES (valoare1,valoare2...);
Trebuie s se respecte urmtoarele reguli:
valorile menionate n clauza VALUES vor avea
acelai tip cu cmpurile specificate n clauza INTO,
mrimea valorii corespunztoare fiecrui cmp
va fi mai mica dect dimensiunea cmpului,
daca un cmp are definiia NOT NULL, va fi
obligatorie introducerea unei valori pentru acesta.
INSERT INTO nume_tab1 (cmp1, cmp2...)
SELECT [domeniu] [lista selectie]
from nume_tab2 [WHERE criteriu];

Reguli suplimentare:
fraza SELECT nu poate extrage nregistrri din
tabela destinaie;
numrul i natura cmpurilor menionate n
clauza INTO trebuie s fie aceleai cu numrul i
natura cmpurilor returnate de instruciunea
SELECT.
Comanda DELETE are urmtoarea sintax:
DELETE FROM tabela [WHERE criteriu];
terge parial sau total nregistrrile din tabele.

Comanda UPDATE are urmtoarea sintax:


UPDATE tabela
SET cmp1 = valoare1 [,cmp2 = valoare2]...
[WHERE criteriul_de_actualizare];
Aceasta are att scopul de a insera noi nregistrri,
ct si de a modifica valorile cmpurilor din
nregistrrile existente.

S-ar putea să vă placă și