Razvoj baza podataka internetskih izvorapraktički se ne razlikuje od standardnih baza podataka razvijenih u sustavu MS SQL SERVER. U pravilu se za takve resurse koristi jezik MY SQL, iako se također može primijeniti na razvoj standardnih softverskih proizvoda za lokalnu upotrebu. Ali ovaj članak nije o tome.
Često pri radu s bazama podataka u svakoj od datotekajezika, zadatak je napraviti uzorak podataka za izlaz u razna izvješća, grafikone i tako dalje. U pravilu, prilikom provedbe ove vrste zadataka morate koristiti ne jednu, već nekoliko tablica, kombinirajući ih u jedan upit, što znatno komplicira njegov dizajn. U tom slučaju potrebno je uzeti u obzir kako će se podaci prikazivati, kako će se tablice "izvlačiti" i koji će rezultat biti najprihvatljiviji za programera. Za rješavanje takvih problema koristi se jedan od standardnih MySQL jezičnih konstrukata, Join.
Jezici za razvoj baze podataka, bez obzira na sveovo je jezik, za osnovu su uzete standardne riječi iz rječnika na engleskom jeziku (zato će vam, pod uvjetom da znate engleski jezik, biti puno lakše raditi s tablicama). Da bi se implementirala povezanost tablica u izbor, uzima se ista riječ - Pridruži se. U programskom jeziku baze podataka koristi se My SQL. Prijevod ove službene riječi potpuno je isti kao u samom jeziku - "unija".
Tumačenje MySQL konstrukcije - Pridružite se ibilo koji od njih bit će potpuno isti. Ako dešifriramo svrhu strukture, odnosno shemu njezinog djelovanja, dobit ćemo sljedeće značenje: strukture će omogućiti prikupljanje potrebnih polja iz različitih tablica ili ugniježđenih upita u jedan odabir.
Ako programer treba prikupiti uzorak odnekoliko tablica i zna koja su ključna polja u njima i kakvi su podaci potrebni za izvješće, a zatim možete koristiti jedan od osnovnih konstrukcija spajanja da biste postigli željeni rezultat. Postoje četiri osnovne konstrukcije (za spajanje tablica):
Ovisno o zadanom zadatku, svaki od standardnih dizajna dat će različite rezultate, što će vam omogućiti da u kratkom vremenu dobijete izvješća o različitim parametrima.
Prije početka, na primjer, razmatranjamehanizama za rad s konstrukcijama za objedinjavanje podataka, vrijedi pripremiti nekoliko tablica s kojima ćemo raditi u budućnosti. To će pomoći da se jasno pokažu svi principi rada operatora, osim toga, na taj će način početnici lakše naučiti sve osnove programskih tablica.
Prva tablica opisat će neke predmete s kojima se osoba neprestano susreće tijekom svog života.
U drugoj tablici opisat ćemo neka svojstva objekata iz prve tablice kako biste s njima mogli raditi u budućnosti.
Općenito, dvije će tablice biti dovoljne da na primjeru ilustriraju njihov rad. Sada možete započeti praktično ispitivanje naših dizajna.
Kada koristite MySQL konstrukciju - Pridružite se Ineeruvrijedi razmotriti neke od njegovih značajki. Ovaj dizajn omogućit će vam da iz obje tablice odaberete samo one zapise koji se nalaze u prvoj i drugoj tablici. Kako radi? U prvoj tablici imamo glavni ključ - ID, koji označava redni broj zapisa u tablici.
Prilikom izrade druge tablice, isti ključkoristi se kao serijski broj, primjer se može vidjeti na slikama. Pri odabiru podataka, naredba Select će kao rezultat odrediti samo one zapise čiji se redni brojevi podudaraju, što znači da se nalaze i u prvoj i u drugoj tablici.
Kada koristite konstrukciju, morate razumjetikakve podatke trebate dobiti. Najčešća pogreška, posebno za početnika programera baze podataka, je zlouporaba konstrukcije Inner Join. Kao primjer, MySQL Inner Join, možete uzeti u obzir skriptu koja će nam iz prethodno opisanih i popunjenih tablica vratiti podatke o objektima i njihovim svojstvima. Ali i ovdje može postojati nekoliko načina za korištenje strukture. S tim u vezi, My SQL je vrlo fleksibilan jezik. Dakle, možete pogledati primjere korištenja MySQL Inner Join.
Spajanje tablica bez navođenja bilo kakvih parametara. U ovom ćemo slučaju dobiti rezultat takvog plana:
Ako kroz Upotrebnu uslužnu riječ naznačimo danužno je uzeti u obzir glavne ključeve zapisa u tablicama, tada će se rezultat odabira radikalno promijeniti. U ovom ćemo slučaju dobiti odabir koji će vratiti samo one retke koji imaju iste glavne ključeve.
Moguć je i treći slučaj upotrebekonstrukcije, kada se u upitu kroz riječ "on" označavaju polja kojima treba spajati tablice. U tom će slučaju odabir vratiti sljedeće podatke:
Ako uzmete u obzir drugi način spajanja tablica pomoću konstrukcije MySQL - Join, možete primijetiti razliku u prikazanim podacima. Ovaj mehanizam je konstrukcija lijeve strane.
Korištenje MySQL-a s lijevim pridruživanjem ima neke osobitosti i, poput Inner-a, zahtijeva jasno razumijevanje rezultata koji se želi dobiti.
U tom će slučaju prvo biti odabrani svi zapisi.iz prve tablice, a daljnji zapisi iz druge tablice svojstava bit će im priloženi. Štoviše, ako prva tablica sadrži zapis, na primjer, "stool", a druga tablica nema niti jedno svojstvo za nju, tada će lijevi operator prikazati nulu ispred ovog zapisa, što programeru govori da za ovu vrstu objekta nema znakova ...
Korištenje ovog dizajna omogućit će vam da odredite po kojim poljima ili, na primjer, robi u trgovini nema cijene, jamstvenom roku i tako dalje.
Za praktično razmatranje operatoraLeft Join MySQL konstrukcije koriste prethodno opisane tablice. Na primjer, trebate odabrati čitav popis proizvoda koji se nalaze u trgovini i provjeriti za koji od njih nema znakova ili svojstava. U tom će slučaju odabir prikazati sve proizvode, a prazne vrijednosti postavit će se za one koji nemaju svojstvo.
Kao parametar, pridruživanje može uključivati ne samo specificiranje polja pomoću kojih se povezuju tablice, već može sadržavati i operater klauzule Where.
Na primjer, razmotrite skriptu koja bi trebalada nam vrate samo one zapise za koje nema znaka. U tom slučaju morate dodati operator stanja u konstrukciju Pridruživanje i odrediti što točno treba vratiti kao rezultat.
Kada koristite Pridruživanje - Gdje u MySQL-u, morate jasno razumjeti da će biti prikazani samo oni zapisi na koje se odnosi navedeni uvjet, a odabir će izgledati ovako:
Takvi upiti omogućuju odabirspecifični podaci koji se odnose na stanje koje je odabrao programer. Možete odrediti nekoliko takvih uvjeta, istovremeno povećavajući parametre za odabir podataka iz kombiniranih tablica.
Pridruživanje je zapravo univerzalno.Omogućuje vam ne samo izbor različitih odabira, već i uključivanje u upite od jedne do nekoliko tablica kako biste unijeli dodatne uvjete u odabir. Konstrukcija se također može koristiti za druge operacije podataka. Na primjer, Join se može koristiti za izmjenu podataka u tablici. Dapače, radi pojašnjenja uvjeta u tablici ili u onim slučajevima kada trebate ažurirati podatke u nekoliko tablica za iste uvjete.
Na primjer, razmotrite sljedeći problem.Tri su tablice koje sadrže neke podatke. Trebate promijeniti podatke u obje tablice pomoću jednog upita. Samo da biste riješili ovu vrstu zadataka, možete upotrijebiti konstrukciju Pridruživanje u naredbi Ažuriranje. Vrsta same konstrukcije Join ovisi, kao u slučaju uzorkovanja podataka, o rezultatu koji programer želi dobiti.
Pogledajmo najjednostavniji primjer.Potrebno je ažurirati podatke za iste uvjete jednim zahtjevom. Upiti ove vrste grade se za optimizaciju rada s bazom podataka. Zašto pisati različite upite za svaku od tablica kad sve manipulacije podacima možete izvršiti jednim upitom? Primjer pridruživanja MySQL ažuriranju u našem slučaju bit će sljedeći:
Nerijetko kod rada s bazom podatakapotrebno je graditi upite ne samo spajanjem nekoliko tablica, već i korištenjem potupita. Početnik programer baze podataka takve je zadatke prilično teško razumjeti. Teškoća leži u činjenici da morate razmisliti o svakom koraku, odrediti koje podatke iz koje tablice ili upita treba dobiti i kako ćete s njima trebati raditi u budućnosti.
Za konkretnije razumijevanje, možete razmotriti(u MySQL Join) primjeri složenih upita. Ako ste početnik i tek počinjete raditi s bazama podataka, tada će ovaj trening imati samo koristi. Idealna opcija bili bi primjeri MySQL lijevog spajanja.
Ovaj zahtjev vratit će nam 58 zapisa o ugovoruprodaje za koje je stanje gotovine popunjeno ili postoji na odabrani datum. U ovom je slučaju ovo trenutni datum. Također, odabiru je dodan uvjet da naziv ugovora mora sadržavati simbole - "123". Podaci (podaci) prikazani na zaslonu bit će poredani - poredani prema broju ugovora.
Sljedeći će primjer prikazati podatke o svim isplatama u kojima će biti naveden broj ugovora.
Kao što je ranije spomenuto, pri radu s bazama podatakapodataka, možete kombinirati ne samo tablice, već i tablicu s upitom. Ovaj se dizajn uglavnom koristi za ubrzavanje upita i njegovu optimizaciju.
Na primjer, ako je potrebno iz tablice kojaima nekoliko stotina polja i recimo tisuću zapisa, odaberite samo dva polja, tada vrijedi upotrijebiti upit koji će vratiti samo potrebna polja i kombinirati ga s glavnim skupom podataka. Kao primjer MySQL Join Select, možete razmotriti upit ove vrste:
Ovo nisu svi načini korištenja standardnihMySQL konstrukcije, ali samo standardne. Kako koristiti konstrukciju Pridruživanje i u kakvim oblicima ovisi o samom programeru, ali vrijedi se sjetiti i uzeti u obzir kakav rezultat treba postići prilikom izvršavanja upita.