Sunteți pe pagina 1din 20

Limbajul SQL

Sectiunile 12, 15, 16, 17

Introducere n SQL
Anatomia unei instruciuni SQL
Lucrul cu coloane, caractere i
rnduri
Operatori de comparare
Sortarea
Funcii single-row i multiplerow

Introducere n SQL
Structured Query Language este folosit pentru
interogarea bazelor de date.
Cele mai simple dintre comenzile SQL sunt:
Comanda DESCRIBE afieaz structura tabelului. Sintaxa
este:

DESCRIBE <table name>;


Comanda SELECT * afieaz toate liniile unui tabel.
Sintaxa:

SELECT * FROM <table name>;


Pentru a obine un subset
instruciunea SELECT astfel:

al

datelor,

modificm

SELECT <column name 1, column name 2,


etc.>
FROM <table name>
WHERE <condition>

Anatomia unei instruciuni SQL


Cuvntul cheie este
SELECT.
Noiuni.
Arithmetic expression
Arithmetic operator
Clause
Column
Column alias
FROM clause
JOIN
NULL
Projection
SELECT clause
Selection
SELECT statement
Statement

Lucrul cu coloane, caractere i


rnduri

DESCRIBE (DESC)
Se folosete pentru a afia structura tabelului:
denumirile coloanelor, tipurile de date ale acestora,
dimensiunea, tipul de cheie, dac accept sau nu valori
nule i constrngerile structurale.
DESC departments;

Lucrul cu coloane, caractere i


rnduri
Adaugarea unei coloane:
ALTER TABLE <nume_tabel>
ADD (<nume_coloana_noua> <tip>);
Stergerea unei coloane:
ALTER TABLE <nume_tabel>
DROP COLUMN <nume_coloana>;

Lucrul cu coloane, caractere i


rnduri
Inserarea unui rnd se realizeaza
folosind
INSERT INTO <nume_tabel>
VALUES (valoare1, valoare2,);
Stergerea unui rnd:
DELETE FROM <nume_tabel>
WHERE <nume_coloana>=<valoare>;

Lucrul cu coloane, caractere i


rnduri
Concatenarea i alias-urile permit
construirea unor iruri complexe
pentru afisarea rezultatelor intr-un
mod mai prietenos.
Se folosesc || , literali ntre
apostrofuri i AS pentru a construi
denumirea
coloanei
de
iesire
(output).

Exemple:
SELECT first_name ||' ' || last_name AS "DJ on
Demand Clients
FROM d_clients;
SELECT first_name,last_name AS "DJ on
Demand Clients
FROM d_clients;
SELECT last_name ||' has a monthly salary of '
|| salary || ' dollars' AS Pay FROM employees
SELECT last_name ||' has a '|| 1 ||' year salary
of '|| salary*12 ||' dollars' AS Pay
FROM employees;

Lucrul cu coloane, caractere i


rnduri
n afar de cazul n care se cere altfel, rezultatul unei interogri SQL
va afia rezultatele fr a elimina rndurile duplicat. Pentru a obine
rndurile o singur dat se folosete clauza DISTINCT.
Folosind clauza DISTINCT, afiarea este ordonat alfabetic, iar la
interogrile cu mai multe coloane se obin toate combinaiile
distincte.

Limitarea rndurilor selectate


Clauza WHERE se folosete pentru a
efectua o selecie a rndurilor afiate de
interogarea SELECT, pe baza ndeplinirii de
ctre acestea a unei condiii logice. Logica
utilizat este trivalent (true, false, null),
iar clauza WHERE reine doar rndurile
pentru care condiia are valoarea true.
Clauza WHERE urmeaz imediat ca
execuie dup instruciunea SELECT.
Nu se poate folosi un alias n clauza
WHERE.

