Mai multe tabele sql interoghează
Înainte de aceasta, fiecare cerere, pe care le-am considerat, bazat pe un singur tabel. În acest capitol UZN # x0301; ca aete să solicite orice număr de tabele cu o singură comandă. Acesta este un instrument extrem de puternic, deoarece combină nu numai producția de mai multe tabele, dar, de asemenea, definește relațiile dintre ele. Vei învăța diferitele forme folosind aceste conexiuni, precum și configurația lor și de utilizare pentru a îndeplini cerințele speciale posibile.
ASOCIATIA DE TABELE
Una dintre cele mai importante caracteristici ale interogări SQL - capacitatea lor de a defini relațiile dintre mai multe tabele, și afișează informații de la acestea, în ceea ce privește aceste obligațiuni, toate într-o singură comandă. Acest tip de operație se numește asociere, care este un tip de operații într-o bază de date relațională. După cum se prevede în capitolul 1. Cel mai important lucru în comunicare este o abordare relațională, care poate fi creată între elementele de date din tabele. Folosind asociații, asociem imediat informațiile cu orice număr de tabele, și, astfel, capabile de a crea legături între fragmente de date comparabile. Atunci când sunt combinate, tabel, vizualizarea listă în clauza FROM, separate prin virgula. interogare predicat se poate referi la orice coloană și orice masă asociată, prin urmare, poate fi utilizat pentru comunicare între ele. De obicei predicatul compară valorile din coloanele de diferite tabele pentru a determina dacă WHERE condiție set.
Tabelul și coloana nume
Tabel Numele complet coloana de fapt, este format dintr-un nume de tabel, urmat de un punct, iar apoi numele coloanei. Iată câteva exemple de nume:
Înainte de aceasta, puteți omite numele tabelelor, pentru că ați cerut un timp de doar un singur tabel, iar SQL este suficient de inteligent pentru a atribui un tabel de nume de prefix corespunzător. Chiar și atunci când interogare mai multe tabele, puteți omite chiar numele tabelelor, în cazul în care toate coloanele au nume diferite. Dar acest lucru nu este întotdeauna cazul. De exemplu, avem două tabel tipic cu coloane, numit oraș.
Dacă avem nevoie de a lega aceste coloane (pe termen scurt), va trebui să indice numele lor sau Salespeople.city Customers.city, astfel încât SQL poate distinge între ele.
Stabilirea Emiratelor
Să presupunem că doriți să puneți în linie cu distribuitorul de clienți în orașul în care trăiesc, astfel încât veți vedea toate combinațiile de furnizori și clienți pentru acest oraș. Va trebui să ia orice vânzător și uite în tabelul clienților tuturor clienților din același oraș. Ai putea face acest lucru introducând următoarea comandă (de ieșire prezentată în figura 8.1):
Din moment ce acest oraș are și vânzătorii de masă și masă de clienți, nume de masă ar trebui să fie folosite ca prefix. Deși este necesar, numai atunci când două sau mai multe câmpuri au același nume, în orice caz, este o idee bună să includă numele de masă în Uniunea pentru o mai bună înțelegere și coerență. În ciuda acestui fapt, vom continua în exemplele noastre folosesc nume de tabele numai atunci când este necesar, astfel încât ar fi clar atunci când acestea sunt necesare și când nu.
SQL care face practic în piscină, așa că analizează fiecare combinație de două sau mai multe linii de posibile tabele și verifica aceste combinații în predicate lor. În exemplul anterior, este necesar un șir de caractere Peel Vanzatori Vanzatorul de masă și se combină cu fiecare rând de utilizatorii de masă, la un moment dat.
În cazul în care combinația produce o valoare care face ca predicatul este adevărat, iar în cazul în care liniile de câmp ale orașului tabelul Customer este egal cu Londra, coaja - este valoarea solicitată, care este o combinație de ieșire pentru selecteazã. Același lucru este apoi făcut pentru fiecare furnizor în tabelul de către vânzător (dintre care unele nu au avut clienți în aceste orașe).
ASOCIATIA DE TABELE integritatea referențială
Această caracteristică este adesea utilizată doar pentru întreținerea de comunicare construit în baza de date. În exemplul anterior, am stabilit o legătură între cele două table în piscină. Asta e bine. Dar mesele au fost deja conectate prin intermediul snum-câmp. Această conexiune se numește o stare de integritate de referință, așa cum am spus în capitolul 1. Cu ajutorul asociației, puteți recupera datele din punct de vedere al comunicării.
De exemplu, pentru a afișa numele tuturor clienților, furnizorii pe care le deservesc, vom folosi această interogare:
Rezultatul acestei interogări este prezentată în Figura 8.2.
ASOCIATIA TABELE PENTRU valoare egală
În coloana ȘI ALTE ASOCIAȚIILE
Asociația pentru Egalitatea este, probabil, cea mai comună formă de asociere, dar există și altele. Puteți utiliza aproape orice operațiune relațională în asociere. Aici este un exemplu de un alt tip de asociere (ieșirea este prezentată în figura 8.3):
Această comandă nu este adesea util. Aceasta reproduce toate combinațiile numele vânzătorului și numele clientului, astfel încât primul precede ultimul în ordine alfabetică, iar acesta din urmă are un rating mai mic de 200. În mod normal, nu creați relații complexe, cum ar fi acest lucru, și pentru acest motiv, sunt susceptibile de a construi cele mai frecvente Asociatia pentru egalitate, dar ar trebui să știi bine și alte caracteristici.
Despre BEDINENIE mai mult de două tabele
Puteți crea, de asemenea, interogări care combină mai mult de două mese. Să presupunem că vrem să găsim toate ordinele de clienți care nu sunt în orașele în care acestea sunt vanzatori. În acest scop, (prezentat în Figura 8.4 de ieșire) trebuie să conectați toate trei din tabelul nostru eșantion:
Desi aceasta echipa arata mai mult ca un complex, puteți urmări logica, pur și simplu verificarea că clienții nu sunt plasate în orașele în care plasat vânzătorii lor (coincidență a două câmpuri snum), și că aceste ordine sunt executate cu ajutorul acestor clienți (potrivirea ordinelor cu câmpuri cnum și comenzi de masă în snum).