Sunteți pe pagina 1din 26

CURS 2

SQL I

M. Danubianu - Teoria si implementarea bazelor de date

LIMBAJUL SQL - Obiective i caracteristici


-

crearea bazelor de date i a structurilor pentru rela ii; efectuarea de opera ii elementare de gestiune a datelor, precum inserarea, modificarea i tergerea acestora din cadrul rela iilor; efectuarea interogrilor ncepnd cu cele simple pn la cele complexe, n scopul transformrii datelor brute n informa ii. opera iile se realizeaz cu un efort minim din partea utilizatorului, structura comenzilor i sintaxa acestora este relativ uor de nv at. limbajul este portabil, - respect un standard recunoscut astfel nct s se poat utiliza aceeai structur i sintax a comenzilor la trecerea de la un SGBD la altul SQL prezint dou componente principale: - un limbaj de definire a datelor (DDL) utilizat pentru definirea structurii bazei de date i - un limbaj de manipulare a datelor (DML) pentru regsirea i reactualizarea datelor.
M. Danubianu - Teoria si implementarea bazelor de date 2

SQL nu con ine comenzi de control (nu exist instruc iuni de tipul IF..THEN..ELSE, GO TO, DO..WHILE sau alte comenzi care s genereze un flux de control) poate fi utilizat n dou moduri:
-

interactiv prin introducerea instruc iunilor de la un terminal; prin integrarea instruc iunilor SQL ntr-un procedural. limbaj

Are urmtoarele caracteristici:


-

limbaj neprocedural. are un format liber; comenzile sunt structurate pe baza unor cuvinte standard din limba englez ( Create, Select, Insert..)
M. Danubianu - Teoria si implementarea bazelor de date 3

Principalele comenzi SQL


Pentru manipularea datelor SELECT INSERT DELETE UPDATE CREATE TABLE DROP TABLE ALTER TABLE CREATE VIEW DROP VIEW GRANT REVOKE COMMIT ROLLBACK Extragerea datelor din baza de date Adugarea de noi linii ntr-un tabel Stergerea de linii dintr-un tabel Modificarea valorilor unor atribute Adugarea unui nou tabel la baza de date Stergerea unui tabel din baza de date Modificarea structurii unei baze de date Crearea unuitabel virtual (vedere) Stergerea unui tabel virtual Acordarea unor drepturi pentru utilizatori Revocarea unor drepturi pentru utilizatori Marcheaz sfritul unei tranzac ii Abandoneaz tranzac ia n curs.

Pentru definirea bazei de date

Pentru controlul accesului la baza de date Pentru controlul tranzac iilor

M. Danubianu - Teoria si implementarea bazelor de date

Terminologie i conven ii de scriere a comenzilor SQL


In limbajul SQL standardizat se utilizeaz termenii de tabele , coloane i rnduri. O instruc iune SQL este format din cuvinte rezervate i cuvinte definite de utilizator. Cuvintele rezervate : - au un n eles fix, trebuie scrise exact cum este necesar i nu pot fi mpr ite n mai multe rnduri. Cuvintele definite de utilizator : - sunt formate de ctre acesta, conform unor anumite reguli de sintax i reprezint denumirile diverselor obiecte din baza de date, cum ar fi rela iile, coloanele , vederile, indexurile etc. Majoritatea compnentelor unei instruc iuni SQL nu sunt sensibile la tipul de litere. excep ie important - faptul c datele de tip caracter literal trebuie s fie scrise exact cum apar n baza de date.
M. Danubianu - Teoria si implementarea bazelor de date 5

Manipularea datelor n SQL Opera ia fundamental n SQL este consultarea


fraza SELECT - prezint trei clauze principale : SELECT, FROM i WHERE. SELECT corespunde operatorului de proiec ie din algebra rela ional, i este utilizat pentru desemnarea listei de atribute (coloane, cmpuri) din tabelul rezultat; FROM permite enumerarea rela iilor din care vor fi extrase informa iile aferente consultrii; WHERE desemneaz predicatul selectiv al algebrei rela ionale, relativ la atributele rela iilor care apar n clauza FROM. comand extrem de puternic echivalentul opera iilor de selec ie, proiec ie i uniune din algebra rela ional

