Pretraživanje podataka – WHERE klauzula

WHERE klauzula SQL

WHERE klauzula u SQL-u se koristi za pretraživanje podataka po zadatim kriterijumima ili uslovima.

Uključuje korišćenje operatora (=,<>, >, <, =>, =<) , logičkih operatora (AND, OR, NOT) i drugih specifičnih uslova putem kojih se mogu filtrirati redovi u tabeli/tabelama/pogledima.

Primeri upotrebe WHERE klauzule:

  1. Prikazati kupce koji se zovu MILES-COOPER.

Kada pretražujemo podatke po tačnom nazivu ili vrednosti polja, možemo koristiti znak jednakosti. Vrednost polja za pretragu je tekstualnog karaktera, te se navodi između jednostrukih navodnika. S’ obzirom da smo upisali tačan naziv kupca, za rezultat smo dobili jedan red koji se odnosi na traženog kupca.

select *
from Customers
where Customer_Name=’MILES-COOPER’

WHERE klauzula SQL

Da smo pretragu sproveli po poštanskom broju, za rezultat bismo dobili dva reda, koja sadrže traženi poštanski broj.  

select *
from Customers
where Postal_Code=’232203220′

WHERE klauzula SQL

Ukoliko ne unesemo tačnu vrednost polja nakon znaka jednakosti, rezultat pretrage će biti nula redova. Iz naziva kupca MILES-COOPER sklonili smo jedno slovo O (MILES-COPER), te nema rezultata za traženu vrednost.

WHERE klauzula SQL
  • Prikazati kupce koji se ne zovu MILES-COOPER.

Ukoliko određenu vrednost želimo isključiti iz pretrage, možemo koristiti znak različito (<>). Na taj način možemo prikazati sve kupce koji se ne zovu MILES-COOPER. Od ukupno 120 redove u tabeli Customers, za rezultat smo dobili 119 redova.

select *
from Customers
where Customer_Name<>’MILES-COOPER’

WHERE klauzula SQL
  • Prikazati sve proizvode koji imaju cenu veću od 19.99.

Operatori veće, manje, veće ili jednako, manje ili jednako (>, <, >=, <=) su pogodni za filtriranje podataka kada je potrebno izdvojiti redove po numeričkim kriterijumima, a mogu se koristiti i za datumske pretrage. SQL upit je vratio 9 redova, prikazujući sve proizvode koji imaju cenu veću od 19.99.

select *
from Products
where Price>19.99

WHERE klauzula SQL

Ukoliko želimo dobiti proizvode koji imaju cenu jednaku ili veću od 19.99, SQL upit ćemo napisati na sledeći način:

select *
from Products
where Price>=19.99

WHERE klauzula SQL
  • Prikazati sve porudžbine koje su unete nakon 07.06.2023.

Operatori veće, manje, veće ili jednako, manje ili jednako (>, <, >=, <=), kako je navedeno, mogu se koristiti i za datumske pretrage.

select *
from Orders
where Order_Date>’20230607′

WHERE klauzula SQL

Ukoliko želimo izlistati porudžbine unete i 07.06.2023., dodaćemo znak jednakosti.

select *
from Orders
where Order_Date>=’20230607′

WHERE klauzula SQL
  • Prikazati sve proizvode koji se zovu Makeup Setting Spray i imaju cenu veću ili jednaku sa 16.99.

Prednost rada u SQL-u je to što se podaci mogu jednostavno filtrirati navođenjem više uslova. Ukoliko želimo pretraživati podatke po više uslova koji moraju biti zadovoljeni, između uslova se dodaje logički operator AND.

select *
from Products
where
Product_Name=’Makeup Setting Spray’ and
Price>=16.99

WHERE klauzula SQL
  • Prikazati sve proizvode koji se zovu Makeup Setting Spray ili imaju cenu veću ili jednaku sa 16.99.

Kada pretražujemo podatke tako da jedan od uslova treba da bude ispunjen, između uslova se dodaje logički operator OR. Logički operatori AND i OR se mogu kombinovati u okviru WHERE klauzule.

select *
from Products
where
Product_Name=’Makeup Setting Spray’ or
Price>=16.99

WHERE klauzula SQL
  • Prikazati sve kupce bez porudžbina.

Kada se WHERE klauzula koristi za poređenje sa NULL vrednostima, rezultat je uvek NULL. Tada se koriste specifični uslovi IS NULL ili IS NOT NULL. U primeru ispod, tabelu Customers  povezujemo sa tabelom Orders putem kolone Customer_ID, koja je primarni ključ u toj tabeli. U tabeli Orders, Customer_ID je strani ključ. Koristimo LEFT JOIN kako bismo zadržali sve podatke iz prve tabele i dodali podatke iz druge tabele. Ukoliko Customer_ID ne postoji u tabeli Orders, kod tih redova u tabeli Customers, za kolone iz tabele Orders biće prikazane NULL vrednosti. Da bismo izdvojili kupce koji nemaju porudžbine dodajemo uslov o.Order_ID is null koji vraća sve kupce za koje ne postoji veza u tabeli Orders. Umesto uslova o.Order_ID is null može se koristiti i uslov o.Customer_ID is null koji će vratiti identičan rezultat.

select *
from Customers cs
left join Orders o on cs.Customer_ID=o.Customer_ID
where
o.Order_ID is null

WHERE klauzula SQL

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

Leave a comment

Your email address will not be published. Required fields are marked *