Daca va aflati tabelele din bazele de date și SQL SQLite se alăture și selectați în SQLite, blog despre crearea de site-uri web,

O parte din 12.14: Joining tabele în baze de date SQL si baze de date SQLite: JOIN și SELECT

Bună ziua, ZametkiNaPolyah.ru vizitator site-ul. Vom continua să exploreze baza de date și familiaritatea noastră cu biblioteca SQLite3. limbaj SQL - este un instrument foarte puternic și flexibil, care vă permite să lucrați cu baze de date relaționale. Una dintre cele mai interesante caracteristici ale limbajului SQL este abilitatea de a combina două sau mai multe tabele într-o singură folosind o instrucțiune SELECT, iar cuvântul cheie JOIN. Am act de faptul că tabelele de îmbinare de operare destul de costisitoare și, în mai multe rânduri într-un tabel, pe care le combină, astfel încât operațiunea mai scumpe, deoarece SGBD începe pentru a calcula asa-numitul predicat de asociere pentru fiecare rând. În SQL, există cinci tipuri de tabel se alătură, dar, din păcate, în SQLite a cinci vândut doar trei.







Daca va aflati tabelele din bazele de date și SQL SQLite se alăture și selectați în SQLite, blog despre crearea de site-uri web,

Daca va aflati in tabele de baze de date SQL și baze de date SQLite: JOIN și SELECT

În acest post ne vom uita la principiile generale de tabel se alatura SQL și să se ocupe cu particularitățile implementării ÎNSCRIEȚI cuvinte cheie în exemplul de bază de date care rulează SQLite3. Și apoi ne uităm la fiecare dintre tipurile de masă de join, puse în aplicare în mod individual SQLite să înțeleagă diferențele și caracteristicile din tabel interior și exterior se alătură. În procesul de voi explica, ca întotdeauna, veți vedea exemple care demonstrează funcționarea unei interogări SELECT folosind JOIN.

Îmbinarea tabele în interogări SQL SELECT: LEFT JOIN, LEFT OUTER JOIN, INTERIOARĂ JOIN, CROSS JOIN. Diferența între solicitările JOIN.

În opinia noastră cereri join - acesta este cel mai interesant lucru care poate face instrucțiunea SELECT. Am examinat interogările combinate în bazele de date. care se realizează prin intermediul UNION, iar apoi se va uita la rezultatele probei comparație, dar nu este la fel de interesant ca o uniune de tabele în baze de date SQLite. Îmbinarea Tabelele se realizează folosind cuvântul cheie JOIN.

Standardul SQL împarte tabele care unește în trei tipuri. tabele de asociere interna (INNER ÎNREGISTREAZĂ), tabelele de asociere externe (LEFT OUTER JOIN, DREAPTA JOIN, FULL-TE) și tabele de asociere (CROSS-TE). Principiul de funcționare al oricărei asociații este similară, dar rezultatele sunt întotdeauna sau aproape întotdeauna diferă.

Principiul cererilor de operare să se alăture tabele în SQL și baze de date relaționale constă în faptul că într-o singură interogare SQL SELECT se realizează două sau mai multe subinterogare (în funcție de cât de mult ne dorim să combine tabele), sub-interogări sunt separate de cuvântul cheie JOIN. Aceasta este o limitare înscrii la (cel puțin documentația oficială SQLite solicită restricții ON), care se numește Uniunea predicatul. Alăturați-predicat - este întotdeauna o anumită condiție, cu care RDBMS determină rândurile care din cele două tabele este necesar să se unească. Dar, cu modul de a combina siruri de caractere, SQLite înțelege modificatorii speciale: Interioara, LEFT OUTER sau pur și simplu stânga și cruce.

Această explicație nu folosește destul de adecvată în acest caz, termenul de sub-interogare, acest lucru se face în mod deliberat pentru a explica principiul de lucru ÎNSCRIEȚI cititor care nu este familiarizat cu SQL. Interogarea secundară Termenul nu este destul de adecvat, deoarece interogarea secundară SELECT returnează întotdeauna un fel de masă de rezultat, iar când vom combina tabele folosind JOIN, de multe ori ne întoarcem la tabelele bazei de date fizice (deși nimeni nu vă interzice să combinați un tabel existent, tabelul care SELECT întoarce subinterogarea).

În general, SQL standard, alocă mai mulți modificatori JOIN:

  1. INTERIOARĂ-TE - interior se alăture tabele.
  2. LEFT JOIN sau STÂNGA OUTER JOIN - exterior din stânga se alăture tabele.
  3. DREAPTA JOIN sau DREAPTA OUTER JOIN - exterior din dreapta se alăture tabele.
  4. FULL ÎNSCRIEȚI - mesele pline de asociere.
  5. CROSS ÎNSCRIEȚI - eco se alăture tabele.

Dar există doar trei tipuri de tabele sunt unite în baza de date de baze de date SQLite, pe care am discutat mai devreme, acestea sunt suficiente pentru toate scopurile. Amintiți-vă, am considerat relația dintre tabele și a încercat să normalizeze relațiile. Când baza noastră de date se află în prima formă normală și credem că nu ne gândim la modul în care să se alăture tabele într-o interogare SELECT. dar atunci când raportul este în formă normală a doua sau în forma normală a treia. am putea vedea o întrebare: cum într-o singură interogare pentru a prelua date de la două sau trei mese?

Și această întrebare este bună, pentru că este cauzată de lene, că lenea, care ne salvează de munca stupide și inutile, care cauzeaza ceva pentru a îmbunătăți și perfectă. După cum probabil ați ghicit, în combinație cu SELECT TE ne salvează de problemele descrise mai sus.







Mai jos veti gasi un pat de copil mic de interogare SQL SELECT folosind JOIN. in patutul au mici exemple și diagrame care vă permit să înțelegeți cum funcționează și cum JOIN care unește tabelele în bazele de date.

Daca va aflati tabelele din bazele de date și SQL SQLite se alăture și selectați în SQLite, blog despre crearea de site-uri web,

Exemple de lucru cu o interogare SELECT și diagrame care prezintă ÎNSCRIEȚI funcționarea diferitelor metode de tabele de asociere

Cei care au ocupat cu lucrările ÎNSCRIEȚI în baza de date SQL si baze de date SQLite uita la imaginea de mai sus - pentru tine și laudă onoare, este într-adevăr mare, dar cei care nu înțeleg, ne propunem să continue să citească și să înțeleagă, împreună cu Uniunea și de a folosi tabele Alăturați-vă în SQLite.

tabel de gătit pentru exemple de implementare a SQL join în baza de date SQLite

Să ne pregătim masa, să continue să pună în aplicare exemple de unificare în tabelele bazei de date folosind SQL join. Și pentru a înțelege ce este diferența dintre: LEFT JOIN, LEFT OUTER JOIN, INTERIOARĂ JOIN, și CROSS JOIN. Reamintim că, în SQLite nu este posibil să se combine tabele cu ajutorul: RIGHT JOIN și FULL JOIN.

În acest caz, am combinat tabele folosind INNER JOIN, selectați numai acele coloane care au dorit să vadă, plus face filtrarea datelor. lăsând doar cântecele grupului Splina. Acesta este modul în interior se alăture în proiectarea SQL și baza de date SQLite3 de baze de date.

Pentru a rezuma: tabelele de asociere interne INTERIOARE ÎNREGISTREAZĂ rezultate într-un tabel format din rânduri de mese unite, pentru care rezultatul ON se alăture predicatul este egal cu adevărat. Cu alte cuvinte, în tabelul de rezultat va fi doar acele rânduri din tabelul din stânga, care a legat rândurile din dreapta. INTERIOARĂ ÎNSCRIEȚI de locuri de muncă poate fi demonstrată într-o diagramă.

Daca va aflati tabelele din bazele de date și SQL SQLite se alăture și selectați în SQLite, blog despre crearea de site-uri web,

Diagrama arată tabelele de asociere INTERIOARĂ sau interne tabele ÎNSCRIEȚI îmbinare

Cercul T1 - un tabel la stânga INTERIOARĂ JOIN cerc T2 - o masă la dreapta INTERIOARĂ JOIN zonă umbrită - aceasta este masa de rezultat, care returnează instrucțiunea SELECT care efectuează operațiunea tabelelor de asociere interne.

alăture stânga tabele în bazele de date SQLite3: STÂNGA afilieze și să LEFT OUTER în SQL ÎNSCRIEȚI.

Am examinat interior se alăture de tabele în baze de date SQLite, acum să procedăm pentru a examina asocierea externă și să examineze diferența dintre interior și exterior tabelele de îmbinare. În SQLite există doar un singur tip de tabele de asociere externe: LEFT JOIN sau STÂNGA OUTER JOIN.

