User Tools

Site Tools


sql

This is an old revision of the document!


SQL

SQL (Structured Query Language) je programski jezik koji se koristi za spremanje i procesiranje informacija u relacijskim bazama podataka. Relacijske baze podataka pohranjuju podatke u tablicama, gdje su redovi tablice n-torke (1 redak - 1 relacija), dok su stupci atributi relacija koje sve relacije u tablici posjeduju.
Korisnici:

KorisnikID Prezime Ime Adresa Grad
1 Anić Ana Branimirova 5 Zagreb
2 Markić Marko Ulica J.J. Strossmayera 6 Osijek
3 Larić Lara Ilica 15 Zagreb
4 Ivić Ivo Kalelarga 3 Zadar
5 Ivić Ivo Laginjina 7 Zagreb


SQL upiti

SQL upiti (eng. queries) strukturirane su SQL naredbe kojima se upravlja podatcima relacijske baze podataka. Izvršavaju se radi dohvata, izmjene ili stvaranja novih podataka. SQL podržava četiri osnovne operacije nad podatcima, a to su čitanje (SELECT), izmjena (UPDATE), stvaranje (INSERT), i brisanje (DELETE). Ime operacije piše se odmah na početku upita. Svaka se operacija može izvršiti nad jednom ili više tablica unutar iste baze podataka. Zato se nakon odabira željene operacije u upitu dodaje naredba FROM u kojoj navodimo točno nad kojim tablicama izvodimo upit. Ako ne želimo izvesti upit nad cijelom tablicom, već samo nad nekim podatcima koji zadovoljavaju određeni uvjet, tad koristimo naredbu WHERE <uvjet>. Uvjeta može biti proizvoljno mnogo, a međusobno ih povezujemo logičkim operatorima (AND, OR).

SQL je case-insensitive, dakle velika i mala slova interpretiraju se jednako (osim kod stringova). Uobičajena je praksa pisati ključne riječi velikim slovima, a imena atributa malim slovima ili velikim početnim slovom.

SELECT

SELECT naredba koristi se da dohvat podataka iz tablice bez njihovog mijenjanja. Odaberimo korisnike koji se zovu “Ivo” i prezivaju “Ivić”. Oznaka za sve podatke je *.

SELECT * FROM Korisnici 
WHERE Ime = "Ivo" AND Prezime="Ivić"
KorisnikID Prezime Ime Adresa Grad
4 Ivo Ivić Kalelarga 3 Zadar
5 Ivo Ivić Laginjina 7 Zagreb

Možemo odabrati i samo pojedinačne podatke. Primjerice, odaberimo samo imena i prezimena ljudi koji žive u Zagrebu.

SELECT Ime, Prezime 
FROM Korisnici 
WHERE Grad = "Zagreb"

^Ime ^Prezime ^

Anić Ana
Larić Lara
Ivo Ivić

Primijetimo da su se podatci naveli onim redom kojim su zadani u upitu, a ne onim kojim su u tablici.

UPDATE

UPDATE naredba koristi se kad želimo izmijeniti određeni podatak u tablici. Primjerice, promijenimo adresu Ane Anić u Branimirova 50.

UPDATE Korisnici
SET adresa = "Branimirova 50"
WHERE KorisnikId = 1 ;

Primijetimo oznaku kraja naredbe (;). Naravno, mogli smo staviti i bilo koji drugi uvjet koji ta relacija zadovoljava (po imenu, prezimenu, adresi…), no nekako je uobičajeno koristiti ID jer je on u pravilu nepromjenjiv. Rezultat je promijenjena n-torka:

1 Anić Ana Branimirova 50 Zagreb

INSERT

INSERT naredba koristi se za umetanje novih podataka u tablicu. Npr ako želimo unijeti novog korisnika, to ćemo napraviti na ovaj način:

INSERT INTO Korisnici VALUES
('6', 'Marić', 'Marija', 'Ulica Ivana pl. Zajca 2', 'Split');

Naravno, u stvarnosti se ID nikada ne unosi direktno, već je zadatak baze podataka da generira jedinstven identifikator za svaki nov podatak. Ako nakon ove naredbe izvedemo

SELECT * FROM Korisnici

Dobili smo:

KorisnikID Prezime Ime Adresa Grad
1 Anić Ana Branimirova 5 Zagreb
2 Markić Marko Ulica J.J. Strossmayera 6 Osijek
3 Larić Lara Ilica 15 Zagreb
4 Ivićo Ivo Kalelarga 3 Zadar
5 Ivić Ivo Laginjina 7 Zagreb
6 Marić Marija Ulica Ivana pl. Zajca 2 Split

DELETE

DELETE naredba koristi se za brisanje određene relacije. Recimo da želimo obrisati n-torku za Laru Larić. To ćemo izvesti na ovaj način:

DELETE FROM Korisnici
WHERE Ime = 'Lara' AND PREZIME = 'Laric' ;

Unutar baze podataka nalaze se podatci namijenjeni korisnicima, ali s njima su i osjetljivi podatci kojima bi samo administratori baza i drugi entiteti viših razina prava trebali imati pristup. Isto tako, neke podatke korisnik smije samo čitati, ali ih nikako se ne smije mijenjati. Na primjer, u slučaju baze podataka jedne banke, svaki korisnik smije vidjeti samo stanje svojeg računa, ali to isto stanje ne smije mijenjati. Važno je ispravno ograničiti mogućnosti i akcije korisnika različitih razina privilegija. Ne smijemo se pouzdati u to da korisnici baze podataka neće pokušati napraviti nešto nedozvoljeno, već baza mora imati implementirana dovoljno stroga ograničenja koja će prepoznati spriječiti svaki pokušaj neovlaštene akcije.

Izvori

sql.1700838570.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki