Напредак се не прати јер нисте улоговани.
Садржај

Релацијски оператори (<, <=, >, >=, BETWEEN, IN)

До сада смо у свим упитима употребљавали само релацијске операторе једнако (=) и различито (!=). Језик SQL подржава још неке релацијске операторе. Над бројевима (као и на још неким типовима) могу се употребљавати и релацијски оператори поретка <, <=, > и >=.

Приказати све ученике старијих разреда.

Приказујемо све ученике код којих је разред већи или једнак од 3.

SELECT *
FROM ucenik
WHERE razred >= 3;

Извршавањем упита добија се следећи резултат:

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

9

Вања

Савић

м

2004-11-13

3

1

10

Николина

Јовановић

ж

2004-08-03

3

1

11

Станоје

Бекоња

м

2004-03-04

3

1

181

Срђан

Рељин

м

2004-07-25

3

1

182

Вида

Кнежевић

ж

2005-01-15

3

1

Овај упит можемо протумачити као:

ОДАБЕРИ све колоне
ИЗ РЕДОВА табеле ученика
КОД КОЈИХ је разред већи или једнак 3.

На следећој слици може да се види како изгледа овај упит покренут у систему SQLite Studio. Види се само првих неколико редова и информација о томе да има укупно 169 редова који задовољавају постављен услов.

https://petljamediastorage.blob.core.windows.net/root/Media/Default/Kursevi/OnlineNastava/kurs-gim-cetvrti-drustveni-inf/veciod2_razred.png

Алтернативно, приказујемо све ученике код којих је разред строго већи од два.

SELECT *
FROM ucenik
WHERE razred > 2;

Извршавањем упита добија се следећи резултат:

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

9

Вања

Савић

м

2004-11-13

3

1

10

Николина

Јовановић

ж

2004-08-03

3

1

11

Станоје

Бекоња

м

2004-03-04

3

1

181

Срђан

Рељин

м

2004-07-25

3

1

182

Вида

Кнежевић

ж

2005-01-15

3

1

Приказати све податке о предметима у прва два разреда.

SELECT *
FROM predmet
WHERE razred <= 2;

Извршавањем упита добија се следећи резултат:

id

naziv

razred

fond

1

Математика

1

4

2

Српски језик

1

4

3

Рачунарство и информатика

1

2

4

Математика

2

5

5

Психологија

2

2

Оператори поретка могу да се примене и на другим типовима података (на пример, нискама и датумима).

Приказати све податке о ученицима који су рођени после првог јуна 2006.

SELECT *
FROM ucenik
WHERE datum_rodjenja > '2006-06-01';

Извршавањем упита добија се следећи резултат:

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

1

Петар

Петровић

м

2006-07-01

1

1

3

Лидија

Петровић

ж

2006-12-14

1

1

12

Ана

Анђелковић

ж

2007-04-23

1

2

13

Дуња

Травица

ж

2007-01-03

1

1

14

Јована

Божић

ж

2006-09-06

1

1

Подсетимо се да се датум наводи као ниска карактера, између једноструких наводника, у формату gggg-mm-dd.

Приказати све податке о ученицима који су на време кренули у школу током 2006. године (то су они који су рођени између 1. марта 2006. и 1. марта 2007. године, не укључујући последњи датум).

SELECT *
FROM ucenik
WHERE '2006-03-01' <= datum_rodjenja AND datum_rodjenja < '2007-03-01';

Извршавањем упита добија се следећи резултат:

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

1

Петар

Петровић

м

2006-07-01

1

1

2

Милица

Јовановић

ж

2006-04-03

1

1

3

Лидија

Петровић

ж

2006-12-14

1

1

6

Јован

Миленковић

м

2006-04-07

1

2

7

Јована

Миленковић

ж

2006-04-07

1

2

Припадност интервалу може да се испитује и помоћу посебног оператора BETWEEN ... AND .... Обе границе које се наведу се укључују. На пример, услов ocena BETWEEN 2 AND 4 допушта вредности 2, 3, и 4. Овај оператор може да се примени и на датуме.

SELECT *
FROM ucenik
WHERE datum_rodjenja BETWEEN '2006-03-01' AND '2007-02-28';

Извршавањем упита добија се следећи резултат:

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

1

Петар

Петровић

м

2006-07-01

1

1

2

Милица

Јовановић

ж

2006-04-03

1

1

3

Лидија

Петровић

ж

2006-12-14

1

1

6

Јован

Миленковић

м

2006-04-07

1

2

7

Јована

Миленковић

ж

2006-04-07

1

2

Оператор BETWEEN може да се комбинује и са другим операторима.

Приказати податке о свим регулисаним изостанцима на првом часу добијеним у 2021. години.

SELECT *
FROM izostanak
WHERE datum BETWEEN '2021-01-01' AND '2021-12-01' AND
      status != 'нерегулисан' AND cas = 1;

Извршавањем упита добија се следећи резултат:

id

id_ucenik

datum

cas

status

1

1

2021-05-14

1

оправдан

5

6

2021-06-01

1

неоправдан

7

8

2021-06-01

1

оправдан

9

100

2021-03-02

1

неоправдан

12

100

2021-03-10

1

неоправдан

Приказати све ученике који су у дневнику одељења I1 пре Петровића

SELECT *
FROM ucenik
WHERE razred = 1 AND odeljenje = 1 AND prezime < 'Петровић';

Извршавањем упита добија се следећи резултат:

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

2

Милица

Јовановић

ж

2006-04-03

1

1

14

Јована

Божић

ж

2006-09-06

1

1

15

Елена

Ђурђевић

ж

2007-01-16

1

1

16

Даница

Анђелковић

ж

2007-02-11

1

1

17

Теодора

Вучковић

ж

2007-02-25

1

1

У овом упиту смо презиме упоредили са Петровић, помоћу оператора <, и тада се поређење врши по азбучном редоследу (каже се, лексикографски). За примену овог оператора над нискама је веома битно да је за колону подешена одговарајућа колациона секвенца (подсетимо се, у колони презиме поставили смо колациону секвенцу UNICODE, што омогућава да се и ћирилички карактери исправно пореде).

Још један често коришћен оператор који се примењује над текстуалним подацима (нискама) је оператор LIKE, којим може да се наметне облик (шаблон) ниске који желимо да издвојимо (или изоставимо) из резултата.

Приказати све ученике чије презиме почиње на слово П.

SELECT *
FROM ucenik
WHERE prezime LIKE 'П%';

Извршавањем упита добија се следећи резултат:

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

1

Петар

Петровић

м

2006-07-01

1

1

3

Лидија

Петровић

ж

2006-12-14

1

1

5

Ана

Пекић

ж

2005-02-23

2

1

24

Ивана

Пејчев

ж

2006-05-13

1

1

47

Душанка

Петровић

ж

2006-09-28

1

2

Шаблон презимена која се траже је описан у облику 'П%', што значи да она почињу словом П након чега следи произвољан низ карактера (карактер % у склопу шаблона означава било какав низ карактера, док карактер _ означава било који појединачан карактер).

Приказати све ученике чији су иницијали ПП.

SELECT *
FROM ucenik
WHERE ime LIKE 'П%' AND prezime LIKE 'П%';

Извршавањем упита добија се следећи резултат:

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

1

Петар

Петровић

м

2006-07-01

1

1

163

Петар

Платиша

м

2005-05-30

2

3


Приказати све ученице чије се име не завршава на слово а.

SELECT *
FROM ucenik
WHERE pol = 'ж' AND NOT (ime LIKE '%а');

Извршавањем упита добија се следећи резултат:

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

322

Натали

Ристић

ж

2003-03-06

4

3

У овом примеру је употребљен оператор NOT да би се приказали само они ученици чије се име НЕ уклапа у дати шаблон. Шаблон '%а' означава произвољан низ карактера иза којих следи ниска а.


Приказати имена и презимена ученика чије се презиме завршава на ић, али не и на вић.

SELECT ime, prezime
FROM ucenik
WHERE (prezime LIKE '%ић') AND NOT (prezime LIKE '%вић');

Извршавањем упита добија се следећи резултат:

ime

prezime

Ана

Пекић

Гордана

Сарић

Јована

Божић

Тијана

Божић

Зоран

Илић

Још један користан оператор може бити оператор IN, којим се проверава да ли вредност припада неком датом скупу елемената. Приказаћемо његову употребу на следећем примеру.


Издвојити податке о свим предметима који се зову Математика, Физика или Рачунарство и информатика.

SELECT *
FROM predmet
WHERE naziv IN ('Математика', 'Физика', 'Рачунарство и информатика')

Извршавањем упита добија се следећи резултат:

id

naziv

razred

fond

1

Математика

1

4

3

Рачунарство и информатика

1

2

4

Математика

2

5

6

Физика

1

2

7

Физика

2

3

Вежба

Покушај сада да самостално решиш наредних неколико задатака.

Приказати све податке о изостанцима добијеним током прва три часа.



Приказати сва имена и презимена ученика чија презимена почињу на „Ми“.



Тема

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.