User Tools

Site Tools


sql

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
sql [2023/11/24 15:09] zrinkasql [2025/12/01 11:40] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====SQL==== ====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. \\ +**SQL (Structured Query Language)** je 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 koje sve relacije u tablici posjeduju. \\ 
-Korisnici: \\+Pretpostavimo da u bazi podataka postoji tablica Korisnici: \\
  
 ^KorisnikID ^Prezime ^Ime ^Adresa ^Grad ^ ^KorisnikID ^Prezime ^Ime ^Adresa ^Grad ^
Line 9: Line 9:
 |4 | Ivić | Ivo | Kalelarga 3 | Zadar | |4 | Ivić | Ivo | Kalelarga 3 | Zadar |
 |5 | Ivić | Ivo | Laginjina 7 | Zagreb | |5 | Ivić | Ivo | Laginjina 7 | Zagreb |
- 
  
 \\ \\
 ===SQL upiti=== ===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 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. +SQL je //case-insensitive//, dakle velika i mala slova interpretiraju se jednako (osim u znakovnim nizovima). 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** naredba koristi se za dohvat podataka iz tablice bez njihovog mijenjanja. Odaberimo korisnike koji se zovu "Ivo" i prezivaju "Ivić". Oznaka za sve podatke je *.
 <code sql> <code sql>
 SELECT * FROM Korisnici  SELECT * FROM Korisnici 
 WHERE Ime = "Ivo" AND Prezime="Ivić" WHERE Ime = "Ivo" AND Prezime="Ivić"
 </code> </code>
 +
 +Dobili smo: 
  
 ^KorisnikID ^Prezime ^Ime ^Adresa ^Grad ^ ^KorisnikID ^Prezime ^Ime ^Adresa ^Grad ^
-|4 | Ivo | Ivić | Kalelarga 3 | Zadar | +|4 | Ivić | Ivo | Kalelarga 3 | Zadar | 
-|5 | Ivo | Ivić | Laginjina 7 | Zagreb |+|5 | Ivić | Ivo | Laginjina 7 | Zagreb |
  
 Možemo odabrati i samo pojedinačne podatke. Primjerice, odaberimo samo imena i prezimena ljudi koji žive u Zagrebu. Možemo odabrati i samo pojedinačne podatke. Primjerice, odaberimo samo imena i prezimena ljudi koji žive u Zagrebu.
Line 34: Line 36:
 WHERE Grad = "Zagreb" WHERE Grad = "Zagreb"
 </code> </code>
- ^Ime ^Prezime ^ + 
 +Rezultat izgleda ovako:  
 + 
 +^Ime ^Prezime ^ 
 | Anić | Ana |  | Anić | Ana | 
 | Larić | Lara |  | Larić | Lara | 
Line 40: Line 45:
  
 Primijetimo da su se podatci naveli onim redom kojim su zadani u upitu, a ne onim kojim su u tablici.  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** naredba koristi se kad želimo izmijeniti određeni podatak u tablici. Primjerice, promijenimo adresu Ane Anić u Branimirova 50.
 <code sql> <code sql>
 UPDATE Korisnici UPDATE Korisnici
 SET adresa = "Branimirova 50" SET adresa = "Branimirova 50"
-WHERE KorisnikId = 1 ;+WHERE KorisnikID = 1 ;
 </code> </code>
-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. +Primijetimo oznaku kraja naredbe (;). Naravno, mogli smo staviti i bilo koji drugi uvjet koji ta n-torka zadovoljava (po imenu, prezimenu, adresi...), no uobičajeno je koristiti ID jer je on u pravilu nepromjenjiv.
-Rezultat je promijenjena n-torka:\\ +
-|1 | Anić | Ana | Branimirova 50 | Zagreb |\\+
  
-===INSERT=== +Izvršenjem gornje naredbe je prethodna n-torka (u kojoj je Anina adresa bila Branimirova 5) prebrisana ovom:\\ 
-**INSERT** naredba koristi se za umetanje novih podataka u tablicu. Npr ako želimo unijeti novog korisnika, to ćemo napraviti na ovaj način:+|1 | Anić | Ana | Branimirova 50 | Zagreb |\\ 
 +\\ 
 +\\ 
 +\\ 
 +**INSERT** naredba koristi se za umetanje novih podataka u tablicu. Ako želimo unijeti novog korisnika, to ćemo napraviti na ovaj način:
 <code sql> <code sql>
 INSERT INTO Korisnici VALUES INSERT INTO Korisnici VALUES
Line 70: Line 78:
 |5 | Ivić | Ivo | Laginjina 7 | Zagreb | |5 | Ivić | Ivo | Laginjina 7 | Zagreb |
 |6 | Marić | Marija | Ulica Ivana pl. Zajca 2 | Split | |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** naredba koristi se za brisanje određene relacije. Recimo da želimo obrisati n-torku za Laru Larić. To ćemo izvesti na ovaj način: 
 <code sql> <code sql>
Line 79: Line 88:
  
  
-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. +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. Uzmimo za primjer bazu podataka neke banke. Svaki korisnik smije vidjeti stanje samo svojeg svojeg računa, a ostalima ne bi smio imati pristup. Administrator baze podataka smije vidjeti stanja računa svih korisnika. Niti korisnik banke niti administrator ne smiju mijenjati stanje računaZato baze podataka implementiraju različita ograničenja kojima će spriječiti da korisnik radi nedozvoljene akcije. 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.  
  
  
sql.1700838570.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki