Садржај
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 који треба да буде део процедуре или функције је дато раније у материјалима и по потреби је могуће вратити се на тај део као помоћ у писању комплетног решења.

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

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

../_images/slika_541a.jpg

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

../_images/slika_541b.jpg
  1. Приказати годину када је снимљен филм са датим називом.

Функција.

CREATE FUNCTION godina (@naziv_filma VARCHAR(100))
RETURNS INT
AS
BEGIN
DECLARE @god INT;
SELECT @god = god FROM filmovi
WHERE naziv=@naziv_filma;
RETURN @god;
END

Позив функције.

PRINT dbo.godina('Indiana Jones')
  1. Приказати називе свих филмова који спадају у дати жанр.

Процедура.

CREATE PROCEDURE filmovi_zanra @naziv_zanra VARCHAR(20)
AS
SELECT filmovi.naziv
FROM filmovi JOIN zanrovi ON (filmovi.id_zanra=zanrovi.id_zanra)
WHERE zanrovi.naziv=@naziv_zanra;

Позив процедуре.

EXEC filmovi_zanra @naziv_zanra='fantastika'
  1. Приказати називе филмова у којима глуми дати глумац. Списак уредити по називу филма.

Процедура.

CREATE PROCEDURE filmovi_glumca @ime VARCHAR(50)
AS
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=@ime ORDER BY naziv;

Позив процедуре.

EXEC filmovi_glumca @ime='Harrison Ford'
  1. Приказати број филмова у којима глуми дати глумац.

Функције.

CREATE FUNCTION broj_filmova_glumca (@ime VARCHAR(50))
RETURNS INT
AS
BEGIN
    DECLARE @broj INT;
    SELECT @broj = 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=@ime;
    RETURN @broj;
END

Позив функције.

PRINT dbo.broj_filmova_glumca('Harrison Ford')
  1. Приказати за сваког глумца број филмова у којима глуми.

Функција која враћа табелу.

CREATE FUNCTION broj_filmova_svakog_glumca()
RETURNS TABLE
AS
RETURN SELECT ime, COUNT(id_filma) broj_filmova
FROM lista_glumaca JOIN glumci
ON (lista_glumaca.id_glumca=glumci.id_glumca)
GROUP BY ime;

Позив функције.

SELECT * FROM  broj_filmova_svakog_glumca()
  1. Приказати само глумце који глуме у више филмова које имамо у колекцији.

Већ смо за претходни задатак креирали функцију коју можемо да позовемо тако да се прикажу само глумци који глуме у више филмова које имамо у колекцији.

SELECT * FROM  broj_filmova_svakog_glumca()
WHERE broj_filmova>1
  1. Приказати за сваког глумца називе филмова у којима је глумио.

Процедура.

CREATE PROCEDURE svi_glumci_filmovi
AS
DECLARE kursor_glumci CURSOR FOR
SELECT id_glumca, ime
FROM glumci;
DECLARE @id_glumca INT;
DECLARE @ime VARCHAR(50);

OPEN kursor_glumci;
FETCH NEXT FROM kursor_glumci
INTO @id_glumca, @ime;

WHILE @@FETCH_STATUS=0
    BEGIN
    PRINT 'GLUMAC: '+@ime;

    DECLARE kursor_filmovi CURSOR FOR
    SELECT naziv FROM lista_glumaca JOIN
    filmovi ON (lista_glumaca.id_filma=filmovi.id_filma)
    WHERE id_glumca=@id_glumca;
    DECLARE @naziv VARCHAR(100);

    OPEN kursor_filmovi;
    FETCH NEXT FROM kursor_filmovi INTO @naziv;
    WHILE @@FETCH_STATUS=0
    BEGIN
        PRINT ' '+@naziv;
        FETCH NEXT FROM kursor_filmovi INTO @naziv;
    END;
    CLOSE kursor_filmovi;
    DEALLOCATE kursor_filmovi;

    FETCH NEXT FROM kursor_glumci
    INTO @id_glumca, @ime;
END

CLOSE kursor_glumci;
DEALLOCATE kursor_glumci;

Позив процедуре.

EXEC svi_glumci_filmovi
  1. Приказати различите жанрове у којима је глумио дати глумац.

Функција.

CREATE FUNCTION broj_zanrova_glumca (@ime VARCHAR(50))
RETURNS INT
AS
BEGIN
    DECLARE @broj INT;
    SELECT @broj = 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=@ime;
    RETURN @broj;
END

Позив функције.

PRINT dbo.broj_zanrova_glumca('Harrison Ford')
  1. Приказати глумце који су глумили у бар једном филму заједно са датим глумцем.

Процедура.

CREATE PROCEDURE glume_u_istim_filmovima @ime VARCHAR(50)
AS
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=@ime
)
AND ime!=@ime;

Позив процедуре.

EXEC glume_u_istim_filmovima @ime='Harrison Ford'
(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+