introducere_in_sql_sectiunile_12_15_16_17

Post on 14-Apr-2016

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related