Utilizarea sql pentru a prelua informații din tabele

În acest capitol, vă vom arăta cum să extrageți informații din tabele. Veți învăța cum să săriți sau să rearanjați coloanele și cum să eliminați în mod automat redundanța în ieșirea dvs. În concluzie, veți învăța cum să setați o condiție (verificare) pe care o puteți utiliza pentru a determina ce rânduri din tabelă 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?

O interogare este o comandă pe care o dai programului dvs. de bază de date și care îi spune să aducă anumite informații din tabele în memorie. Aceste informații sunt, de obicei, trimise direct pe ecranul computerului sau terminalului pe care îl utilizați, deși în cele mai multe cazuri poate fi trimis și la imprimantă, stocat într-un fișier (ca obiect în memoria calculatorului) sau oferit ca intrare unei alte comenzi sau procese.

Unde se aplică cererile?

Orice interogare SQL are o singură comandă în compoziția sa. Structura acestei comenzi este înșelătoare, deoarece puteți să o extindeți pentru a efectua evaluări complexe și procesarea datelor. Această comandă se numește SELECT.

SELECTAȚI COMANDA

În forma cea mai simplă, comanda SELECT instruiește pur și simplu baza de date să extragă informații din tabel. De exemplu, puteți emula un tabel de vânzători introducând următoarele:

Ieșirea pentru această interogare este prezentată în Figura 3.1.

Cu alte cuvinte, această comandă transmite doar toate datele din tabel. Cele mai multe programe vor da, de asemenea, anteturile coloanelor, ca mai sus, iar altele vă permit să definiți formatarea de ieșire detaliată, dar aceasta depășește specificația standard.

Iată o explicație a fiecărei părți a acestei comenzi:

SELECT Un cuvânt cheie care spune bazei de date că această comandă este o interogare. Toate cererile încep cu acest cuvânt urmat de un spațiu. snum, sname Aceasta este lista coloanelor din tabel selectate de interogare. Orice coloane care nu sunt listate aici nu vor fi incluse în ieșirea comenzii. Aceasta, desigur, nu înseamnă că vor fi șterse sau informațiile lor vor fi șterse din tabele, deoarece interogarea nu afectează informațiile din tabele; arată doar datele. FROM Salespeople FROM - un cuvânt cheie similar cu SELECT, care trebuie reprezentat în fiecare cerere. Este însoțit de un spațiu și de numele mesei folosite ca sursă de informație. În acest caz, acesta este tabelul pentru vânzători. ; Un punct și virgulă sunt folosite în toate comenzile SQL interactive pentru a spune bazei de date că comanda este scrisă și pregătită pentru a fi executată. În unele sisteme, sfârșitul indicatorului de comandă este coloana vertebrală (\) din șir.

Firește, o interogare de această natură nu va ordona în mod necesar producția în niciunul dintre modurile specificate. Aceeași comandă, executată cu aceleași date, dar în alte momente, nu va putea afișa 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 direct cu comenzi SQL utilizând o propoziție specială. Mai târziu vom arăta cum se face acest lucru. Iar acum amintiti-va ca, in lipsa unei ordonari explicite, nu exista o ordine definitiva in concluzia voastra.

Returul de transport (tasta ENTER) este arbitrar. Trebuie să stabilim exact cum este mai convenabil să compunăm o interogare - în mai multe rânduri sau într-o singură linie - după cum urmează:

Deoarece SQL utilizează un punct și virgulă pentru a indica sfârșitul unei comenzi, majoritatea programelor SQL se ocupă de returnarea carului (apăsând butoanele Return sau ENTER) ca spațiu. O idee bună este să utilizați întoarcerea carierei și alinierea, așa cum am făcut mai devreme, pentru a face comenzile dvs. mai ușor de citit și mai ușor de înțeles.

Alegeți întotdeauna calea cea mai simplă

Dacă doriți să vedeți toate coloanele din tabel, există o scurtătură opțională pe care o puteți utiliza. Un asterisc (*) poate fi utilizat pentru afișarea unei liste complete de coloane după cum urmează:

Acest lucru va duce la același rezultat ca și echipa 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 (*). Clauza FROM, urmatoarea, este urmata de un spatiu si numele tabelului a carei interogare este facuta. În final, trebuie folosit un punct și virgulă (;) pentru a termina cererea și a indica că comanda este gata de execuție.

