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

Ажурирање података

Понекад желимо да изменимо неке податке у бази, тј. у табелама базе. У језику SQL за то се користе упити UPDATE. Основни облик ових упита је:

UPDATE naziv_tabele
SET kolona_1 = vrednost_1, ..., kolona_k = vrednost_k
WHERE uslov;

Клаузула WHERE одређује који редови ће бити измењени – ако се она изостави, биће измењени сви редови, што често није оно што желимо. Илуструјмо ажурирање кроз неколико примера.

Ученику са идентификатором 1, Петру Петровићу, грешком је уписан датум рођења 1. јул 2006. године, а он је заправо рођен 2. јула 2006. године. Исправити ову грешку.

UPDATE ucenik
SET datum_rodjenja = '2006-07-02'
WHERE id = 1;

Условом може да се одабере и више врста.

Министарство је (због ванредних околности) одлучило да ниједан ученик неће имати јединицу. Напиши упит који све јединице у табели оцена претвара у двојке.

UPDATE ocena
SET ocena = 2
WHERE ocena = 1;

Вредности које се уписују не морају бити константне.

Министарство је одлучило да повећа све оцене за 1 (осим, наравно, петица, које остају петице).

UPDATE ocena
SET ocena = ocena + 1
WHERE ocena < 5;

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

Сви ученици из првог два су поправили оцене које су добили на писменом из математике одржаном 15. октобра 2020. Напиши упит који свим ученицима уместо јединице уписује двојку.

Кључни задатак код овог упита је одредити које су то врсте у табели оцена, које одговарају оценама на том писменом задатку у том одељењу. Потребно је, дакле, одредити клаузулу WHERE која ће издвојити само те врсте у табели оцена. Добра пракса је да се пре ажурирања провери да ли су одабране добре врсте, тако што ће се иста клаузула WHERE употребити у склопу упита SELECT.

Задатак можемо да решимо угнежђеним упитима, тако што ћемо у једном подупиту прочитати из табеле ученика идентификаторе свих ученика из одељења I2, а у другом ћемо прочитати идентификатор предмета математика у првом разреду. Приметимо да нам угнежђени упити више одговарају од спајања, јер се приликом упита UPDATE наводи само једна табела.

SELECT *
FROM ocena
WHERE id_ucenik IN (SELECT id
                    FROM ucenik
                    WHERE razred = 1 AND odeljenje = 2) AND
      id_predmet = (SELECT id
                    FROM predmet
                    WHERE naziv = 'Математика' AND razred = 1) AND
      datum = '2020-10-15' AND
      vrsta = 'писмени задатак' AND
      ocena = 1;

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

id

id_predmet

id_ucenik

ocena

datum

vrsta

40

1

7

1

2020-10-15

писмени задатак

55

1

51

1

2020-10-15

писмени задатак

57

1

53

1

2020-10-15

писмени задатак

58

1

54

1

2020-10-15

писмени задатак

66

1

62

1

2020-10-15

писмени задатак

Када видимо да су редови добро одабрани, од упита SELECT лако можемо да направимо упит UPDATE.

UPDATE ocena
SET ocena = 2
WHERE id_ucenik IN (SELECT id
                    FROM ucenik
                    WHERE razred = 1 AND odeljenje = 2) AND
      id_predmet = (SELECT id
                    FROM predmet
                    WHERE naziv = 'Математика' AND razred = 1) AND
      datum = '2020-10-15' AND
      vrsta = 'писмени задатак' AND
      ocena = 1;

Вежба

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

По новом плану и програму предмет рачунарство и информатика у првом разреду треба да има фонд од 3 уместо 2 часа. Напиши упит који ажурира базу у складу са тим.



Наставник је грешком уписао да је писмени задатак из предмета чији је идентификатор 1 одржан 15. октобра 2020. године, а одржан је заправо 16. октобра 2020. године. Напиши упит који исправља ову грешку.



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



Разредни одељења II1 је од родитеља ученика сазнао да су сви изостанци које су ученици тог одељења направили, а који до сада нису регулисани, оправдани. Напиши упит који реализује ту промену.



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