Садржај
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_133a.jpg

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

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

../_images/slika_133b.jpg
  1. Написати упит који приказује име и презиме особе чији је број возачке дозволе 000123175.

SELECT ime, prezime
FROM vozacke_dozvole
WHERE broj_dozvole='000123175'
../_images/slika_133c.jpg
  1. Написати упит којим се приказују подаци о возачким дозволама које обухватају категорију са ознаком В, као и датум када су је стекли.

SELECT broj_dozvole, prezime, ime, datum_izdavanja,
datum_prestanka, datum_sticanja
FROM vozacke_dozvole
JOIN kategorije_dozvole ON (kategorije_dozvole.id_dozvole=vozacke_dozvole.id)
JOIN kategorije ON (kategorije_dozvole.id_kategorije=kategorije.id)
WHERE oznaka='B'

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

SELECT vd.broj_dozvole, vd.prezime, vd.ime, vd.datum_izdavanja,
vd.datum_prestanka, kd.datum_sticanja
FROM vozacke_dozvole vd
JOIN kategorije_dozvole kd ON (kd.id_dozvole=vd.id)
JOIN kategorije k ON (kd.id_kategorije=k.id)
WHERE k.oznaka='B'
../_images/slika_133d.jpg
  1. Написати упит којим се приказују подаци о свим категоријама на дозволи са бројем 001560375.

SELECT oznaka
FROM vozacke_dozvole JOIN kategorije_dozvole
ON (kategorije_dozvole.id_dozvole=vozacke_dozvole.id)
JOIN kategorije ON (kategorije_dozvole.id_kategorije=kategorije.id)
WHERE broj_dozvole='001560375'

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

SELECT oznaka
FROM vozacke_dozvole vd JOIN kategorije_dozvole kd
ON (kd.id_dozvole=vd.id)
JOIN kategorije k ON (kd.id_kategorije=k.id)
WHERE broj_dozvole='001560375'
../_images/slika_133e.jpg
  1. Написати упит којим се приказују све категорије које су стечене пре 1. јануара 2020. године. Приказати поред ознаке категорије, име и презиме особе и датум стицања категорије. Резултат уредити по ознаци категорије.

SELECT oznaka, ime, prezime, datum_sticanja
FROM kategorije JOIN kategorije_dozvole
ON (kategorije_dozvole.id_kategorije=kategorije.id)
JOIN vozacke_dozvole ON (kategorije_dozvole.id_dozvole=vozacke_dozvole.id)
WHERE datum_sticanja<'2020-01-01'
ORDER BY oznaka
../_images/slika_133f.jpg
  1. Написати упит којим се приказује списак различитих категорија (ознака) за које имамо издате возачке дозволе у Београду.

SELECT DISTINCT oznaka
FROM kategorije JOIN kategorije_dozvole
ON (kategorije_dozvole.id_kategorije=kategorije.id)
JOIN vozacke_dozvole ON (kategorije_dozvole.id_dozvole=vozacke_dozvole.id)
JOIN gradovi ON (vozacke_dozvole.id_grada=gradovi.id)
WHERE gradovi.naziv='BEOGRAD'
../_images/slika_133g.jpg
  1. Написати упит којим се приказује број различитих категорија (ознака) за које имамо издате возачке дозволе у Београду.

SELECT COUNT(oznaka)
FROM kategorije JOIN kategorije_dozvole
ON (kategorije_dozvole.id_kategorije=kategorije.id)
JOIN vozacke_dozvole ON (kategorije_dozvole.id_dozvole=vozacke_dozvole.id)
JOIN gradovi ON (vozacke_dozvole.id_grada=gradovi.id)
WHERE gradovi.naziv='BEOGRAD'

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

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

У овом решењу није потребно да спајамо и табелу у којој се чувају подаци о категоријама. Довољно је да пребројимо id_kategorije у табели kategorije_dozvole.

SELECT broj_dozvole, COUNT(id_kategorije)
FROM kategorije_dozvole
JOIN vozacke_dozvole ON (kategorije_dozvole.id_dozvole=vozacke_dozvole.id)
GROUP BY broj_dozvole
../_images/slika_133h.jpg

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

../_images/slika_133i.jpg
  1. Написати упит којим се приказују возачке дозволе које покривају више категорија.

Решење овог задатка се добија надоградњом претходног. За сваку дозволу морамо да избројимо категорије које покрива, а онда да проберемо оне где је тај број већи од 1.

SELECT broj_dozvole, COUNT(id_kategorije)
FROM kategorije_dozvole
JOIN vozacke_dozvole ON (kategorije_dozvole.id_dozvole=vozacke_dozvole.id)
GROUP BY broj_dozvole
HAVING COUNT(id_kategorije)>1
../_images/slika_133j.jpg
  1. Написати упит којим се добијају подаци о особи или особама које су стекле категорију В пре Бранислава Зорановића.

Подупит треба да врати датум када је Бранислав Зорановић стекао дозволу за категорију В.

SELECT broj_dozvole, ime, prezime
FROM vozacke_dozvole JOIN kategorije_dozvole
ON (kategorije_dozvole.id_dozvole=vozacke_dozvole.id)
JOIN kategorije ON (kategorije_dozvole.id_kategorije=kategorije.id)
WHERE oznaka='B' AND datum_sticanja < (SELECT datum_sticanja
    FROM vozacke_dozvole JOIN kategorije_dozvole
    ON (kategorije_dozvole.id_dozvole=vozacke_dozvole.id)
    JOIN kategorije ON (kategorije_dozvole.id_kategorije=kategorije.id)
    WHERE oznaka='B' AND ime='Branislav' AND prezime='Zoranovic')

Када би постојале две особе са именом и презименом Бранислав Зораноић овај упит не би био коректан зато што би подупит вратио више вредности. Једно од могућих проширења је да се користи <ALL пре подупита.

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