introducere_in_sql_sectiunile_12_15_16_17

20
Limbajul SQL Sectiunile 12, 15, 16, 17

Upload: alex-radulescu

Post on 14-Apr-2016

3 views

Category:

Documents


0 download

DESCRIPTION

zxbbbdf

TRANSCRIPT

Limbajul SQL

Sectiunile 12, 15, 16, 17

Introducere în SQLAnatomia unei instrucţiuni SQL

Lucrul cu coloane, caractere şi rânduriOperatori de comparare

SortareaFuncţii single-row şi multiple-row

Introducere în SQL

• Structured Query Language este folosit pentru interogarea bazelor de date.

• Cele mai simple dintre comenzile SQL sunt:– Comanda DESCRIBE afişează structura tabelului. Sintaxa este:

DESCRIBE <table name>;– Comanda SELECT * afişează toate liniile unui tabel. Sintaxa:

SELECT * FROM <table name>;– Pentru a obţine un subset al datelor, modificăm instrucţiunea SELECT

astfel:SELECT <column name 1, column name 2, etc.>FROM <table name>WHERE <condition>

Anatomia unei instrucţiuni SQL• Cuvântul cheie este SELECT.• Noţiuni.

– Arithmetic expression– Arithmetic operator– Clause– Column– Column alias– FROM clause– JOIN– NULL– Projection– SELECT clause– Selection– SELECT statement– Statement

Lucrul cu coloane, caractere şi rânduri• DESCRIBE (DESC)• Se foloseşte pentru a afişa structura tabelului: denumirile coloanelor,

tipurile de date ale acestora, dimensiunea, tipul de cheie, dacă acceptă sau nu valori nule şi constrângerile structurale.

DESC departments;

Lucrul cu coloane, caractere şi rânduri

• 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 rânduri

• Inserarea unui rând se realizeaza folosind INSERT INTO <nume_tabel>VALUES (valoare1, valoare2,…);

• Stergerea unui rând:DELETE FROM <nume_tabel>WHERE <nume_coloana>=<valoare>;

Lucrul cu coloane, caractere şi rânduri

• 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 PayFROM employees;

Lucrul cu coloane, caractere şi rânduri

• În afară de cazul în care se cere altfel, rezultatul unei interogări SQL va afişa rezultatele fără a elimina rândurile duplicat. Pentru a obţine rândurile o singură dată se foloseşte clauza DISTINCT.

• Folosind clauza DISTINCT, afişarea este ordonată alfabetic, iar la interogările cu mai multe coloane se obţin toate combinaţiile distincte.

Limitarea rândurilor selectate

• Clauza WHERE se foloseşte pentru a efectua o selecţie a rândurilor afişate de interogarea SELECT, pe baza îndeplinirii de către acestea a unei condiţii logice. Logica utilizată este trivalentă (true, false, null), iar clauza WHERE reţine doar rândurile pentru care condiţia are valoarea true.

• Clauza WHERE urmează imediat ca execuţie după instrucţiunea SELECT.

• Nu se poate folosi un alias în clauza WHERE.

Operatori de comparare

• În construcţia unei expresii logice se pot folosi operatorii relaţionali cunoscuţi: <, <=, >, >=, =, < >, !=, ^= (ultimii 3 sunt echivalenţi) precum şi operatorii logici AND, OR, NOT.

• Logica utilizată fiind trivalentă (TRUE, FALSE, NULL), trebuie acordată atenţie situaţiilor în care cel puţin unul din operanzi este NULL: va rezulta totdeauna NULL (“nu ştiu”).

• Nu sunt corecte construcţiile= NULL< > NULL, != NULL, ^= NULL

• În locul lor se folosesc operatoriiIS NULLIS NOT NULL

Operatori de comparare

• Se poate folosi operatorul BETWEEN x AND y pentru a înlocui o construcţie de tipul (>= x) AND (<= y). Performanţa executării instrucţiunii este aceeaşi, se obţine doar un câştig de lizibilitate.

• Apartenenţa unui element la o mulţime poate fi testată cu ajutorul operatorului x IN (a, b, c, …). Există şi combinaţia NOT IN.

• Atenţie la construcţii de tipul x NOT IN (100, 200, NULL), care vor produce totdeauna NULL. Se va folosi NOT NULL.

Operatori de comparare

• Pentru comparaţii generice cu date de tip numeric, dată sau caracter se poate folosi operatorul LIKE.

• Constructorii de expresii-tip folosesccaracterul “%” pentru un şir de 0 sau mai multe caracterecaracterul “_” pentru un singur caracter oarecare

• Pentru a folosi în expresie chiar caracterele “_” sau “%”, acestea vor fi precedate de caracterul ESCAPE “\”.

• Exemplu:SELECT last_nameFROM employeesWHERE last_name LIKE '_o%'

Operatori – ordinea evaluării expresiilor

• Evaluarea expresiilor se face ţinând cont de prioritatea operatorilor şi de ordinea scrierii acestora.

Sortarea rândurilor

• Pentru a sorta rândurile rezultate în urma unei interogări SQL se poate folosi clauza ORDER BY, care se plasează ultima în interogare.

• Exemplu:SELECT employee_id, first_name AS “Nume”FROM employeesWHERE employee_id < 105ORDER BY “Nume”, birth_date;

• Se pot folosi şi mai multe (oricâte, maxim numărul de coloane al tabelului) coloane drept criterii de sortare, primele având prioritate.

Sortarea rândurilor

• Implicit sortarea este ascendentă, dar se poate preciza DESC pentru fiecare criteriu în parte (NULL este ultimul în ordine crescătoare).

• Se poate folosi un alias în clauza ORDER BY.• Coloana după care se sortează nu trebuie

neapărat să facă parte dintre cele returnate de interogarea SELECT.

• Ordinea execuţiei interogării: FROM, WHERE, SELECT, ORDER BY.

Funcţii single-row şi multiple-row• Funcţiile efectuează operaţii asupra datelor de intrare şi produc rezultate

(date de ieşire).• Există două tipuri de funcţii:

– Funcţii single-row, care operează asupra datelor dintr-o singură linie a tabelului, producând un rezultat pentru fiecare linie.

– Funcţii multiple-row (sau funcţii de grup), care operează asupra unor grupuri de linii din tabel şi produc un rezultat pentru fiecare grup de linii.

Funcţii single-row

• Funcţiile single-row efectuează operaţii asupra:– Caracterelor şi şirurilor de caractere

(convertesc litere mici în mari şi invers, concatenează şiruri, extrag subşiruri, calculează lungimea şirului, etc.)

– Numerelor (rotunjesc, trunchiază, calculează restul împărţirii)

– Datelor (ziua curentă, adaugă luni, zile, rotunjesc, fac scăderi, etc.)

– Conversii (între tipul caracter şi tipurile numeric sau dată)

– Generale (verificări şi înlocuiri ale valorilor NULL, expresii condiţionale)

Funcţii multiple-row

• Funcţiile multiple-row operează asupra datelor din mai multe linii şi obţin un rezultat pentru fiecare grup de linii:– AVG calculează media aritmetică a datelor numerice– COUNT returnează numărul de linii– MAX (MIN) calculează valoarea maximă (minimă) a datelor

numerice, calendaristice sau de tip caracter– SUM calculează suma datelor numerice– VARIANCE calculează variaţia datelor numerice– STDDEV calculează abaterea standard a datelor numerice