În acest capitol, vă vom arăta cum să extrageți informațiile din tabele. Veți învăța cum să omiteți sau să rearanjați coloanele și cum să eliminați în mod automat redundanța de la ieșirea dvs. În concluzie, veți învăța cum să setați condiția (verificați) pe care o puteți utiliza pentru a determina ce rânduri ale tabelului sunt utilizate în ieșire. Această ultimă caracteristică va fi descrisă mai departe în capitolele ulterioare și este una dintre cele mai elegante și mai puternice din SQL.
CREAREA CERERII
CE ESTE O ANSAMBLU?
Interogarea este comanda pe care o oferiți programului dvs. de bază de date și care îi spune să aducă anumite informații din tabele în memorie. Această informație este, de obicei, trimise direct la calculator sau ecranul terminalului pe care îl utilizați, deși, în cele mai multe cazuri, aceasta poate fi, de asemenea trimite la imprimantă, salvate într-un fișier (ca un obiect în memoria calculatorului), sau prezentate ca informații de bază pentru o altă echipă sau proces.
Unde se aplică cererile?
Toate interogările din SQL constau dintr-o singură comandă. Structura acestei comenzi este înșelătoare, deoarece trebuie să o extindeți astfel încât să efectuați evaluări complexe și procesarea datelor. Această comandă se numește SELECT.
SELECTAȚI COMANDA
În forma sa cea mai simplă, comanda SELECT instruiește pur și simplu baza de date să extragă informații din tabel. De exemplu, puteți emula o tabelă de vânzători introducând următoarele: Cu alte cuvinte, această comandă trimite doar toate datele din tabel. Cele mai multe programe vor da, de asemenea, anteturile coloanelor ca mai sus, iar altele permit formatare de ieșire detaliată, dar aceasta este dincolo de specificația standard. Firește, o interogare de această natură nu va ordona în mod necesar o ieșire în oricare dintre aceste moduri. Aceeași comandă însăși executată cu aceleași date, dar la momente diferite nu va putea să emită aceeași comandă. De obicei, rândurile se găsesc în ordinea în care se găsesc în tabel, deoarece, așa cum am stabilit în capitolul anterior, această ordine este arbitrară. Aceasta nu este neapărat ordinea în care datele au fost introduse sau stocate. Puteți aranja ieșirea prin comenzile SQL direct: utilizând o propoziție specială. Mai târziu, vă vom arăta cum. Și acum, asimilați-vă că, în lipsa unei ordini explicite, nu există o ordine clară în concluzia voastră.
Utilizarea returnării (tasta ENTER) este arbitrară. Noi trebuie să stabilească ca un convenabil face o cerere, în câteva linii sau o singură linie, după cum urmează: Deoarece SQL folosește virgulă pentru a indica sfârșitul echipei, cea mai mare parte a procesului SQL restituirii (prin apăsarea tastei Enter sau tasta ENTER) ca martor. Este o idee bună să folosiți rambursările și alinierea pe care am făcut-o mai devreme pentru a face comenzile dvs. mai ușor de citit și mai corecte.
Alegeți întotdeauna calea cea mai simplă
Dacă doriți să vedeți fiecare coloană a tabelului, există o scurtătură opțională pe care o puteți utiliza. Un asterisc (*) poate fi utilizat pentru a afișa o listă completă de coloane după cum urmează: Acest lucru va avea ca rezultat același rezultat ca și comanda noastră anterioară.
DESCRIERE SELECTARE
În general, instrucțiunea SELECT începe cu un cuvânt cheie SELECT urmat de un spațiu. După aceea, ar trebui să urmați lista cu numele de coloane pe care doriți să le vedeți, separate prin virgule. Dacă doriți să vedeți toate coloanele din tabel, puteți înlocui această listă cu un asterisc (*). Următoarea clauză FROM este urmată de un spațiu și de numele tabelului a cărui interogare se face. În concluzie, punct și virgulă (;) ar trebui să fie utilizat pentru a completa cererea și indică faptul că comanda este gata să fie executată.
Comanda SELECT poate extrage informații strict definite dintr-un tabel. În primul rând, putem oferi posibilitatea de a vedea numai anumite coloane ale tabelului. Acest lucru este ușor, cu excepția simplă a coloanelor pe care nu doriți să le vedeți, din partea SELECT a comenzii. De exemplu, o interogare Pot exista tabele care au un număr mare de coloane conținând date, care nu sunt toate relevante pentru sarcină. Prin urmare, puteți găsi o modalitate de a selecta și de a selecta numai coloanele care vă sunt utile.
COLUMNUL DE REZOLUȚIE
Chiar dacă coloanele mesei sunt, prin definiție, ordonate, acest lucru nu înseamnă că le veți restaura în aceeași ordine. Desigur, asterisc (*) va afișa toate coloanele în ordinea lor naturală, dar dacă specificați coloanele separat, le puteți obține în ordinea în care doriți. Să ne uităm la ordinea de masă, conținând data achiziției (Odate), Camera Vanzatorul (snum), numărul de ordine (onum), precum și valoarea de achiziție (amt): După cum puteți vedea, informațiile din structura tabele - este doar o bază pentru o ajustare activă a structurilor SQL .
Eliminarea datelor excedentare
DISTINCT este un argument care vă oferă o modalitate de a elimina valorile duplicate din clauza dvs. SELECT. Să presupunem că doriți să știți care vânzători au în prezent comenzile lor în tabelul de comandă. Sub comanda (aici și mai jos) va fi înțeleasă ca o înregistrare în tabelul de ordine înregistrarea achizițiilor efectuate pe o anumită zi la un anumit cumpărător specific de client pentru o anumită sumă). Nu trebuie să știți câte ordine are fiecare; aveți nevoie doar de o listă cu numerele vânzătorului (snum). Prin urmare, puteți introduce:
Cu alte cuvinte, DISTINCT ține evidența valorilor care au fost anterior, astfel încât acestea să nu fie duplicate în listă. Aceasta este o modalitate utilă de a evita redundanța datelor, dar este important ca în acest sens să înțelegeți ce faceți. Dacă nu doriți să pierdeți date, nu trebuie să utilizați DISTINCT fără griji, deoarece poate ascunde unele probleme sau date importante. De exemplu, puteți presupune că numele tuturor clienților dvs. este diferit. Dacă cineva plasează al doilea Clemens în tabelul Clientului și utilizați SELECT DISTINCT cname, nici măcar nu știți despre existența dublului. Puteți obține Clemens greșit și nici măcar nu știți despre el. Deoarece nu vă așteptați la redundanță, în acest caz nu trebuie să utilizați DISTINCT.
PARAMETRII DISTINCȚIEI
DISTINCT poate fi specificat o singură dată în această clauză SELECT. Dacă propoziția selectează mai multe câmpuri, DISTINCT omite liniile în care toate câmpurile selectate sunt identice. Liniile în care unele valori sunt identice și unele sunt diferite - vor fi salvate. DISTINCT, de fapt, conduce pentru a afișa toate liniile de ieșire care nu intră câmpurile (cu excepția atunci când este utilizat în funcțiile agregate, așa cum este descris în capitolul 6), astfel încât nu există nici un sens să-l repete.
DISTINCT INSTEAD ALL
În loc de DISTINCT, puteți specifica - ALL. Acest lucru va avea efectul opus, duplicarea liniilor de ieșire va fi păstrată. Deoarece acesta este același caz în care nu specificați nici DISTINCT, nici ALL, atunci ALL este în esență un argument explicativ, nu unul eficient.
ALEGERE CALIFICATĂ CU UTILIZAREA DE SUGESTII
Tabelele tind să devină foarte mari, deoarece în timp, se adaugă tot mai multe rânduri. Deoarece, de obicei, numai anumite linii de interes vă interesează la un moment dat, SQL vă permite să stabiliți criterii pentru a determina care rânduri vor fi selectate pentru ieșire.
WHERE este o instrucțiune SELECT care vă permite să setați predicate ale căror condiții pot fi adevărate sau false pentru orice rând din tabel. Comanda returnează numai acele rânduri din tabelul pentru care o astfel de declarație este adevărată. De exemplu, să presupunem că doriți să vedeți numele și comisioanele tuturor vânzătorilor din Londra. Puteți introduce această comandă: Când este prezentată o clauză WHERE, programul bazei de date privește întregul tabel pe o singură linie și examinează fiecare rând pentru a determina dacă instrucțiunea este adevărată. Prin urmare, pentru intrarea Peel, programul va examina valoarea curentă a coloanei orașului, va determina că este egală cu "Londra" și va include acest șir în ieșire. Intrarea pentru Serres nu va fi activată și așa mai departe. Ieșirea pentru interogarea de mai sus este prezentată în Figura 3.6. Să încercăm un exemplu cu un câmp numeric în clauza WHERE. Câmpul de rating al tabelului clientului are scopul de a împărți clienții în grupuri pe baza anumitor criterii care pot fi obținute ca rezultat prin acest număr. Poate că aceasta este o formă de evaluare a creditului sau o estimare a achizițiilor anterioare bazate pe volum. Aceste coduri numerice pot fi utile în bazele de date relaționale ca o modalitate de rezumare a informațiilor complexe. Putem selecta toți clienții cu un rating de 100, după cum urmează: Citatele unice nu sunt folosite aici, deoarece scorul este un câmp numeric. Rezultatele interogării sunt prezentate în Figura 3. 7.
Clauza WHERE este compatibilă cu materialul anterior din acest capitol. Cu alte cuvinte, puteți utiliza numere de coloane, eliminați duplicate sau rearanjați coloane într-o instrucțiune SELECT care utilizează WHERE. Cu toate acestea, puteți schimba ordinea coloanelor pentru nume numai în clauza SELECT, dar nu în clauza WHERE.
Cel mai important, puteți seta o condiție numită predicat care determină sau nu determină rândul de tabelă specificat din mii de aceleași rânduri, indiferent dacă este selectat pentru ieșire.
Predicatele pot deveni foarte complexe, oferindu-vă o precizie ridicată în a decide ce linii alegi cu interogarea. Este această abilitate de a decide exact ceea ce doriți să vedeți face ca interogările SQL atât de puternice. Următoarele câteva capitole vor fi dedicate într-o mai mare măsură caracteristicilor care extind puterea predicatelor. În Capitolul 4. veți fi prezentat cu alți operatori decât cei utilizați în condiții predicate și cum să combinați mai multe condiții într-un predicat unic.