Comanda SELECT poate extrage informații strict definite dintr-un tabel. În primul rând, putem oferi o oportunitate de a vedea doar coloanele specificate ale tabelului. Acest lucru este ușor: prin eliminarea pur și simplu a coloanelor pe care nu doriți să le vedeți din comanda SELECT. De exemplu, o interogare

va produce ieșirea din figura 3.2.

Pot exista tabele care au un număr mare de coloane care conțin date, nu toate acestea fiind necesare pentru a finaliza sarcina. Prin urmare, puteți găsi o modalitate de a selecta și de a selecta numai coloanele care vă sunt utile.

REINSURAREA COLOANEI

Chiar dacă coloanele mesei sunt, prin definiție, ordonate, acest lucru nu înseamnă că le veți restaura în aceeași ordine. Desigur, un asterisc (*) va arăta toate coloanele în ordinea lor naturală, dar dacă specificați coloanele separat, le puteți obține în ordinea dorită. Să ne uităm la tabelul comenzilor care conțin data achiziției (odată), numărul vânzătorului (snum), numărul comenzii (onum) și suma de cumpărare (amt):

Rezultatul acestei interogări este prezentat în Figura 3.3.

După cum puteți vedea, structura de informații din tabele este doar baza pentru restructurarea activă a structurii în 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 comenzile lor în prezent în tabelul Comenzi. În cadrul ordinului (în continuare) se va înțelege o intrare în tabelul Comenzi, înregistrând achizițiile făcute la o anumită dată de un anumit client pentru un anumit vânzător pentru o anumită sumă. Nu este nevoie să știți cât de multe ordine au fiecare; aveți nevoie doar de o listă cu numerele vânzătorului (snum). Prin urmare, puteți introduce:

pentru a obține ieșirea prezentată în Figura 3.4

Pentru a obține o listă fără duplicate, pentru lizibilitate, puteți introduce următoarele:

Ieșirea pentru această interogare este prezentată în Figura 3.5.

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 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. Linii în care unele valori sunt identice, iar unele sunt diferite vor fi salvate. DISTINCT are ca rezultat afișarea întregii linii de ieșire fără a specifica câmpurile (cu excepția cazului în care se utilizează în interiorul funcțiilor agregate, așa cum este descris în capitolul 6), deci nu are nici un rost să o repetăm.

TOȚI INSTEAD DE DISTINCT

În loc de DISTINCT, puteți specifica TOATE. Acest lucru va avea efectul opus, duplicarea liniilor de ieșire va fi păstrată. Deoarece acesta este cazul când nu specificați fie DISTINCT, fie ALL, atunci ALL este în esență un argument explicativ, nu unul eficient.

ALEGERE CALIFICATĂ CU UTILIZAREA DE SUGESTII

Masa tinde să devină foarte mare, pe măsură ce se adaugă tot mai multe rânduri în timp. Deoarece, de obicei, numai anumite rânduri vă interesează la un moment dat, SQL vă permite să setați criterii pentru a determina ce 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 (false) sau false (fals) 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 furnizată o clauză WHERE, programul bazei de date scanează întreaga linie de masă după linie și examinează fiecare rând pentru a determina dacă afirmația este adevărată. Prin urmare, pentru înregistrarea Peel, programul va examina valoarea curentă a coloanei orașului, va determina că este "Londra" și va include această linie î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. Tabelul Client al tabelului de clienți este destinat să împartă clienții în grupuri pe baza anumitor criterii care pot fi obținute prin acest număr. Poate că aceasta este o formă de evaluare a creditului sau de evaluare bazată pe volumul achizițiilor anterioare. Aceste coduri numerice pot fi utile în bazele de date relaționale ca o modalitate de rezumare a informațiilor complexe. Putem selecta toti clientii cu un rating de 100, dupa cum urmeaza:

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ă din mii de aceleași rânduri dacă rândul specificat 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 mai mult caracteristicilor care extind puterea predicatelor. În Capitolul 4, veți fi prezentat cu alte operații decât cele utilizate în mediul predicat și cum să combinați mai multe condiții într-un singur predicat.

SQL WORKING

Articole similare