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

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

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

Ово је само један мали пример корисних информација које можемо да добијемо из базe. Упит SELECT је управо команда језика SQL којом ефикасно из великих количина сачуваних података добијамо информације. У овом уводу имамо кратак приказ пројекције, селекције и спајања табела, док ће сви ови могући елементи упита SELECT бити постепено разрађени и објашњени у пар наредних лекција.

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

Вратимо се на пример са делом базе података за библиотеку у којем се складиште подаци о свим примерцима књига које се налазе у библиотеци.

../_images/slika_111a.jpg

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

../_images/slika_111b.jpg

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

../_images/slika_111c.jpg

Можемо да погледамо део садржаја ових табела. На слици видимо по неколико редова (укупно 13 примерака 5 различитих књига). У овим табелама које су већ креиране у претходним лекцијама има још редова, а права библиотека би имала много више унетих податка. Такође, база података библиотеке мора да има још неколико табела у којима би се чували подаци о члановима и изнајмљивању књига, тј. о позајмицама.

На слици су бојама означени неки примери веза међу подацима који се налазе у различитим табелама да би се илустровало како то повезивање функционише. Плавом бојом су обележене три књиге истог издавача са идентификационим бројем 1. Љубичастом бојом су приказана два примерка књиге са идентификационим бројем 111. А зеленом и наранџастом је обележено како је у бази сачуван податак о томе да је Мијодраг Ђуришић један од аутора књиге „Основи програмирања, програмски језик с#“.

../_images/slika_111d.jpg

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

Упит SELECT има најмање два дела, такозване клаузулe, SELECT део и FROM део. Најједноставније што можемо да напишемо након резервисане речи SELECT је звездица са значењем да су нам потребни подаци из свих колона. Након речи FROM наводимо бар једну табелу из које упит треба да узме податке. Следећи упит приказује комплетан садржај табеле izdavaci.

SELECT * FROM izdavaci

Језик SQL није осетљив на велика и мала слова, тако да све можемо да пишемо великим словима, или малим, или комбиновано. Ипак, неке речи пишемо великим словима, а неке малим, ради боље читљивости команди.

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

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

../_images/slika_111e.jpg

Упити најчешће у себи имају:

  • пројекцију – избор само неких података за приказ, тј. податке из само одређених колона,

  • селекцију – избор само неких редова из табеле по одређеном услову претраге,

  • спајање табела – тражени подаци се налазе у различитим табелама и треба да их повежемо.

Узмимо, на пример, да библиотека жели да провери колико има примерака књига чији је издавач СЕТ да би размотрили да ли да набављају још књига овог издавача. За сваки примерак је пожељно да се види и која је књига у питању да би се размотрило могуће додатно набављање и појединих наслова овог издавача који се већ налазе у библиотеци.

На основу овог захтева долазимо до следећег задатка.

Задатак: Написати упит којим се приказују инвентарски бројеви и назив књига издавача чији је назив CET. Изменити заглавља колона у приказу резултата тако да буду редом „Primerak“ и „Naziv knjige“.

Анализираћемо поступак како формирамо решење, тј. упит SELECT.

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

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

../_images/slika_111f.jpg

У делу FROM упита је потребно ове табеле спојити по вредностима комбинација: страни кључ и одговарајући примарни кључ, тј. примарни кључ на који страни кључ показује. За идентификациони број књиге једног примерка треба у табели knjige да пронађемо која је то књига.

../_images/slika_111g.jpg

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

Када две табеле имају по колону са истим називом, тада је неопходно да испред назива колоне додамо назив табеле. У осталим ситуацијама не морамо да пишемо назив табеле. Тако је довољно да напишемо само назив колоне inventarski_broj зато што је јасно да је то колона из табеле primerci, док за идентификациони број књиге морамо да пишемо primerci.id_knjige или knjige.id_knjige јер су то две колоне у различитим табелама.

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

Следи цео упит.

SELECT inventarski_broj "Primerak", knjige.naziv "Naziv knjige"
FROM primerci JOIN knjige ON (primerci.id_knjige=knjige.id_knjige)
JOIN izdavaci ON (knjige.id_izdavaca=izdavaci.id)
WHERE izdavaci.naziv = 'CET'
../_images/slika_111h.jpg

У овом упиту је прво дошло до спајања три табеле, а затим су издвојени подаци из колона inventarski_broj и knjiga.naziv, и подаци из оних редова који одговарају постављеним условима.

../_images/slika_111j.jpg

Када добијемо резултат упита, подаци нису уређени на одређени начин. Уколико желимо уређене податке, на крај упита мора да се дода део ORDER BY. Подразумевано је растуће сортирање.

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

SELECT inventarski_broj "Primerak", knjige.naziv "Naziv knjige"
FROM primerci JOIN knjige ON (primerci.id_knjige=knjige.id_knjige)
JOIN izdavaci ON (knjige.id_izdavaca=izdavaci.id)
WHERE izdavaci.naziv = 'CET'
ORDER BY knjige.naziv, inventarski_broj
(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+