Operatori de comparare
n construcia unei expresii logice se pot folosi operatorii
relaionali cunoscui: <, <=, >, >=, =, < >, !=, ^= (ultimii 3
sunt echivaleni) precum i operatorii logici AND, OR, NOT.
Logica utilizat fiind trivalent (TRUE, FALSE, NULL), trebuie
acordat atenie situaiilor n care cel puin unul din operanzi
este NULL: va rezulta totdeauna NULL (nu tiu).
Nu sunt corecte construciile
= NULL
< > NULL, != NULL, ^= NULL
n locul lor se folosesc operatorii
IS NULL
IS NOT NULL

Operatori de comparare
Se poate folosi operatorul BETWEEN x AND
y pentru a nlocui o construcie de tipul (>=
x) AND (<= y). Performana executrii
instruciunii este aceeai, se obine doar un
ctig de lizibilitate.
Apartenena unui element la o mulime
poate fi testat cu ajutorul operatorului x IN
(a, b, c, ). Exist i combinaia NOT IN.
Atenie la construcii de tipul x NOT IN (100,
200, NULL), care vor produce totdeauna
NULL. Se va folosi NOT NULL.

Operatori de comparare
Pentru comparaii generice cu date de tip numeric,
dat sau caracter se poate folosi operatorul LIKE.
Constructorii de expresii-tip folosesc
caracterul % pentru un ir de 0 sau mai multe
caractere
caracterul _ pentru un singur caracter oarecare
Pentru a folosi n expresie chiar caracterele _ sau
%, acestea vor fi precedate de caracterul ESCAPE
\.
Exemplu:
SELECT last_name
FROM employees
WHERE last_name LIKE '_o%'

Operatori ordinea evalurii


expresiilor
Evaluarea expresiilor se face innd cont de prioritatea
operatorilor i de ordinea scrierii acestora.

Sortarea rndurilor
Pentru a sorta rndurile rezultate n urma unei
interogri SQL se poate folosi clauza ORDER
BY, care se plaseaz ultima n interogare.
Exemplu:
SELECT employee_id, first_name AS Nume
FROM employees
WHERE employee_id < 105
ORDER BY Nume, birth_date;
Se pot folosi i mai multe (oricte, maxim
numrul de coloane al tabelului) coloane drept
criterii de sortare, primele avnd prioritate.

Sortarea rndurilor
Implicit sortarea este ascendent, dar se
poate preciza DESC pentru fiecare criteriu
n parte (NULL este ultimul n ordine
cresctoare).
Se poate folosi un alias n clauza ORDER BY.
Coloana dup care se sorteaz nu trebuie
neaprat s fac parte dintre cele returnate
de interogarea SELECT.
Ordinea execuiei interogrii: FROM, WHERE,
SELECT, ORDER BY.

Funcii single-row i multiple-row


Funciile efectueaz operaii asupra datelor de intrare i produc
rezultate (date de ieire).
Exist dou tipuri de funcii:
Funcii single-row, care opereaz asupra datelor dintr-o
singur linie a tabelului, producnd un rezultat pentru fiecare
linie.
Funcii multiple-row (sau funcii de grup), care opereaz
asupra unor grupuri de linii din tabel i produc un rezultat
pentru fiecare grup de linii.

Funcii single-row
Funciile single-row
operaii asupra:

efectueaz

Caracterelor i irurilor de
caractere (convertesc litere mici
n mari i invers, concateneaz
iruri, extrag subiruri, calculeaz
lungimea irului, etc.)
Numerelor (rotunjesc, trunchiaz,
calculeaz restul mpririi)
Datelor (ziua curent, adaug
luni, zile, rotunjesc, fac scderi,
etc.)
Conversii (ntre tipul caracter i
tipurile numeric sau dat)
Generale (verificri i nlocuiri ale
valorilor
NULL,
expresii
condiionale)

Funcii multiple-row
Funciile multiple-row opereaz asupra datelor din mai
multe linii i obin un rezultat pentru fiecare grup de linii:
AVG calculeaz media aritmetic a datelor numerice
COUNT
returneaz numrul de linii
MAX (MIN) calculeaz valoarea maxim (minim) a
datelor numerice, calendaristice sau de tip caracter
SUM calculeaz suma datelor numerice
VARIANCE calculeaz variaia datelor numerice
STDDEV calculeaz abaterea standard a datelor
numerice