Izvedene kolone i ograničavanje broja rezultata - PROUČITI KOD KUĆE OBAVEZNO
0. Ponavljanje (treba nam za ostatak lekcije):
Kreiranje i popunjavanje tabela
-- Kreiranje tabele Proizvodi
CREATE TABLE Proizvodi (
ProizvodID INT PRIMARY KEY,
Naziv VARCHAR(50),
Cena DECIMAL(10,2)
);
-- Popunjavanje tabele Proizvodi
INSERT INTO Proizvodi (ProizvodID, Naziv, Cena) VALUES
(1, 'Hleb', 60.00),
(2, 'Mleko', 120.00),
(3, 'Sir', 450.00),
(4, 'Sok', 150.00),
(5, 'Kafa', 500.00);
-- Kreiranje tabele Ucenici
CREATE TABLE Ucenici (
UcenikID INT PRIMARY KEY,
Ime VARCHAR(30),
Prezime VARCHAR(30),
Razred INT
);
-- Popunjavanje tabele Ucenici
INSERT INTO Ucenici (UcenikID, Ime, Prezime, Razred) VALUES
(1, 'Marko', 'Markovic', 3),
(2, 'Ana', 'Jovanovic', 4),
(3, 'Nikola', 'Petrovic', 2),
(4, 'Ivana', 'Stojanovic', 1),
(5, 'Petar', 'Milosavljevic', 3),
(6, 'Milica', 'Ilic', 2),
(7, 'Jovan', 'Savic', 4),
(8, 'Katarina', 'Zoric', 1);
1. Pravljenje izvedenih kolona
U bazama podataka ne radimo uvek samo sa postojećim kolonama iz tabela. Ponekad je potrebno da prikažemo dodatne vrednosti koje se dobijaju izračunavanjem na osnovu postojećih podataka. Takve kolone se nazivaju izvedene kolone.
Te kolone se ne čuvaju u bazi, već se izračunavaju „u letu“ kada se upit izvrši.
Primer 1:
Ako u tabeli Proizvodi postoji kolona Cena, možemo izračunati cenu sa porezom (20%):
SELECT Naziv, Cena,
Cena * 1.2 AS CenaSaPorezom
FROM Proizvodi;
-- > U ovom primeru, Cena *
1.2 je izračunata kolona, a AS CenaSaPorezom joj daje ime.
*************
Primer 2: Izračunavanje PDV-a (20%) na cenu proizvoda (drugi način)
SELECT
ProizvodID,
Naziv,
Cena,
Cena * 0.20 AS PDV,
Cena * 1.20 AS CenaSaPDV
FROM Proizvodi;
-- > U ovom primeru su PDV i CenaSaPDV izvedene kolone.
DODATAK: Spajanje imena i prezimena u jedinstvenu kolonu (postavljeno posle časa u učionici)
Ako u tabeli postoje kolone Ime i Prezime (pretpostavimo da postoje):
SELECT
Ime,
Prezime,
Ime + ' ' + Prezime AS PunoIme -- MS SQL Server
FROM Korisnici;
-
U MySQL se za to koristi
CONCAT()SELECT CONCAT(Ime, ' ', Prezime) AS PunoIme FROM Korisnici;
-
SELECT Ime & " " & Prezime AS PunoIme FROM Korisnici;
2. Ograničavanje broja prikazanih podataka
U praksi nije uvek potrebno prikazati sve redove iz baze podataka. Kada tabela ima mnogo zapisa, može biti dovoljno da prikažemo samo određeni broj redova ili procenat od svih podataka.
U SQL Server-u se za to koristi ključna reč TOP.
(Napomena: Za MySQL se koristi ključna reč LIMIT, a za druge DBMS је drugačije! )
Primeri:
-
Prikaz prvih 5 učenika iz tabele Ucenici:
SELECT TOP 5 * FROM Ucenici;
-
Prikaz 10% učenika:
SELECT TOP 10 PERCENT * FROM Ucenici;