Садржај
3.0 SQL: Промена садржаја базе
3.2 SQL: Ажурирање података у табелама
3.3 SQL: Брисање података из табела
7.0 Библиотека Flask - пројектни задатак

Селекција (WHERE)

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

SELECT kolone
FROM tabele
WHERE uslov;

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

Пројекцијом, дакле, избацујемо одређене колоне из резултата, а селекцијом (рестрикцијом) одређене врсте.

Селекцијом се из табеле издвајају само неке врсте

🤓 Зашто се ова операција зове селекција, односно рестрикција?

И термини селекција врста табеле и рестрикција табеле долазе из формализма релационе алгебре.

Реч селекција значи избор, а овде се односи на избор оних врста табеле, које задовољавају дати услов.

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

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

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

SELECT *
FROM ucenik
WHERE razred = 1;

Извршавањем упита добија се следећи резултат:

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

1

Петар

Петровић

м

2006-07-01

1

1

2

Милица

Јовановић

ж

2006-04-03

1

1

3

Лидија

Петровић

ж

2006-12-14

1

1

6

Јован

Миленковић

м

2006-04-07

1

2

7

Јована

Миленковић

ж

2006-04-07

1

2

Овај упит може да се протумачи као:

ОДАБЕРИ све колоне
ИЗ РЕДОВА табеле ученика
КОД КОЈИХ је разред једнак 1

Услов у овом упиту је razred = 1. Приметимо да у услову могу да се наводе називи колона табеле, као и константне вредности (у овом случају то је број 1), док се за једнакост користи знак =.

Приказати све податке о предметима у другом разреду

SELECT *
FROM predmet
WHERE razred = 2;

Извршавањем упита добија се следећи резултат:

id

naziv

razred

fond

4

Математика

2

5

5

Психологија

2

2

7

Физика

2

3

24

Српски језик

2

3

25

Енглески језик

2

2

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

SELECT *
FROM ucenik
WHERE ime = 'Петар';

Извршавањем упита добија се следећи резултат:

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

1

Петар

Петровић

м

2006-07-01

1

1

4

Петар

Миловановић

м

2005-12-08

2

1

50

Петар

Милић

м

2006-06-14

1

2

163

Петар

Платиша

м

2005-05-30

2

3

У овом упиту услов је ime = 'Петар'. Приметимо да је овај пут константна вредност 'Петар' наведена под једноструким наводницима, јер је у питању ниска карактера. Исти ефекат се може добити и ако се употребе двоструки наводници тј. ако се наведе "Петар".

SELECT *
FROM ucenik
WHERE ime = "Петар";

Извршавањем упита добија се следећи резултат:

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

1

Петар

Петровић

м

2006-07-01

1

1

4

Петар

Миловановић

м

2005-12-08

2

1

50

Петар

Милић

м

2006-06-14

1

2

163

Петар

Платиша

м

2005-05-30

2

3

Приказати све оцене добијене на писменим задацима.

SELECT *
FROM ocena
WHERE vrsta = 'писмени задатак';

Извршавањем упита добија се следећи резултат:

id

id_predmet

id_ucenik

ocena

datum

vrsta

11

1

1

3

2020-10-15

писмени задатак

12

1

2

3

2020-10-15

писмени задатак

13

1

3

2

2020-10-15

писмени задатак

15

1

14

3

2020-10-15

писмени задатак

16

1

15

1

2020-10-15

писмени задатак

Проверити да ли међу ученицима постоји неко ко се зове исто као што се и презива (приказати све такве ученике).

SELECT *
FROM ucenik
WHERE ime = prezime;

Извршавањем упита добија се следећи резултат:

id

ime

prezime

pol

datum_rodjenja

razred

odeljenje

201

Милић

Милић

м

2004-11-21

3

1

336

Милош

Милош

м

2003-08-09

4

3

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

Приказати све идентификаторе неоправданих изостанака.

SELECT id
FROM izostanak
WHERE status = 'неоправдан';

Извршавањем упита добија се следећи резултат:

id

2

5

9

10

11

У свим овим примерима вршили смо исљкучиво поређење коришћењем једнакости. У даљем раду ћеш научити да језик SQL подржава и друге релације.

Вежба

Пробај сада да самостално напишеш наредних неколико упита.

Приказати све податке о предметима који имају недељни фонд од 2 часа.



Издвојити имена и презимена ученика рођених 1. јула 2006. године.



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