Razvoj bilo koje baze podataka ne podrazumijevasamo izrada i popunjavanje tablica raznim informacijama, ali i daljnji rad s podacima. Za pravilno izvršavanje različitih zadataka odabira podataka iz tablica i generiranja izvješća koristi se standardni konstrukt Select.
Ako uzmemo u obzir problem odabira podataka odngradeći neko izvješće, možete odrediti razinu složenosti ove operacije. U pravilu, pri radu s ozbiljnim (u smislu količine podataka) bazama podataka, koje se formiraju, na primjer, u internetskim trgovinama ili velikim tvrtkama, odabir podataka neće biti ograničen na samo jednu tablicu. U pravilu, odabiri mogu biti iz prilično velikog broja ne samo međusobno povezanih tablica, već i ugniježđenih upita / podupita, koje izrađuje sam programer, ovisno o zadatku koji mu je dodijeljen. Za odabir iz jedne tablice možete koristiti najjednostavniju konstrukciju:
Odaberite * iz Osoba |
gdje je Osoba naziv tablice iz koje želite dohvatiti podatke.
Ako trebate odabrati podatke iz više tablica, možete koristiti jedan od standardnih konstrukata za spajanje više tablica.
Ako razmatramo upotrebu ove vrste konstrukcija na početnoj razini, tada možemo razlikovati sljedeće mehanizme za povezivanje potrebnog broja tablica za odabir, i to:
Možete naučiti kako u praksi koristiti operatore spajanja tablica ispitivanjem upotrebe SQL - Inner Join operatora. Primjer njegove upotrebe izgledat će ovako:
Odaberite * iz Osoba Unutarnje pridruženo Pododjeljenje na Su_Person = Pe_ID |
SQL jezik i operater Pridruži se unutarnjem pridruživanju mogu bitikoristiti ne samo za spajanje dvije ili više tablica, već i za povezivanje ostalih potupita, što uvelike olakšava rad administratora baza podataka i, u pravilu, može značajno ubrzati izvršavanje određenih složenih upita.
Ako uzmete u obzir povezivanje velikog broja podupita i prikupljanje podataka u jednu tablicu red po red, također možete koristiti operatore Union i Union All.
Upotreba ovih struktura ovisit će o zadatku postavljenom ispred programera i rezultatu koji kao rezultat želi postići.
U većini slučajeva kombinirati nekolikoSQL tablice koriste operator Inner Join. Opis Unutarnjeg pridruživanja u SQL-u prilično je lako razumljiv za prosječnog programera koji tek započinje s bazama podataka. Ako uzmemo u obzir opis mehanizma djelovanja ove strukture, dobit ćemo sljedeću sliku. Logika operatera u cjelini temelji se na mogućnosti presijecanja i odabira samo onih podataka koji se nalaze u svakoj od tablica uključenih u upit.
Ako ovo djelo razmotrimo sa stajališta grafičke interpretacije, dobit ćemo strukturu operatora SQL Inner Join, čiji se primjer može prikazati pomoću sljedećeg dijagrama:
Na primjer, imamo dvije tablice čija je shemaprikazan na slici. Oni pak imaju različit broj zapisa. Svaka od tablica ima polja koja su međusobno povezana. Ako pokušavamo objasniti rad operatora na temelju slike, tada će se vraćeni rezultat naći u obliku skupa zapisa iz dvije tablice, gdje se brojevi povezanih polja podudaraju. Jednostavno rečeno, upit će vratiti samo one zapise (iz tablice broj dva), čiji se podaci nalaze u tablici broj jedan.
Kao što je ranije spomenuto, operator Inner Join injegova je sintaksa neobično jednostavna. Da biste organizirali veze između tablica unutar jednog uzorka, bit će dovoljno sjetiti se i koristiti sljedeći shematski dijagram za konstrukciju operatora, koji je napisan u jednom retku programskog SQL koda, i to:
Za komunikaciju u ovom operateru, glavnitipke stola. U pravilu, u grupi tablica koje pohranjuju podatke o zaposlenicima, prethodno opisana Osoba i Pododjeljenje imaju barem jedan sličan zapis. Dakle, pogledajmo bliže izjavu SQL Inner Join, čiji je primjer prikazan malo ranije.
Imamo stol za osobe koji pohranjujeinformacije o svim zaposlenicima koji rade u tvrtki. Odmah primjećujemo da je glavni ključ ove tablice polje - Pe_ID. Na njemu će gomila ići.
Pohranit će se druga tablica Pododjeljenjainformacije o odjelima u kojima zaposlenici rade. Ona je pak povezana putem polja Su_Person sa tablicom Osoba. Što to znači? Na temelju sheme podataka možemo reći da će tablica odjela za svaki zapis iz tablice "Zaposlenici" sadržavati podatke o odjelu u kojem rade. Na toj će vezi raditi Inner Join operator.
Za jasniju upotrebu razmotrite operator SQL Inner Join (primjeri njegove upotrebe za jednu i dvije tablice). Ako uzmemo u obzir primjer za jednu tablicu, tada je sve vrlo jednostavno:
Odaberite * iz Osoba Unutarnje pridruženo Pododjeljenje na Su_Person = Pe_ID |
Primjeri upotrebe SQL unutarnjeg pridruživanja operatorakoji se za dohvaćanje podataka iz nekoliko tablica može organizirati na gore navedeni način, radi prema malo kompliciranom principu. Kompliciramo zadatak za dvije tablice. Recimo da imamo tablicu odlaska koja pohranjuje informacije o svim odjelima u svakom od odjela. Ova tablica sadrži broj odjela i broj zaposlenika, a uzorak podataka trebate dopuniti nazivom svakog odjela. Gledajući naprijed, vrijedi reći da se dvije metode mogu koristiti za rješavanje ovog problema.
Prvi način je povezivanje tablice odjela s odabirom. U tom slučaju zahtjev možete organizirati na sljedeći način:
Odaberite Pe_ID, Pe_Name, Su_Id, Su_Name, Dep_ID, Dep_Name iz Person Unutarnje pridruženo Pododjeljenje na Su_Person = Pe_ID Unutarnje pridruživanje Polazak na Su_Depart = Dep_ID i Pe_Depart = Dep_ID |
Druga metoda za rješavanje problema je korištenjepotupit u kojem iz tablice odjeljenja neće biti odabrani svi podaci, već samo potrebni. To će, za razliku od prve metode, smanjiti vrijeme obrade upita.
Odaberite Pe_ID, Pe_Name, Su_Id, Su_Name, Dep_ID, Dep_Name iz Person Unutarnje pridruženo Pododjeljenje na Su_Person = Pe_ID Unutarnje spajanje (odaberite Dep_ID, Dep_Name, Pe_Depart from Depart) kao T na Su_Depart = Dep_ID i Pe_Depart = Dep_ID |
Treba napomenuti da ovaj dizajn nije uvijekmože ubrzati upit. Ponekad postoje slučajevi kada morate upotrijebiti dodatni odabir podataka u privremenoj tablici (ako je njihova veličina prevelika), a zatim ga kombinirati s glavnim odabirom.
Izgradnja složenih upita uključujekorištenje značajnog broja tablica i podupita međusobno povezanih za odabir podataka. Sintaksa SQL Inner Join može zadovoljiti ove zahtjeve. Primjeri upotrebe operatora u ovom slučaju mogu se zakomplicirati ne samo odabirom s mnogih mjesta za pohranu podataka, već i iz velikog broja ugniježđenih podupita. Za određeni primjer možete uzeti odabir podataka iz sistemskih tablica (Inner Join SQL operator). Primjer - 3 tablice - u ovom će slučaju imati prilično složenu strukturu.
U ovom su slučaju povezana još tri dodatna uvjeta (na glavnu tablicu) i uvedeno je nekoliko uvjeta za odabir podataka.
Kada koristite Inner Join operater, to koštane zaboravite da što je zahtjev zahtjevniji, to će dulje biti potrebno za njegovu provedbu, pa vrijedi tražiti načine za brže izvršavanje i rješavanje zadatka.
Na kraju bih htio reći jedno:rad s bazama podataka nije najteža stvar u programiranju, stoga, po želji, apsolutno svi mogu svladati znanje o izradi baza podataka, a s vremenom će, stekavši iskustvo, biti moguće raditi s njima na profesionalnoj razini.