Садржај
1 Релационе базе података
1.0 1 Релационе базе података
1.0 2 Релационе базе података - квиз
1.0 3 Веза један према више
1.0 4 Веза један према више - квиз
1.0 5 Веза више према више
1.0 6 Веза више према више - квиз
1.0 7 Алат за пројектовање
1.0 8 СУБП
1.0 9 Креирање базе на други начин
1.0 10 Још неке SQL команде
1.1 1 Упит SELECT
1.1 2 Упит SELECT - упит из једне табеле - задаци
1.1 3 Упит SELECT - упит из једне табеле - квиз
1.1 4 Упит SELECT - функције и подупити - задаци
1.1 5 Упит SELECT - функције и подупити - квиз
1.1 6 Упит SELECT - спајање - задаци
1.1 7 Упит SELECT - спајање - квиз
1.1 8 Упит SELECT - нерешени задаци
1.2 1 База података за библиотеку - креирање базе
1.2 2 БП Библиотека - Упит SELECT - упит из једне табеле - задаци
1.2 3 БП Библиотека - Упит SELECT - упит из једне табеле - нерешени задаци
1.2 4 БП Библиотека - Упит SELECT - спајање - задаци
1.2 5 БП Библиотека - Упит SELECT - спајање - нерешени задаци
1.2 6 БП Библиотека - Упит SELECT - функције и подупити - задаци
1.2 7 БП Библиотека - Упит SELECT - функције и подупити - нерешени задаци
1.3 1 База података за возачке дозволе - креирање базе
1.3 2 БП Возачке дозволе - Дијаграм и подаци - практичан рад
1.3 3 БП Возачке дозволе - Упит SELECT - задаци
1.3 4 БП Возачке дозволе - Упит SELECT - нерешени задаци
1.4 1 БП Филмови - Креирање базе - практични рад
1.4 2 БП Филмови - Дијаграм и подаци - практични рад
1.4 3 БП Филмови - Упит SELECT - задаци
1.4 4 БП Филмови - Упит SELECT - нерешени задаци
2 Писање програма унутар система за управљање базама података
2.0 1 Процедуре и команда INSERT
2.0 2 Процедуре и команде UPDATE и DELETE
2.0 3 Процедуре и команде INSERT, UPDATE, и DELETE - квиз
2.0 4 Процедуре и тестирање програма
2.0 5 Процедуре и упит SELECT
2.0 6 Процедуре и курсор за упит SELECT
2.1 1 Функције и упит SELECT
2.1 2 Процедуре и функције са упитом SELECT - квиз
2.1 3 Процедуре и функције са упитом SELECT из једне табеле - задаци
2.1 4 Процедуре и функције са упитом и групним функцијама - задаци
2.1 5 Процедуре и функције са упитом SELECT са спајањем табела - задаци
2.1 6 Процедуре и функције са упитом - нерешени задаци
2.1 7 Формат XML
2.2 1 База података за библиотеку - Процедуре, функције и поређење различитих решења
2.2 2 Процедуре, функције и поређење различитих решења
2.2 3 Процедуре и функције са упитом SELECT из једне табеле - вежбање
2.2 4 Процедуре и функције са упитом SELECT са спајањем табела - вежбање
2.2 5 Процедуре и функције са упитом и групним функцијама и подупитима - вежбање
2.2 6 Процедуре и функције са упитом SELECT - нерешени задаци
2.3 1 База података за возачке дозволе - процедуре и функције са упитом SELECT - вежбање
2.3 2 База података за возачке дозволе - процедуре и функције - нерешени задаци
2.4 1 База података за филмове - процедуре и функције са упитом SELECT - вежбање
2.4 2 База података за филмове - процедуре и функције - нерешени задаци
3 Писање програма у програмским језицима вишег нивоа
3.0 1 Писање програма у развојном окружењу Visual Studio
3.0 2 Писање програма у развојном окружењу Visual Studio - практичан рад
3.0 3 Писање програма у развојном окружењу Visual Studio - процедуре
3.0 4 Писање програма у развојном окружењу Visual Studio - квиз
3.1 1 Угнежђени упит SELECT унутар програма
3.1 2 Угнежђени упит SELECT унутар програма - задаци
3.1 3 Позив процедуре унутар програма
3.1 4 Позив креиране функције унутар програма
3.1 5 Програм са угнежђеним командама у развојном окружењу Visual Studio - квиз
3.1 6 Програм са угнежђеним упитом SELECT из једне табеле - вежбање
3.1 7 Програм са угњежђеним упитом и групним фунцкијама - вежбање
3.1 8 Програм са угнежђеним упитом SELECT са спајањем табела - вежбање
3.1 9 Програм са класом
3.1 10 Програм са угнежђеним упитом - нерешени задаци
3.1 11 Програм са угнежђеним командама INSERT, UPDATE, и DELETE
3.2 1 База података за библиотеку - програм са угнежђеним упитом SELECT из једне табеле - задаци
3.2 2 База података за библиотеку - програм са угнежђеним упитом SELECT - вежбање
3.2 3 База података за библиотеку - програм са угнежђеним упитом - нерешени задаци
3.3 1 База података за возачке дозволе - програм са угнежђеним упитом SELECT - вежбање
3.3 2 База података за возачке дозволе - програм са угнежђеним упитом - нерешени задаци
3.4 1 База података за филмове - програм са угнежђеним упитом SELECT - вежбање
3.4 2 База података за филмове - програм са угнежђеним упитом - нерешени задаци
4 Друга софтверска решења - СУБП Oracle
4.0 1 Oracle Apex и језик PL/SQL
4.0 2 Језик PL/SQL - задаци
4.0 3 Језик PL/SQL - квиз
4.0 4 Језик PL/SQL – нерешени задаци
4.0 5 Наредбе гранања
4.0 6 Наредбе гранања - нерешени задаци
4.0 7 Наредбе циклуса
4.0 8 Наредбе циклуса - нерешени задаци
4.1 1 База података за библиотеку - практичан рад
4.1 2 Наредба SELECT INTO
4.1 3 Наредба SELECT INTO - zadaci
4.1 4 Наредба SELECT INTO - квиз
4.1 5 Наредба SELECT INTO - вежбање
4.1 6 Наредба SELECT INTO - нерешени задаци
4.2 1 Курсори - Узимање података из више редова
4.2 2 Курсори - задаци
4.2 3 Различити начини да се реши проблем
4.2 4 Курсори - нерешени задаци
4.2 5 Курсор са параметром
4.2 6 Курсор са параметром - задаци
4.2 7 Курсор са параметром - нерешени задаци
4.2 8 Курсори - квиз
4.2 9 Курсори и гранање - задаци
4.2 10 Курсори - вежбање
4.2 11 Тренутне позајмице члана - пример
4.2 12 Спискови књига - пример
4.3 1 Процедуре и функције у СУБП-у Oracle Apex
4.3 2 Процедуре и функције - задаци
4.3 3 Процедуре и функције - нерешени задаци
4.3 4 Позајмице једне књиге - пример
4.3 5 Тренутне позајмице - пример
4.3 6 Процедуре и друге SQL команде
4.3 7 Тригери
4.3 8 Списак свих објеката у бази података
4.4 1 Креирање апликације помоћу алата App Builder
4.4 2 Додатне опције App Builder алата
4.4 3 Покретање апликације
4.4 4 Креирање нових страница у апликацији
4.4 5 Покретање раније креиране процедуре
4.4 6 Алат App Builder и XML
4.5 1 База података за салон аутомобила у СУБП-у Oracle Apex - 1. део
4.5 2 База података за салон аутомобила у СУБП-у Oracle Apex - 2. део
4.5 3 База података за салон аутомобила у СУБП-у Oracle Apex - 3. део
4.5 4 База података за продавницу - нерешени пројектни рад

