Šta je SQL? Jezik za baze podataka jednostavno objašnjen
SQL (Structured Query Language, izgovara se „S-Q-L“ ili „sikvel“) je standardni jezik za rad s relacionim bazama podataka, onim koje čuvaju podatke u tabelama s redovima i kolonama, poput Postgresa, MySQL-a, SQLite-a i SQL Servera. SQL koristite da postavljate pitanja o podacima („koji kupci su rezervisali ovaj mjesec?“) i da dodajete, mijenjate ili uklanjate zapise. Postoji od sedamdesetih godina, međunarodni je standard i pokreće veliki dio svjetskih aplikacija.
Zašto je SQL važan kad pravite uz AI
Kad od AI alata za izradu aplikacija zatražite da „sačuva narudžbe“ ili „prikaže listu predstojećih rezervacija“, nešto mora razgovarati s bazom podataka, a u većini aplikacija to je SQL, napisan direktno ili generisan preko ORM-a.
Ne morate sami pisati SQL, ali malo razumijevanja se isplati:
- Možete provjeriti sopstvene podatke. Kratak upit odgovara na pitanje „koliko je novih registracija ove sedmice?“ brže nego da pravite novi ekran.
- Možete tražiti bolje izvještaje. „Grupiši prihod po mjesecu i usluzi“ je SQL ideja. Kad je znate, zahtjev postaje jasniji.
- Možete uočiti opasne izmjene.
DELETEiliUPDATEbezWHEREklauzule utiče na svaki red. To vrijedi uhvatiti prije nego se izvrši. - Vaši podaci nisu zaključani. SQL je zajednički standard, pa podatke u SQL bazi mogu čitati i pomjerati mnogi alati.
Analogija iz svakodnevnog života
Zamislite jako dobro organizovanu biblioteku s bibliotekarem koji govori samo precizan, jednostavan jezik.
Ne idete sami po policama. Predate bibliotekarki karticu: „Nađi sve knjige ovog autora, objavljene nakon 2010, najnovije prve.“ Bibliotekarka poznaje zgradu do detalja i vraća upravo te knjige, tim redoslijedom.
SQL je jezik na toj kartici. Vi kažete šta želite, a ne kako to naći — baza sama odredi najbrži put.
Kako SQL radi: tabele, redovi i kolone
Relaciona baza podataka čuva podatke u tabelama. Svaka tabela drži jednu vrstu stvari, svaki red je jedan zapis, a svaka kolona je jedan podatak:
customers
| id | name | city | |
|---|---|---|---|
| 1 | Lena Ortiz | lena@example.com | Lisbon |
| 2 | Sam Patel | sam@example.com | Leeds |
orders
| id | customer_id | total | placed_at |
|---|---|---|---|
| 101 | 1 | 42.00 | 2026-09-20 |
| 102 | 2 | 18.50 | 2026-09-22 |
| 103 | 1 | 25.00 | 2026-09-27 |
Kolona customer_id povezuje svaku narudžbu s kupcem. Upravo ta veza čini bazu „relacionom“.
Radni primjer: odgovaranje na stvarna pitanja
1. Čitanje podataka — „pokaži sve kupce iz Lisabona“:
SELECT name, email
FROM customers
WHERE city = 'Lisbon';
2. Sortiranje i ograničavanje — „pet najnovijih narudžbi“:
SELECT id, total, placed_at
FROM orders
ORDER BY placed_at DESC
LIMIT 5;
3. Spajanje tabela — „svaka narudžba s imenom kupca“:
SELECT o.id, c.name, o.total
FROM orders o
JOIN customers c ON c.id = o.customer_id;
4. Sažimanje — „ukupno potrošeno po kupcu“:
SELECT c.name, SUM(o.total) AS total_spent
FROM customers c
JOIN orders o ON o.customer_id = c.id
GROUP BY c.name
ORDER BY total_spent DESC;
Sa primjerom podataka, ovo vraća Lenu Ortiz s 67.00 i Sama Patela s 18.50.
5. Mijenjanje podataka:
INSERT INTO customers (name, email, city)
VALUES ('Ana Silva', 'ana@example.com', 'Porto');
UPDATE customers SET city = 'Porto' WHERE id = 1;
DELETE FROM orders WHERE id = 102;
Ovo se preslikava na četiri osnovne radnje skoro svake aplikacije — kreiranje, čitanje, izmjena i brisanje, poznate kao CRUD.
Upozorenje: UPDATE customers SET city = 'Porto'; bez WHERE klauzule mijenja svakog kupca. Uvijek provjerite WHERE prije pokretanja izmjene.
Glavni dijelovi SQL-a
| Komanda | Šta radi |
|---|---|
SELECT | Čita podatke |
INSERT | Dodaje nove redove |
UPDATE | Mijenja postojeće redove |
DELETE | Uklanja redove |
CREATE TABLE / ALTER TABLE | Kreira ili mijenja strukturu tabele |
WHERE | Filtrira koji redovi su pogođeni |
JOIN | Spaja povezane tabele |
GROUP BY | Sažima redove u grupe, uz COUNT, SUM, AVG |
ORDER BY / LIMIT | Sortira i ograničava rezultate |
SQL je standardizovan, ali svaka baza dodaje svoje posebnosti, što se zove dijalekt. Postgres, MySQL i SQLite razumiju gornje primjere, dok se detalji poput funkcija za datume malo razlikuju.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Upit (query) | SQL izraz, posebno onaj koji čita podatke. |
| Tabela / red / kolona | Vrsta stvari / jedan zapis / jedan atribut. |
| Primarni ključ | Kolona koja jedinstveno određuje svaki red, obično id. |
| Strani ključ | Kolona koja pokazuje na red u drugoj tabeli, poput customer_id. |
| Indeks | Struktura za pretragu koja znatno ubrzava pretragu kolone. |
| Šema | Struktura svih tabela i kolona. |
| Transakcija | Grupa izmjena koje ili uspiju ili propadnu zajedno. |
| SQL injection | Napad u kojem se korisnički unos ubacuje u upit. Sprječava se parametrizovanim upitima. |
Česte zablude
- „SQL je baza podataka.“ SQL je jezik; Postgres, MySQL i SQLite su baze koje ga govore.
- „SQL je star, pa je zastario.“ Zreo je, nije zastario. Savremene baze i alati za podatke i dalje ga koriste, a noviji sistemi često dodaju podršku za SQL.
- „Samo programeri mogu koristiti SQL.“ Analitičari, marketinški stručnjaci i osnivači svakodnevno koriste jednostavne upite.
- „SQL ne može podnijeti fleksibilne podatke.“ Mnoge SQL baze također čuvaju JSON. Postgres, na primjer, ima
jsonbtip. Pogledajte SQL vs NoSQL. - „Dozvoliti AI-ju da pokreće bilo koji SQL na produkciji je u redu.“ Čitanja su malorizična; izmjene i brisanja na živim podacima zaslužuju rezervnu kopiju i drugu provjeru. Pogledajte kako napraviti rezervnu kopiju baze aplikacije.
Šta tražiti od vašeg AI alata
- „Pokaži mi tabele u mojoj bazi i šta znači svaka kolona.“
- „Napiši upit samo za čitanje: koliko je novih registracija po danu u posljednjih 30 dana?“
- „Prije pokretanja bilo kojeg UPDATE-a ili DELETE-a, pokaži mi upit i koliko redova će uticati.“
- „Dodaj indekse na kolone po kojima najčešće filtriramo i sortiramo.“
- „Pobrini se da je svaki upit koji koristi korisnički unos parametrizovan.“
- „Zamotaj ažuriranja narudžbi i plaćanja u transakciju da ne mogu polovično uspjeti.“
SQL u Mythexu
Kad vaša aplikacija treba da čuva podatke, Mythex dodaje projektu namjensku Postgres bazu — zatražite u chatu, na primjer „sačuvaj e-mailove s liste čekanja u bazu“, ili koristite komandu /database (Baza podataka). Agent kreira tabele i piše upite, a u Ask režimu možete ga zamoliti da objasni bilo koji upit običnim jezikom. Za više o samoj bazi pročitajte šta je Postgres.
Pitanja
Šta je SQL jednostavno rečeno?
SQL (Structured Query Language, strukturirani jezik upita) je standardni jezik za rad s relacionim bazama podataka. Koristite ga da postavljate pitanja o podacima, na primjer „koje su narudžbe napravljene ove sedmice“, i da dodajete, mijenjate ili brišete zapise.
Kako se izgovara SQL?
I „S-Q-L“ (izgovor slova po slovo) i „sikvel“ su uobičajeni i ispravni. Jezik se prvobitno zvao SEQUEL, odatle dolazi drugi izgovor.
Da li je SQL programski jezik?
SQL je jezik za upite, namijenjen upravljanju podacima. Opisujete koji rezultat želite, a baza sama odredi kako da ga dobije. Sam po sebi ne služi za pravljenje cijelih aplikacija, ali je dio gotovo svake aplikacije koja koristi relacionu bazu.
Da li je SQL težak za učenje?
Osnove su pristupačne: SELECT, WHERE, ORDER BY, INSERT, UPDATE i DELETE pokrivaju većinu svakodnevnih potreba i čitaju se gotovo kao engleski. Spajanja (join), grupisanje i podešavanje performansi zahtijevaju više vremena.
Da li trebam znati SQL da bih napravio aplikaciju uz AI?
Ne. AI alat piše SQL ili kod za bazu umjesto vas. Ako znate malo, lakše ćete provjeriti svoje podatke, tražiti izvještaje i uočiti rizične izmjene prije nego se dogode.