Cuvinte cheie HAVING
Cuvântul cheie HAVING este folosit în instrucțiunea SELECT împreună cu cuvântul cheie GROUP BY pentru a specifica care grupuri ar trebui să fie reprezentate în ieșire. Pentru GROUP BY, cuvântul cheie HAVING joacă același rol ca WHERE pentru ORDER BY. Cu alte cuvinte, WHERE stabilește condițiile pentru valorile din coloanele selectate și HAVING specifică condițiile pentru grupurile create cu GROUP BY.
Cuvântul HAVING din instrucțiunea SELECT trebuie să urmeze expresia cuvântului cheie GROUP BY și să precede și cuvântul ORDER BY dacă acesta este utilizat.
Sintaxa instrucțiunii SELECT, în care este utilizat cuvântul cheie HAVING, este după cum urmează.
SELECT coloana 1, coloana 2
Din tabelul1, tabelul2
GROUP BY colo1, coloana 2
ORDER BY colo1, coloana 2
SELECT CITY, AVG (PAY_RATE), AVG (SALARE) DE LA EMP_PAY_TMP
CITY AVG (PAY_RATE) AVG (SALARE)
De ce a fost selectată doar o singură linie? Din motivele următoare.
Deci, acum știți cum să grupați rezultatele interogării utilizând cuvântul cheie GROUP BY. Cuvântul cheie GROUP BY este utilizat în principal cu funcțiile SQL rezultate, cum ar fi tipurile SUM, AVG, MAX, MIN și COUNT. Cuvântul cheie GROUP BY este similar cu cuvântul cheie ORDER BY în sensul că ambele sortează datele de ieșire. Cuvântul cheie GROUP BY este destinat pentru sortarea datelor în grupuri, dar poate fi folosit pentru sortarea normală a datelor, cu toate că aceasta din urmă este mai ușor de făcut cu cuvântul cheie ORDER BY.
Cuvântul cheie HAVING este utilizat în instrucțiunea SELECT împreună cu cuvântul cheie GROUP BY pentru a specifica condițiile de selecție pentru grupurile create. Cuvântul WHERE este utilizat pentru a specifica condițiile de selecție pentru datele din coloană din lista de cuvinte cheie SELECT. În următoarea lecție, vom examina alte funcții pe care le puteți utiliza pentru a modifica prezentarea datelor de interogare.
Întrebări și răspunsuri
Când utilizați clauza ORDER BY în instrucțiunea SELECT, este necesar să utilizați cuvântul cheie GROUP BY?
Nu, nu este. Clauza GROUP BY într-o instrucțiune SELECT este opțională, dar poate fi foarte utilă atunci când utilizați ORDER BY.
Ce este o valoare de grup?
Luați în considerare coloana CITY a tabelului EMPLOYEE_TBL. Dacă selectați numele angajaților (LAST_NAME) și orașele (CITY) și le grupați după oraș, liniile pentru aceleași nume de oraș vor fi afișate împreună.
Pentru a grupa datele de interogare printr-o coloană din clauza GROUP BY, ar trebui această coloană să fie listată în lista de cuvinte cheie SELECT?
Obligatoriu. Pentru a grupa datele printr-o coloană, numele acesteia trebuie specificat în lista cuvântului cheie SELECT.
1. Vor funcționa următoarele instrucțiuni SELECT? Dacă nu, ce trebuie corectat?
· SELECT SUM (SALARE), EMP_ID DE LA EMPLOYEE_PAY_TBL GROUP DE 1 ȘI 2;
· SELECTAȚI EMP_ID, MAX (salariu) de la EMPLOYEE_PAY_TBL GROUP DE SALARE, EMP_ID;
· SELECT EMP_ID, COUNT (salariu) de la EMPLOYEE_PAY_TBL COMANDA DE GRUPUL EMP_ID DE SALARE;
2. Este adevărată următoarea afirmație: "Dacă utilizați cuvântul cheie HAVING, trebuie să utilizați și cuvântul cheie GROUP BY?"
3. Este adevărată următoarea afirmație: "Următoarea instrucțiune SQL va returna suma salariilor la grupuri"
SELECTAȚI SUMUL (SALARIU) DE LA EMPLOYEE_PAY_TBL
4. Este adevărată următoarea afirmație? "" Sunt coloanele selectate în interogare în lista cuvintelor cheie GROUP BY în aceeași ordine? "
5. Este adevărată următoarea afirmație: "Expresia cuvântului cheie HAVING spune GRUPULUI prin care grupuri ar trebui să fie incluse în ieșire?"
1. Scrieți instrucțiunea SQL, returnează numărul angajatului (emp_id), numele angajatului (LAST_NAME) și oraș (oraș) din tabele EMPLOYEE_TBL grupate în funcție de valorile ale orașului coloana.
2. Scrieți instrucțiunea SQL care returnează numele orașelor și numărul de angajați care trăiesc în ele din tabelul EMPLOYEE_TBL. Adăugați cuvântul cheie HAVING la instrucțiune pentru a afișa numai acele orașe în care există mai mult de doi angajați dintre acele informații despre care este disponibil în tabel.
Alăturați tabelele în interogări
Până în prezent, interogările pe care le-ați creat au extras date dintr-o singură masă. În această lecție, veți învăța cum să asociați tabele într-o interogare, astfel încât să puteți extrage date din mai multe tabele.
Principalele subiecte din această lecție vor fi următoarele subiecte.
- Principalele abordări pentru legarea tabelelor.
- Diferite tipuri de conexiuni.
- Cum și când să folosiți legarea tabelului.
- Un număr de exemple practice de legare a tabelelor.
- Consecințele legării necorespunzătoare a tabelului.
- Utilizarea aliaselor de masă în interogări.
Selectarea datelor din mai multe tabele
Abilitatea de a selecta date din mai multe tabele este una dintre cele mai utile caracteristici ale SQL. Fără această ocazie, însăși ideea unei baze de date relaționale devine lipsită de sens. Întrebările la o singură masă pot fi foarte informative, însă în baze de date reale, aveți adesea nevoie de date din mai multe tabele simultan.
În timpul lecției despre normalizare, ați încercat să vă convingeți că baza de date ar trebui împărțită în mese mai mici și mai ușor de gestionat. După divizarea tabelelor în tabele mai mici, tabelele asociate au coloane comune - câmpuri cheie sau doar chei. Aceste chei sunt folosite pentru a lega tabelele asociate.
O legătură combină două sau mai multe tabele pentru a permite extragerea datelor din mai multe tabele simultan.
S-ar putea să vă întrebați de ce să normalizați tabelele, dacă, în cele din urmă, trebuie să le combinați din nou pentru a extrage datele necesare? Răspunsul este simplu: extragerea tuturor datelor din toate tabelele este extrem de rară, deci este mai bine să combinați doar câteva tabele care sunt necesare în fiecare caz particular. Deși activitatea bazei de date poate încetini într-o oarecare măsură, acest lucru este în mod evident compensat printr-o simplificare semnificativă a muncii cu baza de date și gestionarea acesteia.
În ciuda faptului că numărul de metode de conectare a tabelelor propuse de implementările SQL diferite este suficient de mare, vom lua în considerare numai cele mai comune tipuri de legare, la care
- egalitate obligatorie (EQU JOIN);
- legătură naturală (JOIN NATURAL);
- legătura prin inegalitate (NON-EQU JOIN);
- legare externă (OUTOUN JOIN);
- legarea recursivă (SELF JOIN).