Documente Academic
Documente Profesional
Documente Cultură
1. Instrucțiunea SELECT
2. Generarea listei de ieșire (proiecție)
3. Sortarea datelor (ORDER BY)
4. Selectarea datelor (SELECT)
5. Predicate de formare a expresiilor logice
6. Funcții MySQL
7. Gruparea datelor – GROUP BY
8. Gruparea datelor – HAVING
Obiective
Caracteristici:
- rezultatul interogarii SELECT (result set) seamană cu un tabel;
- result set este un ansamblu de rânduri și coloane, fiecare coloană
are o denumire dată de server sau aleasă de catre noi;
- datele provin din una sau mai multe tabele, total sau parțial, astfel:
- Toate atributele tabelului indicat;
- Un set din atributele tabelului indicat (proiecția);
- O parte din înregistrărișe tabelului indicat (selecție);
- Prelucrări aplicate informatiilor din coloane (aplicarea funcțiilor predefinite).
1. Instrucțiunea SELECT
Sintaxa:
SELECT [{ ALL | DISTINCT }] { lista_coloane | * }
FROM nume_tabel1 [ AS alias1 ] [, nume_tabel2 [ AS alias2 ].,..]
[ WHERE conditie_selectare_inregistrari ]
[ GROUP BY { nume_coloana | expresie }.,.. ]
[ HAVING conditie_selectare_grup ]
[ { UNION [ALL] | INTERSECT | EXCEPT }
SELECT <interogare 2> ]
[ ORDER BY nume_camp1 | intreg [ ASC | DESC ]
[, nume_camp2 | intreg [ ASC | DESC ].,..]];
Exemplu:
select * from departs;
select name, post from emp;
1. Instrucțiunea SELECT
arte Descriere
Unul dintre următoarele predicate: ALL, DISTINCT, DISTINCTROW sau
TOP. Utilizați predicatul pentru a restricționa numărul de înregistrări
predicat
returnate. Dacă nu este specificat niciun predicat, valoarea implicită este
ALL.
Specifică faptul că sunt selectate toate câmpurile din tabelul sau tabelele
*
specificate.
Numele tabelului care conține câmpurile din care sunt selectate
tabel
înregistrările.
Numele câmpurilor care conțin datele pe care doriți să le regăsiți. Dacă
câmp1, câmp2 includeți mai multe câmpuri, acestea sunt regăsite în ordinea listată.
Lista coloanelor extrase sunt amplasate între cuvintele cheie SELECT și FROM.
1. Afișarea tuturor coloanelor tabelului Project:
SELECT * FROM projects;
2. Afișarea angajaților cu indicarea funcției și departamenului din care fac parte:
SELECT e_depart e_fname, e_lname, e_post
FROM employees;
3. Afișarea angajaților cu indicarea postului și salariul acestora:
SELECT e_fname AS "Nume", e_lname AS "Prenume", e_post AS "Functia“,
e_salary*0.86 AS "Salariu"
FROM employees;
4. Afișați listei angajaților cu vârsta acestora:
SELECT e_fname AS "Nume", e_lname AS "Prenume",
YEAR(CURRENT_DATE())-YEAR(e_born) AS "Varsta"
FROM employees;
2. Generarea listei de ieșire (proiecție)
5. Afișarea funcțiilor și salariilor angajaților:
SELECT e_post, e_salary
FROM employees;
8. Sarcină:
a) de afișat lista angajaților cu numele complet, data nașterii și adresa.
b) de afișat lista proiectelor cu șefii de proiect și compania ce a solicitat proiectul.
c) de afișat lista proiectelor,, perioada de realizare (în ani) și costul.
3. Sortarea datelor (ORDER BY)
1. Afișarea datelor din tabelul Project în ordinea datei de începere a proiectului:
SELECT * FROM projects
ORDER BY p_begin;
2. Sortarea angajaților în ordine crescătoare pentru fiecare departament:
SELECT e_depart, e_fname, e_lname
FROM employees
ORDER BY e_depart, e_fname;
3. Sortarea angajaților după salariu (de la cel mai mare la cel mai mic):
SELECT e_fname AS "Nume", e_lname AS "Prenume",
e_post AS "Functia", e_salary AS "Salariu“
FROM employees
ORDER BY 4 DESC;
4. Sortarea datelor după departamente, funcții și salarii:
SELECT e_depart AS "Departament", e_post AS "Functia", e_salary AS "Salariu„
FROM employees
ORDER BY 1, 3 DESC, 2;
Sarcină:
a) afișarea listei angajaților sortați după data nașterii.
b) afișarea listei proiectelor cu șefii de proiect, sortată după compania ce a solicitat proiectul și anul
4. Selectarea datelor (SELECT)
WHERE - conține condiții pentru selectarea înregistrărilor individuale. Condiția este o expresie logică și
poate lua una din cele 3 valori:
TRUE – adevarat,
FALSE – fals,
NULL - valoare necunoscută, nedefinită (interpretată ca falsă). Condiția se formează prin aplicarea
diferiților operatori și predicate.
Operatori logici
La formarea expresiilor logice ce includ două și mai multe criterii de selecție sunt utilizați următorii
operatori logici::
AND – înmulțirea logică,
OR – suma logică,
NOT - valoare necunoscută, nedefinită (interpretată ca falsă). Condiția se formează prin aplicarea
diferiților operatori și predicate.
a b a AND b a b a OR b
0 0 0 0 0 0
0 1 0 a NOT a 0 1 1
1 0 0 0 1 1 0 1
1 1 1 1 0 1 1 1
4. Selectarea datelor (SELECT)
1. Afișarea listei angajaților departamentului Proiectare ce au un salariu mai mare de 8000 lei:
SELECT * FROM employees
WHERE e_depart = "Proiectare“ AND e_salary >10000;
.
2. Afișarea listei angajaților-bărbați cu anul nașterii după 1979:
SELECT * FROM employees
WHERE e_born > "1979-12-31" AND e_sex = "m";
3. Afișarea listei angajaților din departamentele: Design interior, Design exterior cu un salariu
mai mic de 8000 lei:
SELECT * FROM employees
WHERE (e_depart = "Design interior" OR e_depart = "Design exterior") AND e_salary < 8000;
4. Afișarea listei tuturor angajaților cu excepția angajaților departamentelor Financiar ;I Resurse
umane:
SELECT * FROM employees
WHERE NOT (e_depart = "Finaciar" OR e_depart = "Resurse umane");
4. Selectarea datelor (SELECT)
Sarcini:
1.
SELECT * FROM projects
WHERE p_end > current_date AND p_cost > 2000000;
Exemple:
1. Lista angajaților ce au codul de angajare 7, 11, 13 și 20
SELECT * FROM employees
WHERE e_id IN (7, 11, 13, 20);
Exemple:
1. Lista angajaților ce au codurile de angajare de 5 la 15:
SELECT * FROM employees
WHERE e_id BETWEEN 5 AND 15;
Exemple:
1. Lista tuturor proiectelor ce nu au inregistrată data de finisarede facto:
SELECT * FROM projects
WHERE p_finish IS NULL;
5. Predicate de formare a expresiilor logice
Utilizarea predicatelor:
Sarcini:
4. Afișarea datei de început pentru primul proiect și data de finisare al ultimului proiect:
SELECT min(p_begin), max(p_end)
FROM projects;
6. Exemple de utilizare a funcțiilor agregat.
5. Numărul de angajați:
SELECT count(*)
FROM employees;
8. Sarcină: Numărul de proiecte care nu au înregistrată data de finisare – de facto (au fost finisate
în perioada prestabilită):
7. Gruparea datelor – GROUP BY
De exemplu, nu puteți obține informații despre angajații care au cel mai mare salariu în
departamentul lor folosind această interogare:
Clauza HAVING permite introducerea unor restricţii care sunt aplicate grupurilor de
tupluri, deci nu tuplurilor "individuale", aşa cum "face" clauza WHERE. Din tabelul
rezultat sunt eliminate toate grupurile care nu satisfac condiţia specificată.
Clauza HAVING "lucrează" împreună cu o clauză GROUP BY, fiind practic o clauză
WHERE aplicată acesteia.
.
Exemplu: Lista departamentelor în care activează mai multe de 5 persoane:
SELECT e_depart, count(*) “personae”
FROM employees
GROUP BY e_depart
HAVING count(*)>5
Atenție! nu puteți specifica funcții agregate în clauza WHERE - este o eroare de sintaxă!
Sarcină: De afișat lista departamentelor, care au înregistrat salariul mediu mai mare de 5000.
Recapitulare
https://www.competentedigitale.ro/mysql/t4.php