Садржај
1.0 Базе: Увод у базе података
Шта су базе података?
Табеларна организација података
Повезане табеле
Базе и табеле - квиз
1.1 Базе: SQLite
SQLite и SQLite Studio
Креирање базе у SQLite Studio
SQLite и SQLite Studio - квиз
Креирање базе у SQLite Studio - задаци за вежбу
1.2 Базе: Дизајнирање базе података
База компаније за продају дигиталних композиција - подаци о композицијама
База компаније за продају дигиталних композиција - подаци о продаји
Дизајнирање базе података - квиз
2.0 - SQL: Читање података из базе
SQL: Читање података из табела
Читање података - квиз
2.1 SQL: Пројекција и селекција
Пројекција
Селекција
Пројекција и селекција - квиз
Пројекција и селекција - задаци (дневник)
2.2 SQL: Логички и релацијски оператори
Логички оператори
Релацијски оператори
Оператори - квиз
Оператори - задаци (дневник)
2.3 SQL: Изрази и функције - Додатно
Изрази
Функције
Изрази и функције - квиз
Изрази и функције - задаци (дневник)
2.4 SQL: Сортирање, уклањање дупликата, ограничавање броја врста
Сортирање
Ограничавање броја врста у резултату
Уклањање дупликата
Сортирање, уклањање дупликата, ограничавање одговора - квиз
Сортирање и ограничавање - задаци (дневник)
2.5 SQL: Агрегатне функције и груписање
Агрегатне функције
Груписање и израчунавање статистика појединачних група
Селекција након груписања
Агрегатне функције и груписање - квиз
Агрегатне функције и груписање - задаци (дневник)
2.6 SQL: Спајање табела
Спајање табела
Имплицитно спајање
Спајање и груписање
Врсте спајања
Спајање табела - квиз
Спајање - задаци (дневник)
2.7 SQL: Угнежђени упити
Угнежђени упити
Угнежђени упити - квиз
Угнежђени упити - задаци (дневник)
2.8 SQL: Сложенији угњеждени упити - Додатно
Корелисани подупити
Провера постојања
2.9 SQL: Погледи
Погледи
Погледи - квиз
Погледи - задаци (дневник)
3.0 SQL: Промена садржаја базе
Измене података у бази
3.1 SQL: Уписивање података у табеле
Уписивање података
Уписивање података прочитаних из базе
Уписивање података - квиз
3.2 SQL: Ажурирање података у табелама
Ажурирање података
Ажурирање података - квиз
3.3 SQL: Брисање података из табела
Брисање података
Брисање података - квиз

Релацијски оператори (<, <=, >, >=, 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

Вежба

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

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



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



Претходна лекција
Следећа лекција
A- A+
Тема
Темa

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.