Садржај
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: Брисање података из табела
Брисање података
Брисање података - квиз

Изрази

Након SELECT се најчешће наводе само називи колона, међутим, могуће је употребити и сложеније изразе који у себи укључују и вредности прочитане из одговарајућих колона. Изрази се граде применом оператора (аритметичких, попут +, -, *, /, % али и других) и библиотечких функција на називе колона и константне вредности (бројеве, константне ниске и слично). Тиме заправо пресликавамо вредности прочитане из колона табела применом одговарајућих функција. Илуструјмо ово кроз неколико примера.

Аритметички оператори имају своје уобичајено значење. Оператор дељења / када се примени на податке целобројног типа означава целобројно дељење, док се оператором % означава остатак при дељењу (нпр. вредност израза 14 / 4 је 3, а израза 14 % 4 је 2).

Приказати годишњи фонд часова за сваки предмет (претпоставља се да школска година има 37 радних недеља).

SELECT naziv, razred, 37 * fond
FROM predmet;

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

naziv

razred

37 * fond

Математика

1

148

Српски језик

1

148

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

1

74

Математика

2

185

Психологија

2

74

Уместо назива колоне fond наведен је израз 37 * fond који подразумева да се вредност прочитана из колоне fond помножи са 37.

Приметимо да колона са годишњим фондом нема неко илустративно име. То можемо да променимо коришћењем тзв. алијаса, тако што ћемо колони променити име коришћењем кључне речи AS.

SELECT naziv, razred, 37 * fond AS godisnji_fond
FROM predmet;

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

naziv

razred

godisnji_fond

Математика

1

148

Српски језик

1

148

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

1

74

Математика

2

185

Психологија

2

74

Изрази могу да буду и део услова приликом селекције, тј. могу да се наводе и у склопу клаузуле WHERE.

Приказати оне предмете код којих је годишњи фонд часова једнак 74.

SELECT *
FROM predmet
WHERE 37 * fond = 74;

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

id

naziv

razred

fond

3

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

1

2

5

Психологија

2

2

6

Физика

1

2

10

Социологија

4

2

11

Филозофија

4

2

Алијас израза (име израза наведено након AS) можемо да употребимо и у склопу клаузуле WHERE.

SELECT naziv, razred, 37 * fond AS godisnji_fond
FROM predmet
WHERE godisnji_fond = 74;

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

naziv

razred

godisnji_fond

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

1

74

Психологија

2

74

Физика

1

74

Социологија

4

74

Филозофија

4

74

За сваки предмет приказати назив, разред и смену у којој се предаје (прва и трећа година су у првој, а друга и четврта у другој смени).

Јасно је да смена зависи од парности разреда. Оператором % можемо израчунати остатак при дељењу разреда са 2 и тако за први и трећи разред добити вредност 1, а за други и четврти разред вредност 0. Смену затим можемо добити одузимањем те вредности од броја 2.

SELECT naziv, razred, 2 - razred % 2 AS smena
FROM predmet;

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

naziv

razred

smena

Математика

1

1

Српски језик

1

1

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

1

1

Математика

2

2

Психологија

2

2

Аритметички оператори нису једини оператори који су подржани. Ниске се могу надовезати оператором ||.

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

SELECT id, ime || ' ' || prezime AS ime_i_prezime
FROM ucenik

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

id

ime_i_prezime

1

Петар Петровић

2

Милица Јовановић

3

Лидија Петровић

4

Петар Миловановић

5

Ана Пекић

Напоменимо да се у неким другим системима за управљање базама података за надовезивање ниски уместо оператора || користи функција CONCAT.

Направити преглед регулисаних и нерегулисаних изостанака, тако што се уз идентификатор сваког изостанка прикаже да ли је нерегулисан или регулисан (било да је оправдан или неоправдан). Истаћи нерегулисане изостанке поруком „потребно да се регулише“.

Задатак ћемо решити употребом гранања. Основни облик гранања у језику SQL је израз CASE. Његова основна синтакса је облика:

CASE
   WHEN uslov1 THEN vrednost1
   WHEN uslov2 THEN vrednost2
   ...
   WHEN uslovk THEN vrednostk
   ELSE vrednost
END

Врши се провера испуњености једног по једног услова и ако је неки од њих испуњен, вредност израза CASE је вредност која је придружена том услову. У супротном је вредност израза CASE једнака вредности која је наведена уз ELSE. У нашем примеру, гранање можемо постићи на следећи начин:

SELECT id, CASE
              WHEN status = 'нерегулисан' THEN 'потребно да се регулише'
              ELSE 'регулисан'
           END AS status
FROM izostanak;

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

id

status

1

регулисан

2

регулисан

3

потребно да се регулише

4

потребно да се регулише

5

регулисан

Илуструјмо употребу CASE израза још једним примером.

Уз сваку оцену из табеле оцена приказати и њен текстуални опис (недовољан, довољан, добар, врлодобар, одличан).

SELECT id, ocena, CASE
                    WHEN ocena = 1 THEN 'недовољан'
                    WHEN ocena = 2 THEN 'довољан'
                    WHEN ocena = 3 THEN 'добар'
                    WHEN ocena = 4 THEN 'врлодобар'
                    WHEN ocena = 5 THEN 'одличан'
                  END AS opis_ocene
FROM ocena;

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

id

ocena

opis_ocene

11

3

добар

12

3

добар

13

2

довољан

15

3

добар

16

1

недовољан

Вежба

Наредних неколико упита пробај да напишеш самостално. Решења можеш да тестираш овде, а можеш све задатке да урадиш и у систему SQLite Studio.

Ученици скупљају поене на основу оцена које су добили. За оцену два добијају 5 поена, за оцену три 10 поена, за оцену четири 15 поена и за оцену пет 20 поена. За сваку оцену у табели оцена приказати идентификатор ученика који је добио ту оцену и број поена који се добијају за ту оцену.



Прикажи све податке о изостанцима, при чему се уз оправдане изостанке као статус наводи вредност 1, уз неоправдане вредност 2, а уз нерегулисане 0 (та колона треба да се зове status).



Претходна лекција
Следећа лекција
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.