Команде језика SQL

Видели смо команду за креирање табеле и команду за унос података у табеле које су нам неопходне у процесу креирања базе података. Језик SQL, међутим, има много других команди, па ћемо приказати још неке од њих.

Када су табеле креиране, командом ALTER TABLE могуће је извршити одређене измене у структури уколико је то потребно. Уколико смо, на пример, приметили да смо креирали табелу, али је тип података једне колоне погрешан, можемо да изменимо табелу на следећи начин наводећи нови тип поред имена колоне која већ постоји.

ALTER TABLE autori
MODIFY (ime VARCHAR(30))

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

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

ALTER TABLE autori
ADD (mejl_adresa VARCHAR(70))

Цела табела се из базе података уклања командом DROP TABLE. Ова команда и брише комплетан садржај, тј. све податке из табеле, и уклања табелу као објекат из базе.

DROP TABLE autori

Унети подаци могу да се ажурирају командом UPDATE.

На пример, издавачка кућа са идентификационим бројем 2 је преселила своје седиште и нова адреса је Скадарска 45. Постоји само један издавач са овим идентификационим бројем, па ће се измена догодити у једном реду.

UPDATE izdavaci
SET adresa = 'Skadarska 45, Beograd'
WHERE id = 2

Можемо да променимо и више од једног податка у једном реду користећи једну команду. Следећом командом мењамо и адресу и адресу веб-сајта издавача са идентификационим бројем 2.

UPDATE izdavaci
SET adresa = 'Skadarska 45, Beograd' AND veb_adresa = 'https://cet.rs/o-nama/'
WHERE id = 2