Standardul SQL defineste de fapt trei tipuri de exterior se alatura: LEFT JOIN, DREAPTA JOIN, și FULL JOIN. dar SQLite3 numai LEFT OUTER JOIN. Să vorbim despre stânga se alăture tabele. Deși mai mult pe deplin pare: un exterior din stânga se alăture tabele. Exterior alătura tabel funcționează exact la fel ca participa la un interior mese, dar există o diferență în liniile de ieșire după predicatul compus de test. Să vedem un exemplu de LEFT OUTER JOIN, și în același timp, să înțeleagă Spre deosebire de INTERIOARĂ JOIN. și tabele externe de asociere caracteristică:

Cu aceste două exemple pe care le-am arătat diferența dintre asocierea internă și externă de masă de asociere. diferența dintre INTERIOARĂ afilieze și să LEFT JOIN. În ambele cazuri, SQLite calculeaza combinarea predicatul specificat după cuvântul cheie ON, dar diferența este că, în exterior se alătură LEFT OUTER JOIN în tabelul rezultat va fi toate rândurile din tabelul din stânga, și să le, ​​dacă este cazul, va fi adăugat la rândul din dreapta. explicație lungă, dar ușor de înțeles și scrise în cuvinte simple.

Se poate spune într-un alt mod: ca urmare a LEFT OUTER JOIN în tabel, care va returna SELECT, va fi toate rândurile din tabelul din stânga, la care vor fi adăugate la valorile corespunzătoare din tabelul de dreapta, chiar dacă aceste valori sunt egale cu NULL. În acest caz, nu este clar, acesta va prezenta lucrarea LEFT OUTER JOIN într-o diagramă:

Daca va aflati tabelele din bazele de date și SQL SQLite se alăture și selectați în SQLite, blog despre crearea de site-uri web,

Diagrama arată funcționarea exterior din stânga se alăture tabele sau LEFT OUTER JOIN

Cercul T1 - un tabel în partea stângă a LEFT OUTER JOIN, un cerc T2 - un drept tabel al LEFT OUTER JOIN. Tabelul care rezultă din imagine este pictat. Conform cifrelor arată că, în tabelul de rezultat va fi toate rândurile din tabelul din stânga, iar valorile din tabelul din dreapta va fi adăugat la acesta, dacă este cazul.

Este demn de remarcat faptul că LEFT ÎNREGISTREAZĂ lucrări și asimetrici contează care dintre tabelele vor fi listate în primul rând, din moment ce toate rândurile din primul tabel va fi în tabelul cu rezultate. Aceasta este o altă diferență de pe stânga ÎNSCRIEȚI INTERIOARĂ JOIN. Pentru INTERIOARĂ ordinea TE tabelelor din interogarea SQL nu contează.

Așa că ne-am ocupat cu mese afara din uniune SQL și a examinat în detaliu modul în care LEFT OUTER JOIN în bazele de date SQLite3. după cum am aflat diferența dintre INTERIOARĂ afilieze și să LEFT JOIN.

Cross-alătura tabele în SQL: CROSS-TE în baze de date SQLite

Am analizat tabelele de asociere internă realizată folosind INNER JOIN, am examinat asocierea tabelelor externe, realizate în baze de date SQLite folosind LEFT JOIN, acum trece la o cruce se alăture tabele. care este implementat folosind o CRUCE expresie de acces JOIN.

tabele de asociere sau traversează Alăturarea la operațiune este simetrică ca INTERIOARĂ JOIN. ceea ce înseamnă că ordinea de tabele de scriere în interogare nu contează, tabelul rezultat va fi la fel. Crucea se alăture tabele în matematică este un produs cartezian. iar acest lucru înseamnă că, ca urmare a crucii de operare ÎNSCRIEȚI SQLite va conecta fiecare linie din primul tabel cu fiecare rând de-al doilea tabel, iar rezultatul ar fi un tabel în care combinațiile sunt toate rândurile care sunt posibile.

Din păcate, Crucea de lucru spectacol să te implici în diagrama pe care nu se poate doar fizic. Prin urmare, înțelegem lucrările cruce se alăture tabele în SQL în bazele de date generale și SQLite, în special, în exemplu. Să încercăm să scrie o propoziție SELECT, folosind o expresie cheie CROSS JOIN pentru a se alăture tabele: