tabele de conexiune SQL într-o interogare selectați - limba de interogare sql
Una dintre cele mai importante caracteristici ale interogări SQL este capacitatea lor de a determina relația dintre mai multe tabele, și pentru a afișa informațiile conținute în acestea, în ceea ce privește aceste relații în cadrul unei singure comenzi. Funcționarea acestui tip se numește compus (tabelele compuse). De fapt, prezența operațiunii se alăture este, probabil, cel mai important lucru care diferențiază sistemele relaționale de alte tipuri de sisteme.
În compușii de funcționare enumerate în tabelul de interogare clauză FROM; nume de tabele separate prin virgulă. interogare predicat se poate referi la orice coloană din oricare dintre tabele unite, și, prin urmare, pot fi folosite pentru a stabili conexiuni între ele. De obicei, predicatul compară valorile din coloanele de tabele diferite, în scopul de a stabili dacă starea în care este îndeplinită.
1. Să presupunem că doriți să vă conectați vânzători (agenții de vânzări) și cumpărători (clienți), în conformitate cu locul lor de reședință, în scopul de a obține toate combinațiile posibile de cumpărători și vânzători de același oraș. Pentru a face acest lucru, să ia vânzătorul a tabelului salespeople și de a efectua o căutare pe masa clienților toți clienții care au aceeași valoare în oraș coloana:
SELECT Customers.cname, Salespeople.sname, Salespeople.city DIN salespeople, UNDE Clienții Salespeople.city = Customers.city;
Pentru a evita ambiguitatea în eșantion prin referire la câmpul din clauza WHERE trebuie specificată conținând numele tabelelor.
Operația de conectare prin intermediul tabelelor de integritate referențială aplicate la utilizarea de link-uri, built-in baza de date.
2. De exemplu, pentru a afișa numele de client se potrivește cu numele de furnizori care deservesc acești clienți, utilizați următoarea interogare:
SELECT Customers.cname, Salespeople.sname de la clienți, agenții de vânzări UNDE Salespeople.snum = Customers.snum;
3. De exemplu, următorul compus generează toate combinațiile de cumpărători și vânzători de nume, astfel încât primul înainte de ultimul în ordine alfabetică, în timp ce acestea din urmă au un rating mai mic de 200:
SELECT SNAME, CNAME DIN salespeople, clienții UNDE SNAME
4. Puteți construi interogări prin combinarea mai mult de două mese. De exemplu, trebuie să găsim toate cererile consumatorilor care nu sunt în același oraș ca furnizor lor. Pentru necesitatea de a lega toate cele trei considerate tabel:
SELECT onum, CNAME, Orders.cnum, Orders.snum LA, agenții de vânzări Clienții, comenzi, daca Customers.city <> Salespeople.city ȘI Orders.cnum = Customers.cnum AND Orders.snum = Salespeople.snum;
Deși echipa pare a fi destul de dificil să urmeze logica ei, este ușor să se asigure că cumpărătorii și vânzătorii situate în diferite orașe (acestea sunt comparate cu câmpul snum) vor fi listate în ieșire, și că rezervele menționate sunt făcute de către acești clienți (ordinea de selecție este stabilită în conformitate cu câmpuri cnum și tabelul comenzi snum).
Unele cazuri destul de comune de practică, trebuie să selectați datele dintr-un tabel pe baza rezultatelor probelor suplimentare de la aceeași masă. Aceste mostre sunt numite corelate. Pentru a le pune în aplicare folosind alias-uri de masă (nume aliasnye), care urmează imediat după numele tabelului din eșantion. Următorul exemplu utilizează tabelul de aliasuri CLIENTI: prima și a doua.
5. Selectați toate perechile de vânzători care au același rang, următoarea comandă:
SELECT first.cname, second.cname, first.rating de la clienți în primul rând, clienții doilea UNDE first.rating = second.rating ȘI first.cname
În exemplul de comandă SQL se comportă ca o operațiune de compus care implică două tabele, denumit «primul» și «a doua». Ambele dintre ele sunt, de fapt, tabelul de clienți, dar pseudonime permit să-l considere ca două independente de masă. Alias-urile sunt primul și al doilea au fost identificate în clauza FROM interogarea direct în spatele numelui de masă. Alias-urile sunt de asemenea folosite în clauza SELECT, în ciuda faptului că acestea nu sunt definite până propunerea. Acest lucru este destul de justificată. SQL va lua mai întâi oricare dintre aceste alias-uri de la sine, dar apoi respinge comanda în cazul în care clauza FROM a unei alias-uri de interogare nu sunt definite. Durata de viață depinde de timpul de executie comanda alias. După interogarea utilizată în aceasta pseudonime își pierd valoarea lor. După ce a primit două exemplare din tabel Clienții care să lucreze, SQL efectuează o JOIN. pentru două tabele diferite, selectează rândul următor de la un alias și se conectează la un alt alias fiecare rând. Pentru o excepție de repetiții necesare pentru a seta ordinea de două valori, astfel încât o valoare a fost mai mică decât cealaltă, sau precedate, în ordine alfabetică.
Pentru a compus date de retur într-un tabel, chiar și în absența înregistrării corespunzătoare în alt tabel, este posibil să se creeze o conexiune externă folosind șirul de caractere (+) în comparație formând tabelele de conectare.
6. În acest exemplu, liniile selectate care conțin numele și pozițiile angajaților, indicând numele departamentelor în care lucrează. În rezultatul stabilit, de asemenea, devine departamentul de operare, care nu funcționează nici un angajat
SELECT ename, locuri de muncă, dept.deptno, DNAME FROM emp, dept UNDE emp.deptno (+) = dept.deptno;
Rezultatul acestei interogări:
tabele SQL de conectare
tabele SQL conexiune.