
FROM klauzula u SQL-u je komponenta koja se koristi za definisanje izvora podataka iz kojeg će se preuzeti podaci. Izvori podataka mogu biti tabele ili pogledi. U SQL upitu prikazanom ispod, izvor podataka je tabela Customers.
SELECT Customer_Name, City
FROM Customers;
U okviru FROM klauzule moguće je koristiti alijase, koji ukazuju na tabelu ili pogled. Alijase je praktično koristiti kada se koristi više tabela kako bi se pojednostavilo pisanje upita i referenciranje na određenu tabelu. Alijasi se mogu navesti iza izmena tabele na sledeće načine:
SELECT Customer_Name, City
FROM Customers AS cs;
SELECT cs.Customer_Name, cs.City
FROM Customers AS cs;
SELECT Customer_Name, City
FROM Customers cs;
Za dobijanje rezultata koji podrazumevaju povezivanje više tabela, mogu se koristiti dve sintakse:
Jedan način je da se upit piše u skladu sa ANSI SQL-89 sintaksom, gde se sve tabele navode iza FROM klauzule. Iza naziva tabele se navodi zarez, a uslov za povezivanje dve ili više tabela piše se u okviru WHERE klauzule.
SELECT *
FROM Customers cs, Orders o
WHERE cs.Customer_ID=o.Customer_ID
Drugi način za povezivanje tabela je upotrebom JOIN operatora, koji se generalno preporučuje kao bolji način za pisanje SQL upita. JOIN operatori omogućavaju kombinovanje više redova iz različitih tabela na osnovu zajedničke kolone ili kolona.
SELECT *
FROM Customers cs
JOIN Orders ON o.Customer_ID=cs.Customer_ID
Tipovi JOIN operatora su sledeći:
INNER JOIN (JOIN): Vraća redove sa vrednostima koje se podudaraju u obe tabele za posmatrane kolone.

SQL upit ispod prikazuje redove gde se vrednost kolone Customer_ID iz tabele Customers, podudara sa vrednošću iste kolone koja se nalazi u tabeli Orders.
SELECT *
FROM Customers cs
INNER JOIN Orders o ON o.Customer_ID=cs.Customer_ID

LEFT JOIN (LEFT OUTER JOIN): Vraća sve redove iz prve tabele i redove iz druge tabele koji se podudaraju sa vrednostima iz prve tabele za kolone koje se porede. Redovi iz prve tabele, za koje ne postoji podudaranje u desnoj tabeli, imaju NULL vrednost.

SQL upit ispod prikazuje rezultat koji vraća sve redove iz prve tabele Customers, i redove iz tabele Orders koji se podudaraju sa vrednostima iz tabele Customers za kolonu Customer_ID.
SELECT *
FROM Customers cs
LEFT JOIN Orders o ON o.Customer_ID=cs.Customer_ID

RIGHT JOIN (RIGHT OUTER JOIN): Vraća sve redove iz druge tabele i redove iz prve tabele koji se podudaraju sa vrednostima iz druge tabele za kolone koje se porede.

SQL upit ispod prikazuje rezultat koji vraća sve redove iz druge tabele Customers, i redove iz tabele Orders koji se podudaraju sa vrednostima iz tabele Customers za kolonu Customer_ID.
SELECT *
FROM Orders o
RIGHT JOIN Customers cs ON o.Customer_ID=cs.Customer_ID

FULL JOIN (FULL OUTER JOIN): Vraća sve redove iz prve i druge tabele. Predstavlja kombinaciju LEFT i RIGHT JOIN-a.

SQL upit ispod prikazuje rezultat sa svim redovima iz tabela Orders i Customers, dok se NULL vrednosti prikazuju tamo gde nema podudaranja. Možemo videti da u 6. redu, za kupca sa šifrom 00003, ne postoje podaci u tabeli Orders, te se u kolonama Order_ID, Customer_ID i Order_Date pojavljuju NULL vrednosti.
SELECT *
FROM Orders o
FULL JOIN Customers cs ON o.Customer_ID=cs.Customer_ID

Da biste napravili bazu podataka i tabele sa podacima za vežbu, pogledajte i članke ispod.
