Za ove vežbe, zbog skraćenih časova u školi, koristimo tutorijal na web stranici:


Priprema za rad: 

0 - Pokrenuti Xampp-Control, i u njemu pokruniti Apache i MySQL, a nakon toga pokrenuti PhpMyAdmin.

1 - Kreiranje baze podataka FruitShop

DROP DATABASE IF EXISTS FruitShop;
CREATE DATABASE FruitShop;

Ili, ako želite, slobodno kopirajte kod iz jednog od crnih kvadrata sa web stranice:

2 - Kreiranje tabela u bazi:

Kopirajte kod koji se nalazi u najvećem crnom kvadratu na web stranici :

   https://www.quackit.com/mysql/tutorial/mysql_create_table.cfm

3 - Provera je li sve ok:

Prvo da vidimo koje tabele imamo u bazi:

   USE FruitShop;
SHOW TABLES;

Zatim da vidimo strukturu jedne od tabela:

   DESCRIBE Fruit;

ili

   DESC Fruit;

4 - Ubacivanje podataka u tabele

Da biste što brže popunili tabele sa nekim podacima, kopirajte kod koji se nalazi u najvećem crnom kvadratu na web stranici :


Prethodno navedeno nam je potrebno jer je lekcija koja se radi u stvari traženje podataka iz neke tabele u bazi - a za to nam je potrebna baza i tabele sa poacima u njoj.  Lekcija sledi u nastavku

SELECT

Naredba SELECT je najčešće korišćena naredba u SQL-u. Ona omogućava korisnicima baze podataka da pronađu određenu informaciju koju žele iz operativne baze podataka. Pogledajte nekoliko primera.

Naredba koja je dole prikazana pronalazi sve informacije koje su sadržane u tabeli FruitShop. Obratite pažnju na to da se zvezdica u SQL-u koristi kao džoker karta. Naredba doslovno znači „Odaberi sve iz tabele FruitShop.“

SELECT *
FROM FruitShop;

S druge strane, korisnici bi možda želeli da ograniče atribute koji se pretražuju iz baze podataka. Na primer, želimo da znamo samo nazive voća iz tabele. Sledeća naredba u SQL-u prikazaće samo tu informaciju:

SELECT FriutName
FROM FruitShop;

Možete da tražite i da se prikaže samo FriutId i FruitName:

SELECT FruitId, FriutName
FROM FruitShop;
Klauzula WHERE može se koristiti da bi se ograničili zapisi koji se traže samo na one koji zadovoljavaju određene uslove. Sledeća naredba prikazuje koji je podatak sa FruitId=1 u tabeli FruitShop :

SELECT *
FROM FriutShop
WHERE FriutId = 1;

Znači:

Pretraživanje i pribavljanje podataka su najĉešće operacije koje korisnici izvršavaju u relacionoj bazi podataka. Za pretraživanje i pribavljanje podataka u SQL-u koristi se naredba SELECT.

Naredba SELECT pribavlja podatke iz jedne tabele ili više povezanih tabela koje se nalaze u relacionoj bazi podataka. U svom osnovnom obliku naredba SELECT ne može ni na koji naĉin da izmeni podatke koji se nalaze u relacionoj bazi podataka.

Primeri koje smo radili na prvom delu časa su sa web stranice:

( Slobodno isprobajte sve primere koje nađete u crnim kvadratima )

Korišćenje aritmetičkih operatora:

SELECT * FROM Fruit
WHERE Inventory > 10;

Šta će se desiti ako u prethodnom primeru umesto znaka > napišete <, <>, <=, >= ? (otkrijte sami)

Korišćenje logičkih operatora:

SELECT * FROM Fruit
WHERE Inventory > 10
AND DateEntered > '2015-01-15';

Šta će se desiti ako u prethodnom primeru umesto AND napišete OR ? (otkrijte sami)

Operator NOT:

koristite ako hoćete da selektujete podatke koji NE ZADOVOLJAVAJU uslov koji sledi:

SELECT * FROM Fruit
WHERE NOT (FruitName = 'Apple');

U poslednjem delu časa smo koristili operatore BETWEEN i LIKE:

Primer sve govori:

SELECT * FROM Fruit
WHERE DateEntered BETWEEN '2015-01-15' AND '2015-02-25';
Ako je potrebno, objašnjenje potražite u delu sa teorijom u daljem tekstu.

