Садржај
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 База података за продавницу - нерешени пројектни рад

Формат XML

Често постоји потреба за разменом информација са другим системима. Формат XML је широко распрострањен и одавно у употреби управо за размену података између различитих оперативних система, база података и програмских платформи. Он је, у суштини, обичан текстуални документ и то омогућава да може да буде било где прочитан и употребљен.

Систем SQL Server има уграђену потпуну подршку за рад са XML форматом организације података. Као илустрацију ћемо показати неколико опција.

Програмски код, као и команде језика SQL, пише се и покреће када се кликне New Query након што се покрене систем SQL Server и кликне на креирану базу Biblioteka_knjige у прозору Object Explorer. Фајл са упитима SQLQuery1.sql може, а и не мора да се сачува.

Након што се унесе програмски код, кликне се на дугме Execute. Уколико се у простору за писање команди налази више блокова кода, потребно је обележити онај који желимо да покренемо. Ако имате више база података, обавезно проверите да ли је поред овог дугмета назив базе у којој желите да покрећете програме.

../_images/slika_510a.jpg

Следећим упитом можемо да добијемо XML фајл у којем се налази комплетан садржај једне табеле.

SELECT *
FROM knjige
FOR XML RAW ('knjiga'), ROOT('spisak_knjiga'), ELEMENTS

Након што покренемо овај упит, комплетан XML фајл добијамо у једном пољу и можемо да га пребацимо у неки едитор, као што је на пример програм Notepad.

<spisak_knjiga>
<knjiga>
    <id_knjige>111</id_knjige>
    <naziv>Racunarstvo i informatika za 4. razred gimnazije</naziv>
    <id_izdavaca>1</id_izdavaca>
</knjiga>
<knjiga>
    <id_knjige>222</id_knjige>
    <naziv>Racunarstvo i informatika za 3. razred gimnazije</naziv>
    <id_izdavaca>1</id_izdavaca>
</knjiga>
<knjiga>
    <id_knjige>321</id_knjige>
    <naziv>Osnovi programiranja, programski jezici c#</naziv>
    <id_izdavaca>1</id_izdavaca>
</knjiga>
<knjiga>
    <id_knjige>323</id_knjige>
    <naziv>Veb programiranje</naziv>
    <id_izdavaca>2</id_izdavaca>
</knjiga>
<knjiga>
    <id_knjige>414</id_knjige>
    <naziv>Kandze</naziv>
    <id_izdavaca>4</id_izdavaca>
</knjiga>
<knjiga>
    <id_knjige>415</id_knjige>
    <naziv>E bas vam hvala</naziv>
    <id_izdavaca>4</id_izdavaca>
</knjiga>
<knjiga>
    <id_knjige>555</id_knjige>
    <naziv>PROGRAMIRANJE - klase i objekti</naziv>
    <id_izdavaca>2</id_izdavaca>
</knjiga>
<knjiga>
    <id_knjige>999</id_knjige>
    <naziv>The Examined Life</naziv>
    <id_izdavaca>3</id_izdavaca>
</knjiga>
</spisak_knjiga>

Формат XML користи ознаке или тагове (енг. tag), којима описујемо податке које чувамо. Сами подаци се уписују између отвореног и затвореног тага. Тако је, на пример, назив књиге „E, bas vam hvala“ наведен између отвореног тага <naziv> и затвореног тага </naziv>.

За сваку књигу чувамо идентификациони број, назив књиге и идентификациони број издавача. У упиту SELECT смо навели да се подаци који се читају из табеле организују у елементе са називом knjiga, који су обележени отвореним тагом <knjiga> и одговарајућим затвореним тагом </knjiga>. Следи део XML фајла који се односи на једну књигу.

<knjiga>
    <id_knjige>415</id_knjige>
    <naziv>E bas vam hvala</naziv>
    <id_izdavaca>4</id_izdavaca>
</knjiga>

На почетку фајла мора да се налази један отворен таг који се односи на почетак целог документа и који има одговарајући затворен таг на самом крају. У упиту SELECT смо дали назив spisak_knjiga за тај таг, односно корен (енг. root).

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

SELECT *
FROM knjige
FOR XML RAW ('Knjiga'), ROOT('Spisak_knjiga')

Фајл у XML формату који смо сада добили изгледа другачије. У случају када нема садржаја између отвореног и затвореног тага, могуће је користити таг који је истовремено и отворен и затворен. У овом случају је то таг <knjiga/>. Сваки овај таг има своје атрибуте који су набројани пре косе црте.

<spisak_knjiga>
    <knjiga id_knjige="111"
naziv="Racunarstvo i informatika za 4. razred gimnazije" id_izdavaca="1"/>
    <knjiga id_knjige="222"
naziv="Racunarstvo i informatika za 3. razred gimnazije" id_izdavaca="1"/>
    <knjiga id_knjige="321"
naziv="Osnovi programiranja, programski jezici c#" id_izdavaca="1"/>
    <knjiga id_knjige="323" naziv="Veb programiranje" id_izdavaca="2"/>
    <knjiga id_knjige="414" naziv="Kandze" id_izdavaca="4"/>
    <knjiga id_knjige="415" naziv="E bas vam hvala" id_izdavaca="4"/>
    <knjiga id_knjige="555" naziv="PROGRAMIRANJE - klase i objekti" id_izdavaca="2"/>
    <knjiga id_knjige="999" naziv="The Examined Life" id_izdavaca="3"/>
</spisak_knjiga>

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

Постоји могућност и да се упити директно извршавају над XML документом.

DECLARE @doc XML;
SET @doc =
'<knjiga>
    <id_knjige>414</id_knjige>
    <naziv>Kandze</naziv>
    <id_izdavaca>4</id_izdavaca>
</knjiga>
<knjiga>
    <id_knjige>415</id_knjige>
    <naziv>E bas vam hvala</naziv>
    <id_izdavaca>4</id_izdavaca>
</knjiga>';
SELECT @doc;

Овај једноставан упит ће у једном пољу вратити цео XML. Постоји могућност и да проберемо податке за приказ.

DECLARE @doc XML;
SET @doc =
'<knjiga>
    <id_knjige>414</id_knjige>
    <naziv>Kandze</naziv>
    <id_izdavaca>4</id_izdavaca>
</knjiga>
<knjiga>
    <id_knjige>415</id_knjige>
    <naziv>E bas vam hvala</naziv>
    <id_izdavaca>4</id_izdavaca>
</knjiga>';
SELECT @doc.query('knjiga/naziv');

Када се покрене овај програмски код, добијамо само називе књига.

<naziv>Kandze</naziv>
<naziv>E bas vam hvala</naziv>
../_images/slika_5113a.jpg
(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+