Šta je SQL? Jezik za baze podataka objašnjen jednostavno
SQL (Structured Query Language, izgovara se „es-kju-el“ ili „sikvel“) je standardni jezik za rad sa relacionim bazama podataka, odnosno onim bazama koje podatke čuvaju u tabelama sa redovima i kolonama, kao što su Postgres, MySQL, SQLite i SQL Server. Pomoću SQL-a postavljate pitanja o podacima („koji kupci su rezervisali ovog meseca?“) i dodajete, menjate ili uklanjate zapise. Jezik postoji od 1970-ih, međunarodni je standard i pokreće veliki deo aplikacija u svetu.
Zašto je SQL važan kada pravite aplikacije uz AI
Kada AI alatu za pravljenje aplikacija kažete „sačuvaj porudžbine“ ili „prikaži listu predstojećih rezervacija“, nešto mora da komunicira sa bazom, a u većini aplikacija to je SQL, bilo napisan direktno ili generisan preko ORM-a.
Ne morate sami da pišete SQL, ali malo razumevanja se isplati:
- Možete sami da proverite podatke. Kratak upit odgovara na pitanje „koliko je registracija bilo ove nedelje?“ brže nego što bi se pravio novi ekran.
- Možete tražiti bolje izveštaje. „Grupiši prihod po mesecu i usluzi“ je SQL ideja. Kada je znate, zahtev je jasniji.
- Možete uočiti opasne izmene.
DELETEiliUPDATEbez klauzuleWHEREmenja svaki red. To treba uhvatiti pre nego što se izvrši. - Vaši podaci nisu zaključani. SQL je zajednički standard, pa se podaci iz SQL baze mogu prebaciti i čitati pomoću mnogo različitih alata.
Svakodnevna analogija
Zamislite veoma dobro organizovanu biblioteku sa bibliotekarom koji govori samo precizan i jednostavan jezik.
Ne tražite knjige po policama sami. Bibliotekaru predate karticu: „Pronađi sve knjige ovog autora, objavljene posle 2010, najnovije prve.“ Bibliotekar zna zgradu iznutra i vraća upravo te knjige, tim redom.
SQL je jezik na kartici. Vi kažete šta želite, a ne kako to da nađete. Baza sama bira najbrži put.
Kako SQL radi: tabele, redovi i kolone
Relaciona baza podataka čuva podatke u tabelama. Svaka tabela sadrži jednu vrstu stvari, svaki red je jedan zapis, a svaka kolona je jedan podatak:
customers (kupci)
| id | name | city | |
|---|---|---|---|
| 1 | Lena Ortiz | lena@example.com | Lisbon |
| 2 | Sam Patel | sam@example.com | Leeds |
orders (porudžbine)
| 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 porudžbinu sa kupcem. Upravo ta veza čini bazu „relacionom“.
Radni primer: odgovaranje na stvarna pitanja
1. Čitanje podataka: „prikaži sve kupce iz Lisabona“:
SELECT name, email
FROM customers
WHERE city = 'Lisbon';
2. Sortiranje i ograničenje: „pet najnovijih porudžbina“:
SELECT id, total, placed_at
FROM orders
ORDER BY placed_at DESC
LIMIT 5;
3. Spajanje tabela: „svaka porudžbina sa imenom kupca“:
SELECT o.id, c.name, o.total
FROM orders o
JOIN customers c ON c.id = o.customer_id;
4. Sažimanje: „ukupna potrošnja 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 ovim primerima podataka, upit vraća Lenu Ortiz sa 67,00 i Sama Patela sa 18,50.
5. Menjanje 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 odgovara četirima osnovnim radnjama skoro svake aplikacije: kreiranje, čitanje, izmena i brisanje, poznato kao CRUD.
Upozorenje: UPDATE customers SET city = 'Porto'; bez klauzule WHERE menja sve kupce. Uvek proverite WHERE pre nego što pokrenete izmenu.
Glavni delovi SQL-a
| Komanda | Šta radi |
|---|---|
SELECT | Čita podatke |
INSERT | Dodaje nove redove |
UPDATE | Menja postojeće redove |
DELETE | Uklanja redove |
CREATE TABLE / ALTER TABLE | Pravi ili menja strukturu tabele |
WHERE | Filtrira redove na koje se odnosi |
JOIN | Spaja povezane tabele |
GROUP BY | Sažima redove u grupe, uz COUNT, SUM, AVG |
ORDER BY / LIMIT | Sortira rezultate i ograničava njihov broj |
SQL je standardizovan, ali svaka baza dodaje sopstvene proširenja, što se zove dijalekat. Postgres, MySQL i SQLite razumeju gore navedene primere, dok se detalji, na primer funkcije za datume, malo razlikuju.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Upit (query) | SQL naredba, posebno ona koja č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 upućuje na red u drugoj tabeli, na primer customer_id. |
| Indeks | Struktura za pretragu koja znatno ubrzava pretragu kolone. |
| Šema | Struktura svih tabela i kolona. |
| Transakcija | Grupa izmena koje ili uspeju ili propadnu zajedno. |
| SQL injekcija | Napad u kome se korisnički unos ubacuje u upit. Sprečava se parametrizovanim upitima. |
Česte zablude
- „SQL je baza podataka.“ SQL je jezik; Postgres, MySQL i SQLite su baze koje na njemu govore.
- „SQL je star, pa je zastareo.“ On je zreo, a ne preživeo. Savremene baze i alati za podatke i dalje ga koriste, a noviji sistemi često dodaju podršku za SQL.
- „SQL mogu da koriste samo programeri.“ Analitičari, marketinški stručnjaci i osnivači svakodnevno koriste jednostavne upite.
- „SQL ne može da podnese fleksibilne podatke.“ Mnoge SQL baze čuvaju i JSON. Postgres, na primer, ima tip
jsonb. Pogledajte SQL i NoSQL. - „Pustiti AI da izvršava bilo koji SQL na produkciji je u redu.“ Čitanje je male rizičnosti; izmene i brisanja na živim podacima zahtevaju rezervnu kopiju i dodatnu proveru. Pogledajte kako napraviti rezervnu kopiju baze aplikacije.
Šta da tražite od AI alata za pravljenje aplikacija
- „Prikaži mi tabele u bazi i šta znači svaka kolona.“
- „Napiši upit samo za čitanje: koliko je novih registracija po danu u poslednjih 30 dana?“
- „Pre nego što izvršiš bilo koji UPDATE ili DELETE, prikaži mi upit i koliko redova će uticati.“
- „Dodaj indekse na kolone po kojima najčešće filtriramo i sortiramo.“
- „Pobrini se da svaki upit koji koristi korisnički unos bude parametrizovan.“
- „Obavi izmene porudžbina i plaćanja unutar transakcije da ne mogu da uspeju samo delimično.“
SQL u Mythex-u
Kada vašoj aplikaciji treba čuvanje podataka, Mythex projektu dodaje namenski Postgres bazu. Zatražite to u chatu, na primer „sačuvaj adrese za listu čekanja u bazi“, ili koristite komandu /database (Baza podataka). Agent pravi tabele i piše upite, a u Ask režimu možete tražiti da vam objasni bilo koji upit običnim jezikom. Za više o samoj bazi pročitajte šta je Postgres.
Pitanja
Šta je SQL jednostavnim rečima?
SQL (Structured Query Language, strukturirani upitni jezik) je standardni jezik za rad sa relacionim bazama podataka. Koristi se da se postave pitanja o podacima, na primer „koje su porudžbine napravljene ove nedelje“, i da se dodaju, menjaju ili brišu zapisi.
Kako se izgovara SQL?
Ispravni su i „es-kju-el“ (slovo po slovo) i „sikvel“. Jezik se prvobitno zvao SEQUEL, otuda i drugi način izgovora.
Da li je SQL programski jezik?
SQL je jezik za upite, namenjen upravljanju podacima. Vi opisujete koji rezultat želite, a baza sama određuje kako da ga dobije. Sam po sebi se ne koristi za pravljenje celih aplikacija, ali je deo gotovo svake aplikacije koja koristi relacionu bazu.
Da li je SQL teško naučiti?
Osnove su pristupačne: SELECT, WHERE, ORDER BY, INSERT, UPDATE i DELETE pokrivaju većinu svakodnevnih potreba i čitaju se gotovo kao engleski. Spajanje tabela, grupisanje i podešavanje performansi zahtevaju više vremena.
Da li treba da znam SQL da bih napravio aplikaciju uz AI?
Ne. AI alat za pravljenje aplikacija napiše SQL ili kod za bazu umesto vas. Ako malo znate, lakše ćete proveriti podatke, tražiti izveštaje i uočiti rizične izmene pre nego što se dogode.