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

Упит SELECT

Ево неколико примера задатака који се решавају писањем упита SELECT у оквиру базе података за колекцију филмова, која може да се посматра као део базе података неке онлајн платформе за пуштање филмова. Након ових решених следи већа група нерешених задатака.

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

Сви SELECT упити који следе обрађују податке из базе података за колекцију филмова. Следи списак свих табела са колонама. Примарни кључеви су истакнути болд, а страни италик.

../_images/slika_143a.jpg

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

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

../_images/slika_143b.jpg
  1. Написати упит којим се приказује година када је снимљен филм са називом „Indiana Jones“.

SELECT god FROM filmovi
WHERE naziv='Indiana Jones'
../_images/slika_143c.jpg
  1. Написати упит којим се приказују називи свих филмова који спадају у жанр „fantastika“.

SELECT filmovi.naziv
FROM filmovi JOIN zanrovi ON (filmovi.id_zanra=zanrovi.id_zanra)
WHERE zanrovi.naziv='fantastika'
../_images/slika_143d.jpg
  1. Написати упит којим се приказују називи филмова у којима глуми Harrison Ford. Списак уредити абецедно по називу филма.

SELECT  naziv
FROM filmovi JOIN lista_glumaca
ON (lista_glumaca.id_filma=filmovi.id_filma)
JOIN glumci ON (lista_glumaca.id_glumca=glumci.id_glumca)
WHERE ime='Harrison Ford' ORDER BY naziv
../_images/slika_143e.jpg
  1. Написати упит којим се приказује број филмова у којима глуми Harrison Ford.

SELECT COUNT(naziv)
FROM filmovi JOIN lista_glumaca
ON (lista_glumaca.id_filma=filmovi.id_filma)
JOIN glumci ON (lista_glumaca.id_glumca=glumci.id_glumca)
WHERE ime='Harrison Ford'
  1. Написати упит којим се приказује за сваког глумца број филмова у којима глуми.

Решење можемо да добијемо малом надоградњом претходног.

SELECT ime, COUNT(naziv)
FROM filmovi JOIN lista_glumaca
ON (lista_glumaca.id_filma=filmovi.id_filma)
JOIN glumci ON (lista_glumaca.id_glumca=glumci.id_glumca)
GROUP BY ime

Међутим, како нам нису потребни називи филмова, не морамо да укључимо табелу filmovi, већ је довољно да спојимо две табеле.

../_images/slika_143f.jpg

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

SELECT glumci.id_glumca, ime, COUNT(id_filma)
FROM lista_glumaca JOIN glumci
ON (lista_glumaca.id_glumca=glumci.id_glumca)
GROUP BY glumci.id_glumca, ime
  1. Написати упит којим се приказују само глумци који глуме у више филмова које имамо у колекцији.

SELECT ime, COUNT(id_filma)
FROM lista_glumaca JOIN glumci
ON (lista_glumaca.id_glumca=glumci.id_glumca)
GROUP BY ime
HAVING COUNT(id_filma)>1
../_images/slika_143g.jpg
    1. Написати упит којим се приказује у колико различитих жанрова је глумио Harrison Ford.

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

SELECT COUNT(DISTINCT id_zanra)
FROM filmovi JOIN lista_glumaca
ON (lista_glumaca.id_filma=filmovi.id_filma)
JOIN glumci ON (lista_glumaca.id_glumca=glumci.id_glumca)
WHERE ime='Harrison Ford'
  1. Написати упит којим се приказују глумци који су глумили у бар једном филму заједно са глумцем који се зове Harrison Ford.

Подупит враћа списак филмова у којима глуми Harrison Ford, а спољни упит приказује оне глумце који глуме у бар једном од тих филмова.

SELECT  DISTINCT ime
FROM lista_glumaca JOIN glumci
ON (lista_glumaca.id_glumca=glumci.id_glumca)
WHERE id_filma IN (SELECT id_filma
    FROM lista_glumaca JOIN glumci
    ON (lista_glumaca.id_glumca=glumci.id_glumca)
    WHERE ime='Harrison Ford'
)
AND ime!='Harrison Ford'

Уместо оператора IN смо могли да користимо =ANY.

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