Drugi primer (gde se koristi LIKE):

SELECT * FROM Fruit
WHERE FruitName LIKE 'A%';


DETALJNIJE objašnjenje SELECT, WHERE, FROM, ... - OBAVEZNO PROČITATI:


Naredba SELECT je jedna od najkompleksnijih naredbi SQL programskog jezika. Ukljuĉuje veći broj kljuĉnih reĉi klauzula, a ovde će biti navedene samo neke:

SELECT - definiše listu kolona koje će biti ukljuĉene u rezultujuću tabelu

FROM - definiše tabele iz kojih se pribavljaju podaci za potrebe generisanja rezultujuće tabele. Klauzula FROM može da ukljuĉi jednu ili više opcionih JOIN klauzula za povezivanje tabela na osnovu kriterijuma zadatih od strane korisnika.

WHERE - definiše predikat na osnovu koga se ograniĉava broj vrsta u rezultujućoj tabeli. Ova klauzula iz rezultata eliminiše sve vrste za koje specificirani predikat ne vraća vrednost TRUE.


Klauzule SELECT i FROM :

Klauzule SELECT i FROM su jedine obavezne u okviru SELECT naredbe. Klauzula FROM specificira tabele iz kojih se pribavljaju podaci. Ukoliko se navede više tabela potrebno je specificirati naĉin spajanja tabela. Spajanje tabela će biti detaljno objašnjeno u nekoj od narednih lekcija.

Za sada ćemo se ograniĉiti samo na pribavljanje podataka iz jedne tabele.

Klauzula SELECT specificira kolone koje treba ukljuĉiti u rezultujuću tabelu. Mogu se koristiti sledeće opcije:

ALL - u rezultujućoj tabeli prikazuju se sve vrste koje zadovoljavaju navedeni predikat

DISTINCT - iz rezultujuće tabele izbacuju se duplikati vrsta

* - rezultujuća tabela ukljuĉuje sve kolone tabele ili tabela iz kojih se pribavljaju podaci

tabela.* - rezultujuća tabela uključuje sve kolone specificirane tabele

izraz - ime kolone ili funkcije nad kolonama koja će biti ukljuĉena u rezultujuću tabelu

AS pseudonim - novo ime kolone ili funkcije nad kolonama koje im se dodeljuje u rezultujućoj tabeli

U nastavku je dat SQL upit koji prikazuje kompletan sadržaj tabele FruitShop

 SELECT * FROM FruitShop;

Rezultat bi bio isti ako bismo napisali upit kod koga su umesto * navedemo imena svih kolona u tabeli.

Ukoliko želimo da prikažemo samo određene kolone iz tabele FruitShop posle SELECT klauzule navešćemo imena kolona koje su od interesa. U nastavku je dat SQL upit koji prikazuje samo Id i nazive voćki.

SELECT  FruitId, FruitName FROM FruitShop;

Redosled kojim su kolone navedene u klauzuli SELECT definiše redosled kolona u rezultujućoj tabeli. U nastavku je dat SQL upit koji prikazujeisto što i ovaj gore, ali u drugaĉijem redosledu.

 SELECT FruitName, FruitId FROM ucenici;

Klauzula WHERE

Klauzula WHERE specificira uslov na osnovu koga se kreira rezultujuća tabela. U rezultujuću tabelu će biti ukljuĉene samo one vrste koje zadovoljavaju specificirani uslov. U uslovu se mogu javiti:

1. Relacioni operatori
2. Logiĉki operatori
3. Operator BETWEEN
4. Operator IN
5. Operator LIKE
6. Operator IS NULL

SQL podržava šest relacionih operatora koji imaju sledeće znaĉenje:

1.  = Jednako
2.  <> Nije jednako (razliĉito)
3.  < Manje od
4.  > Veće od
5.  <= Manje ili jednako od
6.  >= Veće ili jednako od

Primer: U ovom primeru dat je SQL upit koji prikazuje podatke o voćkama kojih ima više od 10.

SELECT * FROM Fruit
WHERE Inventory > 10


Logički operatori:

SQL omogućava korišćenje standardnih logičkih operatora AND, OR, NOT, a sem toga i IN, BETWEEN koji omogućavaju jednostavnije korišćenje prethodno navedenih operatora u nekim slučajevima.

