Što je SQL? Jezik za baze podataka jednostavno objašnjen
SQL (Structured Query Language, izgovara se „es-ku-el“ ili „sekvel“) je standardni jezik za rad s relacijskim bazama podataka, onima koje podatke spremaju u tablice redaka i stupaca, poput Postgresa, MySQL-a, SQLite-a i SQL Servera. SQL koristite da postavljate pitanja o podacima („koji su kupci rezervirali ovaj mjesec?“) i da dodajete, mijenjate ili uklanjate zapise. Postoji od sedamdesetih godina, međunarodni je standard i pokreće velik dio svjetskih aplikacija.
Zašto je SQL važan kad gradite uz AI
Kad od AI alata za izradu aplikacija zatražite „spremi narudžbe“ ili „prikaži popis nadolazećih rezervacija“, nešto mora razgovarati s bazom podataka, a u većini aplikacija to je SQL, bilo napisan izravno ili generiran preko ORM-a.
Ne morate sami pisati SQL, ali malo razumijevanja se isplati:
- Možete provjeriti vlastite podatke. Kratak upit odgovara na pitanje „koliko je novih registracija ovaj tjedan?“ brže nego što se gradi novi zaslon.
- Možete tražiti bolje izvještaje. „Grupiraj prihod po mjesecu i usluzi“ je ideja iz SQL-a. Kad to znate, zahtjev postaje jasniji.
- Možete uočiti opasne promjene.
DELETEiliUPDATEbezWHEREklauzule utječe na svaki redak. To vrijedi uhvatiti prije nego se izvrši. - Vaši podaci nisu zaključani. SQL je zajednički standard, pa se podaci u SQL bazi mogu premjestiti i čitati s mnogo alata.
Svakodnevna usporedba
Zamislite vrlo dobro organiziranu knjižnicu s knjižničarom koji govori samo preciznim, jednostavnim jezikom.
Ne idete sami tražiti po policama. Knjižničaru predajete karticu: „Pronađi sve knjige ovog autora, objavljene nakon 2010., najnovije prve.“ Knjižničar poznaje zgradu iznutra i vraća upravo te knjige, tim redoslijedom.
SQL je jezik na kartici. Vi kažete što želite, a ne kako to pronaći; baza podataka sama odredi najbrži put.
Kako SQL radi: tablice, reci i stupci
Relacijska baza podataka podatke drži u tablicama. Svaka tablica sadrži jednu vrstu stvari, svaki redak je jedan zapis, a svaki stupac jedan podatak:
customers
| id | name | city | |
|---|---|---|---|
| 1 | Lena Ortiz | lena@example.com | Lisabon |
| 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 |
Stupac customer_id povezuje svaku narudžbu s kupcem. Upravo ta veza čini bazu „relacijskom“.
Primjer na djelu: odgovaranje na stvarna pitanja
1. Čitanje podataka: „prikaži sve kupce iz Lisabona“:
SELECT name, email
FROM customers
WHERE city = 'Lisabon';
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 tablica: „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: „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 primjernim podacima 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 gotovo svake aplikacije: stvaranje, čitanje, ažuriranje i brisanje, poznate kao CRUD.
Upozorenje: UPDATE customers SET city = 'Porto'; bez WHERE klauzule mijenja svakog kupca. Uvijek provjerite WHERE prije nego pokrenete promjenu.
Glavni dijelovi SQL-a
| Naredba | Što radi |
|---|---|
SELECT | Čita podatke |
INSERT | Dodaje nove retke |
UPDATE | Mijenja postojeće retke |
DELETE | Uklanja retke |
CREATE TABLE / ALTER TABLE | Stvara ili mijenja strukturu tablice |
WHERE | Filtrira koji se retci zahvaćaju |
JOIN | Spaja povezane tablice |
GROUP BY | Sažima retke u grupe, s COUNT, SUM, AVG |
ORDER BY / LIMIT | Sortira i ograničava rezultate |
SQL je standardiziran, ali svaka baza dodaje vlastite proširenja, zvana 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 naredba, posebno ona koja čita podatke. |
| Tablica / redak / stupac | Vrsta stvari / jedan zapis / jedan atribut. |
| Primarni ključ | Stupac koji jednoznačno identificira svaki redak, obično id. |
| Strani ključ | Stupac koji pokazuje na redak u drugoj tablici, poput customer_id. |
| Indeks | Struktura za pretragu koja pretraživanje stupca čini mnogo bržim. |
| Shema | Struktura svih tablica i stupaca. |
| Transakcija | Skup promjena koje uspijevaju ili propadaju zajedno. |
| SQL injection | Napad u kojem se korisnički unos ubacuje u upit. Sprječava se parametriziranim upitima. |
Česte zablude
- „SQL je baza podataka.“ SQL je jezik; Postgres, MySQL i SQLite su baze koje govore njime.
- „SQL je star, pa je zastario.“ Zreo je, nije zastario. Moderne baze i alati za podatke i dalje ga koriste, a noviji sustavi č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 spremaju JSON. Postgres, primjerice, ima tip
jsonb. Vidi SQL naspram NoSQL-a. - „Dopustiti AI-ju da izvršava bilo koji SQL na produkciji je u redu.“ Čitanja su malog rizika; promjene i brisanja na živim podacima zaslužuju sigurnosnu kopiju i drugi pogled. Vidi kako napraviti sigurnosnu kopiju baze podataka aplikacije.
Što pitati svog AI alata za izradu
- „Pokaži mi tablice u mojoj bazi i što znači svaki stupac.“
- „Napiši upit samo za čitanje: koliko je novih registracija po danu u zadnjih 30 dana?“
- „Prije nego pokreneš bilo koji UPDATE ili DELETE, pokaži mi upit i koliko će redaka utjecati.“
- „Dodaj indekse na stupce po kojima najčešće filtriramo i sortiramo.“
- „Osiguraj da je svaki upit koji koristi korisnički unos parametriziran.“
- „Stavi ažuriranja narudžbi i plaćanja u transakciju da ne mogu uspjeti napola.“
SQL u Mythexu
Kad vaša aplikacija treba pohranjivati podatke, Mythex projektu dodaje namjenski Postgres bazu podataka. Zatražite u chatu, primjerice „spremi e-adrese s liste čekanja u bazu podataka“, ili koristite naredbu /database (Baza podataka). Agent kreira tablice i piše upite, a u Ask načinu rada možete zatražiti da bilo koji upit objasni običnim jezikom. Za više o samoj bazi pročitajte što je Postgres.
Pitanja
Što je SQL, jednostavno rečeno?
SQL (Structured Query Language, strukturirani jezik upita) je standardni jezik za rad s relacijskim bazama podataka. Koristite ga da postavljate pitanja o svojim podacima, poput „koje su narudžbe napravljene ovaj tjedan“, i da dodajete, mijenjate ili brišete zapise.
Kako se izgovara SQL?
Izgovor „es-ku-el“ (slovo po slovo) i „sekvel“ su uobičajeni i ispravni. Jezik se izvorno zvao SEQUEL, otuda drugi izgovor.
Je li SQL programski jezik?
SQL je jezik za upite, namijenjen upravljanju podacima. Opisujete koji rezultat želite, a baza podataka sama odlučuje kako ga dobiti. Sam po sebi ne služi za izradu cijelih aplikacija, ali dio je gotovo svake aplikacije koja koristi relacijsku bazu.
Je li 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), grupiranje i optimizacija performansi traže više vremena.
Trebam li znati SQL da bih izradio aplikaciju uz AI?
Ne. AI alat za izradu piše SQL ili kod za bazu podataka umjesto vas. Malo razumijevanja pomaže vam da provjerite svoje podatke, zatražite izvještaje i uočite rizične promjene prije nego se dogode.