M. Danubianu - Teoria si implementarea bazelor de date

Forma general a instruc iunii SELECT este:


Alias reprezint aliasul atribuit relaiei ele pului cm este num cm selectat p ele pului num e_nou num cm selectat n noul tabel local_alias aliasul local atribuit de utilizator; cond_leg condi ia de legtur ntre tabelele n care se m anipuleaz datele; cond_filtru condi ia de filtrare a nregistrrilor; purilor n funcie de care se face gruparea list _cm puri list a cm nregistrrilor - cm pul p_ord cm dup care se face ordonarea nregistrrilor -

SELECT [ALL | DISTINCT] [*] [<alias>.]<camp> [AS <nume_nou>] [, [<alias>.]<camp> [AS <nume_nou>] ...] FROM <tabel> [<local_alias>] [, <tabel> [<local_alias>] ...] [WHERE <cond_leg> [AND <cond_leg> ...] [AND | OR <cond_filtru> [AND | OR <cond_filtru> ...]]] [GROUP BY <lista_campuri>] [HAVING <cond_filtru>] [ORDER BY <camp_ord> [ASC | DESC] [, <camp_ord> [ASC | DESC] ...]]

M. Danubianu - Teoria si implementarea bazelor de date

Secven a de prelucrare a unei fraze SELECT...


...este urmtoarea: - FROM - specific tabelul sau tabelele care vor fi utilizate; - WHERE - filtreaz rndurile supuse unei anumite condi ii sau con ine condi ia de jonc iune ntre mai multe tabele - GROUP BY - formeaz grupuri de rnduri cu aceleai valori ale coloanelor din lista de parametri; - HAVING - filtreaz grupurile supuse unei anumite condi ii; - SELECT - specific ce coloane vor aprea n tabelul rezultat; - ORDER BY - specific ordinea ieirii. Opera ia SELECT este nchis: rezultatul unei interogri unui tabel este un alt tabel. rezultatul poate fi un tabel "normal" (tabel salvat pe disc), un tabel temporar (cursor - tabel care se terge automat la nchiderea unei sesiuni de lucru) sau chiar o variabil-tablou (matrice).
M. Danubianu - Teoria si implementarea bazelor de date 8

Interogri n SQL

M. Danubianu - Teoria si implementarea bazelor de date

Consultarea datelor dintr-un singur tabel selectate dupa diferite conditii impuse inregistrarilor

Care sunt angajatii al caror nume este King? intervine un singur tabel i anume Employees. In clauza WHERE apare predicatul de selec ie (conditia) : last_name=King

M. Danubianu - Teoria si implementarea bazelor de date

10

Care sunt angajatii subordonati managerului cu identificatorul 100 cu salarii mai mari de 2500?

M. Danubianu - Teoria si implementarea bazelor de date

11

Operatorul BETWEEN
Se poate reformula ultima interogare astfel: Care sunt angajatii

subordonati managerului cu identificatorul 100 cu salarii mai mari de 2500 dar mai mici de 10000?
Se poate folosi urmtoarea instruc iune: SELECT * FROM employees WHERE manager_id=100 AND salary>2500 AND salary <10000

sau

M. Danubianu - Teoria si implementarea bazelor de date

12

Operatorul LIKE
Se folosete pentru a compara un atribut de tip ir de caractere cu un literal (constant de tip ir de caractere). %, "_" este un specificator multiplu, joker sau masc. Care sunt angajatii al cror nume contine, in orice pozitie, incepand cu poz. 2, caracterul s?

M. Danubianu - Teoria si implementarea bazelor de date

13

