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

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

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

../_images/slika_112b.jpg
  1. Библиотеци је потребан списак свих аутора. Ради лакшег прегледања списка, важно је да списак буде уређен абецедно.

Задатак: Написати упит којим се приказују имена и презимена аутора, уређено абецедно по презимену, а ако имају исто презиме, по имену.

SELECT ime, prezime
FROM autori
ORDER BY prezime, ime
../_images/slika_112c.jpg

Клаузула ORDER BY се увек додаје на крај упита. Уколико желимо да изменимо редослед сортирања, потребно је да додамо реч DESC, скраћено од енглеске речи DESCENDING, што значи опадајуће. Ову реч по потреби додајемо уз сваку колону у делу ORDER BY зато што се односи на појединачне колоне, а не на комбинацију колона. На тај начин, ако имамо неколико услова сортирања, појединачни могу да буду растући, а неки опадајући.

У измењеном примеру који следи смо променили редослед сортирања и по презимену и по имену.

SELECT ime, prezime
FROM autori
ORDER BY prezime DESC, ime DESC

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

../_images/slika_112d.jpg

Упит можемо да изменимо тако да додамо нова заглавља у колоне у приказу резултата.

SELECT ime "Ime autora", prezime "Prezime autora"
FROM autori
ORDER BY prezime, ime

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

SELECT ime+' '+prezime "Ime i prezime autora"
FROM autori
ORDER BY prezime, ime
../_images/slika_112e.jpg
  1. Библиотека планира да набави још књига у издању издавачке куће СЕТ. Да би могли да пошаљу наруџбеницу, потребна им је адреса те издавачке куће.

Задатак: Написати упит којим се приказује адреса издавачке куће са називом СЕТ.

../_images/slika_112f.jpg

Када знамо тачан податак који тражимо, потребно је да употребимо оператор који врши поређење по једнакости (=).

  1. Члан је дошао у библиотеку и жели да узме неку књигу из рачунарства. Не зна тачан назив књиге која му треба, па пита библиотекара које све књиге имају на тему рачунарства.

Задатак: Написати упит којим се приказују наслови књига који садрже реч „racunarstvo“.

НАПОМЕНА: Да би се избегли могући проблеми са нашим словима, ћириличним и латиничним, за податке у бази се свуда у овим материјалима користите слова енглеске абецеде, такозвана шишана латиница.

SELECT naziv
FROM knjige
WHERE naziv LIKE 'Racunarstvo%' OR naziv LIKE '%racunarstvo%'
../_images/slika_112g.jpg

Када знамо само део текстуалног података који тражимо, потребно је да употребимо оператор LIKE и формирамо шаблон. Знак % у шаблону мења један, ниједан или више знакова, па га по потреби стављамо пре, после или пре и после дела текста који тражимо.

  1. Библиотека жели да допуни своју базу података и унесе адресе и веб-сајтове за све издавачке куће са којима сарађује, па је важно да се провери који им подаци недостају да би знали које издавачке куће да контактирају да би набавили потребне податке.

Задатак: Написати упит којим се приказују називи издавача за које немамо унету адресу или адресу веб-сајта.

SELECT naziv
FROM izdavaci
WHERE adresa IS NULL OR veb_sajt IS NULL

Овај упит има смисла зато што над овим колонама немамо ограничење NOT NULL, па може да се догоди да неки од ових података није унет. Овакав упит не би имао смисла за колоне које имају ограничење NOT NULL зато што у њима није могуће да имамо неко празно поље.

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

Можемо у табелу да унесемо још једног издавача, али без адресе и адресе веб-сајта.

INSERT into izdavaci
VALUES (5, 'Vulkan', null, null)

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

DELETE FROM izdavaci
WHERE id=5

Празно поље, тј. NULL поље, нема никакву вредност и посматра се као показивач на „ништа“, па су потребни посебни оператори IS NULL и IS NOT NULL да би се проверило да ли је поље празно или није. Није могуће користити оператор који пореди по једнакости (=).

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

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

SELECT inventarski_broj, inventarski_broj*10+2 "Predlog novog broja"
FROM primerci
WHERE id_knjige = 555
../_images/slika_112h.jpg

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

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