Prioritet logičkih operatora je sledeći:

  1. NOT
  2. AND
  3. OR

Logički poeratori AND i OR se koriste na standardan način. međutim, kod SQL-a, logički operator negacije NOT se navodi na početku logičkog izraza, a ne ispred operatora poređenja. Na primer, NOT A=B može da stoji nakon reči WHERE kao uslov, alI A NOT = B NE MOŽE!

Primer: Ako želimo da prikažemo podatke o voćkama kojih ima više od 10 a unesene su su pre 25 januara 2015, možemo koristiti SQL upit koji je dat u nastavku:

SELECT * FROM Fruit
WHERE Inventory > 10
AND DateEntered > '2015-01-15';

Primer: Sledeći primer je SQL upit koji daje sve voćke koje nisu Apple:

SELECT * FROM Fruit
WHERE NOT FruitName='Apple';

Da ne bi svi primeri bili iz iste tabele ili baze, u nastavku će biti korišćeni primeri za tabelu učenici koju smo kreirali na času u školi:

Operator IN

Operator IN zamenjuje višestruku upotrebu operatora OR i =.

Operator NOT IN prikazuje sve vrste osim onih određenih datom listom.

Primer: U sledećem SQL upitu se korišćenjem operatora IN izdvajaju samo učenici koji se prezivaju Petrović ili Jovanović:

SELECT *
FROM ucenici
WHERE prezime IN ("Petrović", "Jovanović" );
Primer: Naredni upit pribavlja podatke o svim učenicima osim onih koji se prezivaju Petrović ili Jovanović:

SELECT *
FROM ucenici
WHERE prezime NOT IN ("Petrović", "Jovanović" );


Operator BETWEEN

Operator BETWEEN zamenjuje višestruku upotrebu operatora AND i =. Ovaj operator omogućava ispitivanje da li je vrednost nekog atributa/kolone u zadatom opsegu.

Primer: Za prikazivanje podataka o učenicima čiji je prosek u opsegu od 1.5 do 5.0 (uključujući i granice opsega) možemo da koristimo operator BETWEEN:

SELECT *
FROM ucenici
WHERE prosek BETWEEN 1.5 AND 5.0 ;


Operator LIKE

Operator LIKE omogućava poređenje vrednosti kolone sa zadatim šablonom. Kod definisanja šablona koristi se procenat (%) i znak pitanja. Procenat (%) predstavlja bilo koji mogući znak (broj, slovo, interpunkcijski znak) ili skup znakova. Znak pitanja (?) zamenjuje samo jedan znak.

Primer: U sledećem upitu traži se spisak svih učenika čije prezime počinje na slovo P:

SELECT *
FROM ucenici
WHERE prezime LIKE 'P%' ;
Za nalaženje svih učenika koji sadrže slovo "P" negde u prezimenu, mogao bi se koristiti šablon "*P*". Obratite pažnju da se u dosta verzija SQL servera ne pravi razlika između velikih i malih slova.

Operator NOT LIKE prikazuje suprotno - sve vrste koje ne odgovaraju  datom opisu koji sledi nakon toga.

PAŽNJA: U zavisnosti od servera koji se koristi, koriste se različiti znakovi za zamenu : SQL Server koristi % za zamenu više znakova i _ za zamenu jednog znaka, dok MS Access umesto % koristi *, a umesto _ koristi ?


Operator IS NULL

Operator IS NULL se koristi za poređanja sa NULL vrednostima. Treba voditi računa da se na NULL vrednosti ne može primeniti ni jedan relacioni operator. Može se samo proveravati da li kolona ima NULL vrednost ili nema.

Primer: U nastavku je dat SQL upit koji izdvaja podatke o svim učenicima kojima nije unet datum rođenja, odnosno datum rođenja ima NULL vrednost:

SELECT *
FROM ucenici
WHERE datumRodj IS NULL ;


Video lekcije

Za dodatnu vizuelizaciju, pošto ima učenika koji rade od kuće, možete pogledati video lekcije koje već postoje na Youtube-u. One ne mogu da zamene čas u školi, ali mogu pomoći u rezumevanju.

SELECT:

WHERE, logički izrazi:



Last modified: Wednesday, 7 October 2020, 7:51 PM