3. Utilizarea SQL pentru a extrage date din tabele
În acest capitol, vă vom arăta cum să extragă informații din tabele. Vei învăța cum să reducă sau reordona coloanele, și cum se pot elimina în mod automat redundanța datelor de ieșire. În cele din urmă, veți învăța cum să setați condiția (de verificare), pe care le puteți utiliza pentru a determina care tabele sunt folosite în șirul de ieșire. Această ultimă caracteristică va fi descrisă în continuare în capitolele următoare, și este una dintre cele mai elegante și puternice în SQL.
Crearea unei interogări
Ce este o solicitare?
Anchetă - echipa care da programul de baze de date, și că ei informează că ea a dat anumite informații din tabelele din 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.
CUM SE APLICA cerere?
Toate interogări în SQL constau dintr-o singură comandă. Structura acestei comenzi este inselator de simplu, pentru că trebuie să-l extindă, astfel încât să se efectueze evaluări extrem de complexe și de prelucrare a datelor. Această comandă se numește - SELECT (SELECT).
SELECT TEAM
În forma sa cea mai simplă, comanda SELECT instruiește pur și simplu baza de date pentru a extrage informații din tabel. De exemplu, ați putea afișa un tabel de Merchants tastând următoarea: ieșire pentru această interogare este prezentată în figura 3.1. Figura 3.1: SELECT comandă
Cu alte cuvinte, această comandă afișează pur și simplu toate datele din tabel. Cele mai multe programe vor oferi, de asemenea, titlurile coloanelor ca mai sus, dar unele permit o formatare detaliată a producției, dar acest lucru este în afara specificațiile standard. Există o explicație pentru fiecare parte a acestei comenzi:
Cuvinte cheie care spune baza de date pe care această echipă - solicitare. Toate interogările începe acest cuvânt, urmat de un spațiu.
Aceasta este - o listă de coloane din tabel care sunt selectate de interogare. Toate coloanele nu sunt enumerate aici vor fi incluse în ieșirea comenzii. Aceasta, desigur, nu înseamnă că acestea vor fi eliminate, sau informațiile vor fi șterse din tabel, deoarece cererea nu afectează informațiile din tabele; se arată doar datele.
FROM - cuvânt cheie, cum ar fi SELECT, care ar trebui să fie prezentate în fiecare cerere agenții de vânzări. Acest lucru este urmat de un spațiu și apoi numele tabelului utilizat ca o sursă de informații. În acest caz - este un tabel Sellers (salespeople).
Semicoloana este utilizat în toate SQL interactiv comenzi pentru a informa baza de date care comanda este finalizată și gata de a fi executat. În unele sisteme, o bară oblică inversă (\) într-un rând este un indicator al sfârșitul comenzii.
În mod firesc, o cerere de această natură nu se va aranja în mod necesar orice ieșire în acest mod. Aceeași echipă se face cu aceleași date, dar la momente diferite nu vor putea să-și retragă aceeași ordine. În mod normal, sunt detectate linii în ordinea în care acestea se găsesc în tabel, așa cum am stabilit în capitolul anterior - acest ordin este arbitrară. Acest lucru nu este neapărat ordinea în care au fost introduse sau menținute datele. Puteți aranja retragerea SQL comenzi direct: cu oferte speciale. Mai târziu, vom arăta cum se face. Și acum, trebuie doar să înțeleagă că, în absența unor ordonare explicite, nu există nici o ordine anume în ieșire.
utilizarea noastră de întoarcere (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. Aceasta este - o idee bună de a utiliza restituiri și alinierea pe care le-am făcut înainte de a face comenzile mai ușor de citit și mai precise.
Alegeți întotdeauna cel mai simplu mod
Dacă doriți să vedeți fiecare coloană a tabelului, există o reducere opțional pe care îl puteți utiliza. Un asterisc (*) poate fi folosit pentru a afișa lista completă a coloanelor în felul următor: Se va duce la același rezultat ca și comanda noastră anterioară.
DESCRIERE SELECT
În general, comanda SELECT începe cu cuvântul cheie SELECT, urmat de un spațiu. După aceea trebuie să fie urmată de o listă cu numele coloanelor pe care doriți să le vedeți, separate prin virgula. Dacă doriți să vedeți toate coloanele din tabel, puteți înlocui lista cu un asterisc (*). DE LA cuvinte cheie în continuarea, urmat de un spațiu și numele mesei la care se face solicitarea. În concluzie, punct și virgulă (;) trebuie să fie utilizate pentru a finaliza ancheta și indică faptul că echipa este gata pentru a rula.
Comanda SELECT este capabil de a extrage informații dintr-un tabel bine definit. În primul rând, putem oferi posibilitatea de a vedea numai anumite coloane din tabel. Acest lucru este ușor de realizat, coloane simple, cu excepția faptului că nu doriți să vedeți, dintr-o porțiune dintr-o instrucțiune SELECT. De exemplu, o interogare va produce ieșire prezentată în figura 3.2. Figura 3.2: Selectarea coloanelor specifice
Pot exista tabele care au un număr mare de coloane care conțin date, dintre care nu toate sunt relevante pentru sarcina la îndemână. Prin urmare, puteți găsi o modalitate de a alege și de a alege util numai pentru tine coloane.
COLOANA reordonare
Chiar dacă coloanele din tabel, prin definiție, în ordine, asta nu înseamnă că le va 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 masa de comenzi care conține data achiziției (Odate), Camera Vanzatorul (snum), numărul de ordine (onum), precum și valoarea de achiziție (AMT): Rezultatul acestei interogări este prezentată în figura 3.3. Figura 3.3: Reconstituirea coloanelor
După cum puteți vedea, structura informațiilor din tabele - este doar o bază pentru o structură activă în SQL tuning.
Se îndepărtează excesul DATE
Distincți (Onoruri) - un argument care vă oferă o modalitate de a elimina dubla valoarea propunerii dumneavoastră SELECT. Să presupunem că doriți să știți ce vânzătorii au acum ordinele în tabelul de ordine. 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 aveți nevoie să știu cât de multe comenzi are fiecare; aveți nevoie doar de o listă de camere vânzători (snum). Prin urmare, puteți introduce: pentru ieșire prezentată în Figura 3.4 Figura 3: 4: SELECT cu camere furnizori de duplicare.
Pentru o listă fără dubluri, pentru a fi citite, puteți introduce următoarele: ieșire pentru această interogare este prezentată în figura 3.5.
Cu alte cuvinte, DISTINCT ține evidența a ceea ce valori au fost înainte, astfel încât acestea nu au fost duplicate în listă. Acesta este - un mod util de a evita redundanța datelor, dar este important ca în timp să înțelegeți ceea ce faci. Dacă nu doriți să pierdeți date, nu ar trebui să utilizați orbește DISTINCT, deoarece se poate ascunde unele probleme sau a unor date importante. De exemplu, s-ar putea presupune că numele tuturor clienților dumneavoastră sunt diferite. Dacă cineva introduce un al doilea Clemens în tabelul de clienți și utilizați un CNAME DISTINCT SELECT, tu nici măcar nu va ști despre existența gemene. Puteți obține că Clemens nu a făcut și nici măcar nu știu despre asta. Din moment ce nu vă așteptați redundanță, caz în care nu trebuie să utilizați distincți.
CARACTERISTICI DISTINCT
DISTINCT poate fi specificat o singură dată în propoziția dată SELECT. În cazul în care propunerea alege etaj numeroase Figura 3.5: SELECT fără duplicarea
DISTINCT omite rânduri în cazul în care toate podelei selectate sunt identice. Liniile în care anumite valori sunt aceleași, iar 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 acesta este utilizat în interiorul funcțiilor agregativi evaluate, așa cum este descris în capitolul 6), astfel încât nu există nici un sens să-l repete.
DISTINCT loc de toate
În loc de DISTINCT, puteți specifica - ALL. Acest lucru va avea efectul opus, duplicatoare linii de ieșire rămân. Deoarece este - același caz, atunci când nu se specifică nici o DISTINCT sau ALL, ALL - în esență, un argument valid de auto-explicative și nu.
ALEGEREA CALIFICAT DE UTILIZAREA PROPUNERILOR
Tabelele tind să fie foarte mare, pentru că în timp, numărul tot mai mult de linii, a adăugat acesta. Din moment ce, de obicei, numai o anumită linie sunteți interesat în acest moment, SQL vă permite să stabilească criteriile pentru a determina care rândurile vor fi selectate pentru ieșire.
UNDE - SELECT comanda, care vă permite să setați predicatului, condiția care poate fi fie adevărat sau fals pentru orice rând al tabelului. Comandă preia doar acele rânduri din tabel pentru care acest lucru este adevărat. De exemplu, să presupunem că doriți să vedeți numele și Comisiei toate vânzătorii din Londra. Puteți introduce această comandă: Atunci când o clauză în care se prezintă, un program de baze de date scanează întregul tabel pe aceeași linie și investighează fiecare linie pentru a determina dacă afirmația este adevărată. În consecință, coaja de înregistrare, programul va lua în considerare valoarea curentă a coloanei de oraș, stabilește că acesta este egal cu „Londra“, și să includă în această linie de ieșire. Înregistrarea pentru Serres nu vor fi incluse, și așa mai departe. Ieșirea pentru interogarea de mai sus este prezentată în figura 3.6. Figura 3.6: SELECT c clauza WHERE
Să încercăm un exemplu al unui câmp numeric în clauza WHERE. Domeniul de masă Evaluarea clienților este destinat să împartă clienții în grupuri pe baza unor criterii care pot fi rezumate prin acest număr. Poate că - forma evaluării creditului sau de evaluare pe baza volumului achizițiilor anterioare. Aceste coduri numerice pot fi utile într-o bază de date relațională ca modalitate de un rezumat al rezultatelor informațiilor complexe. Putem selecta toți clienții cu un rating de 100, după cum urmează: ghilimele simple nu sunt folosite aici, deoarece evaluarea - 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 numerele de coloană, elimina duplicate, sau a reordona coloanele din instrucțiunea SELECT care utilizează unde. Cu toate acestea, puteți schimba ordinea numelor coloanelor numai în clauza SELECT, dar nu în clauza WHERE. Figura 3.7: SELECT un câmp numeric într-un predicat
Cel mai important lucru este că puteți seta o afecțiune cunoscută sub numele de un predicat care determină dacă este sau nu determină rândul dat al tabelului de mii de aceste aceleași linii, indiferent dacă este sau nu este selectată pentru ieșire.
Predicate poate deveni foarte complex, oferindu-vă cu o mare precizie în a decide care liniile ați selectat cu solicitarea. Este această abilitate de a decide exact ceea ce doriți să vedeți, făcând astfel de interogări SQL puternice. Următoarele câteva capitole vor fi dedicate într-o măsură mai mare, caracteristici care extind puterea predicatului. În capitolul 4, va fi prezentat, altele decât cele care sunt utilizate într-un condiții predicative, precum și modalități de a combina mai multe condiții într-un singur predicat operatorilor.
cu SQL
1. Scrieți o instrucțiune SELECT care ar aduce ordinul numărul, suma și data pentru toate rândurile din tabel comenzi.
2. Scrieti o interogare care ar fi adus toate rândurile din tabelul de clienți la numărul vânzătorului = 1001.
3 Scrieți o interogare care ar fi adus un tabel cu coloane, în următoarea ordine: oraș, SNAME, snum, Comm.
4. Scrieți o instrucțiune SELECT care ar fi condus de evaluare (rating), urmat de numele fiecărui client în San Jose.
5. Scrieti o interogare care ar fi adus valoare snum toți vânzătorii în ordinea curentă a tabelului fără comenzi repetări nici un fel.