Operatorul IN
Are urmtorul format general: expresie1 IN (expresie2, expresie3,..) Rezultatul evalurii unui predicat care con ine acest operator va fi "adevrat" dac valoarea expresiei1 este egal cu cel pu in una din valorile: expresie2, expresie3, .. i este util atunci cnd condi iile de selec ie sunt mai complexe. Care sunt angajatii al caror identificator de job este IT-PROG sau ST_MAN?

M. Danubianu - Teoria si implementarea bazelor de date

14

Operatorul IS NULL
Care sunt angajatii care nu primesc comision? Not: Operatorul NULL se utilizeaz cu IS i nu cu semnul "=". Utilizarea unei expresii de forma =NULL ar conduce la un rezultat care va fi ntotdeauna fals, chiar dac expresia nu este nul.

M. Danubianu - Teoria si implementarea bazelor de date

15

Consultarea datelor dintr-un singur tabel selectate dupa diferite coloane

Faceti o lista cu prenumele si numele angajatilor ordonate descrescator dupa prenume.

M. Danubianu - Teoria si implementarea bazelor de date

16

Consultarea datelor din mai multe tabele Reuniunea inregistrarilor


Presupunem ca avem doua tabele, cu structuri identice, cu date referitoare la angajati, employees1 si employees2. Fiecare din acestea contin date corespunzatoare angajatilor din grupe diferite de departamente. Dacase doreste o situatie a tutiror angajatilor se va face o reuniune dupa modelul: SELECT * FROM employees1 UNION SELECT * FROM employees22 SQL elimin automat dublurile, deci nu este necesar utilizarea clauzei DISTINCT.

M. Danubianu - Teoria si implementarea bazelor de date

17

Consultarea datelor din mai multe tabele

Diferen a
S se gseasc acele departamente pentru care nu exista nici un angajat

M. Danubianu - Teoria si implementarea bazelor de date

18

Consultarea datelor din mai multe tabele Gasirea inregistrarilor comune

SELECT *

FROM employees1 INTERSECT SELECT * FROM employees2

M. Danubianu - Teoria si implementarea bazelor de date

19

Produsul cartezian

SELECT * FROM employees, departments

M. Danubianu - Teoria si implementarea bazelor de date

20

Consultarea datelor din mai multe tabele Jonc iunea n SQL


trebuie inut cont de faptul c jonc iunea este o combina ie de produs cartezian i selec ie. Care este numele departamentelor in care exista angajati?

M. Danubianu - Teoria si implementarea bazelor de date

21

Care este numele identificatorul 102?

managerului

angajatului

cu

Deoarece toate datele necesare se gasesc in tabelul employees se impune o legatura ???

M. Danubianu - Teoria si implementarea bazelor de date

22

Subconsultri
posibilitatea imbricrii a dou sau mai multe fraze SELECT astfel nct pot fi formulate interogri cu mare grad de complexitate Forma general a unei subconsultri: SELECT list_cmpuri1 FROM List_tabele1 WHERE cmp1 operator (SELECT list_cmpuri2 FROM List_tabele2 WHERE condi ii) unde operator poate fi: IN sau NOT IN EXIST sau NOT EXIST CONTAINS, ALL, ANY etc. Subconsultri : corelate sau necorelate
M. Danubianu - Teoria si implementarea bazelor de date 23

Operatorul IN (NOT IN)


Care sunt angajatii care lucreaza in acelasi departament cu angajatul cu numele King?

M. Danubianu - Teoria si implementarea bazelor de date

24

Care sunt angajatii care lucreaza in alte departamente decat angajatii cu numele King?

M. Danubianu - Teoria si implementarea bazelor de date

25

Operatorii ALL, SOME i ANY


ALL, SOME i ANY permit utilizarea unui predicat de compara ie care este aplicat rezultatului unei subconsultri. predicat de compara ie -un predicat care con ine unul din operatorii: =,>=,<=,<,> sau . Care este numele si departamentul angajatilor al caror salariu este mai mare decat salariile tuturor angajatilor din departamentul 100.

M. Danubianu - Teoria si implementarea bazelor de date

26

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