Једном командом могу да се измене подаци у више редова, a може да се користи и нека формула. На пример, неопходно је додати идентификациони број издавача, број 2, на крај сваког инвентарског броја свих примерака књиге са идентификационим бројем 555.

Наредба којом се то постиже је следећа:

UPDATE primerci
SET inventarski_broj = inventarski_broj*10+2
WHERE id_knjige = 555

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

Приликом креирања страног кључа у оквиру команде CREATE TABLE, могуће је додати неку од опција за ажурирање UPDATE и брисање DELETE:

  • CASCADE

  • NO ACTION

  • SET NULL

  • SET DEFAULT

Прве две опције увек можемо да размотримо и применимо по потреби. Друге две опције подразумевају да вредности страног кључа могу да буду NULL, или да је дефинисана подразумевана вредност. Уколико ово није случај, те опције нису на располагању.

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

CREATE TABLE knjige
( id_knjige INT PRIMARY KEY,
naziv VARCHAR(50) NOT NULL,
id_izdavaca INT NOT NULL,
FOREIGN KEY (id_izdavaca) REFERENCES izdavaci(id)
ON UPDATE CASCADE ON DELETE NO ACTION )

Каскадна опција можда није најбоље решење за брисање зато што би брисање једног реда у једној табели потенцијално обрисало податке из више редова више различитих табела, па тиме можда и значајан део целе базе. Узмимо, на пример, да желимо да обришемо једног издавача. Уколико је укључена каскадна опција, то би значило да би брисање тог једног реда узроковало брисање свих књига тог издавача, а затим брисање свих примерака тих књига. Боље решење би било да се такво брисање не дозволи, у овом случају да се не дозволи брисање података о издавачу чије књиге имамо у библиотеци. Када брисање не успе, било би добро урадити неко архивирање података о књигама, и примерцима књига издавача којег желимо да обришемо. Затим урадити брисање обрнутим редоследом који је увек дозвољен, а то би подразумевало прво брисање свих примерака, затим свих књига тог издавача, а на крају и самог издавача.

Наравно да може да се догоди да се установи да би друге опције биле боље решење након детаљне анализе захтева пословања. Можда нам не треба архива свих података о издавачу којег желимо да обришемо, па има смисла да укључимо каскадно брисање и тиме уштедимо време тако што нећемо морати све пешке да бришемо. Такође је могуће да не желимо да дозволимо измену вредности примарног кључа било које табеле. Следи измењена команда у складу са овим што је управо описано.

Узмимо, на пример, да је страни кључ у табели knjige креиран тако да је дозвољено каскадно ажурирање.

FOREIGN KEY (id_izdavaca) REFERENCES izdavaci(id)
ON UPDATE CASCADE ON DELETE NO ACTION

Уколико желимо да променимо вредност идентификационог броја неког издавача, на пример, Завода за уџбенике, потребно је да напишемо следећу команду која ће се успешно извршити.

UPDATE izdavaci SET id = 111
WHERE id = 1

Nакон што се измени вредност примарног кључа у табели izdavaci, измениће се и одговарајуће вредности у колони која је страни кључ у табели knjige.

../_images/slika_1010a.jpg

Међутим, написана команда се неће успешно извршити уколико је страни кључ у табели knjige креиран на другачији начин, односно ако се спречава акција приликом покушаја ажурирања.

FOREIGN KEY (id_izdavaca) REFERENCES izdavaci(id)
ON UPDATE NO ACTION ON DELETE CASCADE

Подаци се бришу из табеле командом DELETE FROM.

На пример, запослени са идентификационим бројем 5 не ради више у библиотеци па је потребно да обришемо податке о њему.

DELETE FROM zaposleni
WHERE id = 5

Код брисања података је важно и да знамо да ли постоје нека ограничења дефинисана приликом креирања табеле.

Узмимо, на пример, да је страни кључ у табели knjige креиран на следећи начин.

FOREIGN KEY (id_izdavaca) REFERENCES izdavaci(id)
ON UPDATE CASCADE ON DELETE NO ACTION

Како је на овај начин забрањено брисање реда из табеле izdavaci уколико постоји нека књига тог издавача, следећа команда се неће извршити.

DELETE FROM izdavaci
WHERE id = 1

Међутим, написана команда ће сe успешно извршити уколико је страни кључ у табели knjige креиран на другачији начин, односно ако се дозвољава каскадно брисање.

FOREIGN KEY (id_izdavaca) REFERENCES izdavaci(id)
ON UPDATE NO ACTION ON DELETE CASCADE

У том случају ће се обрисати и издавач, и све његове књиге, и сви примерци свих његових књига

../_images/slika_1010b.jpg

Уколико изоставимо WHERE део команде, команда ће обрисати све податке из табеле.

DELETE FROM knjige
(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+