Vodiči

Š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. DELETE ili UPDATE bez klauzule WHERE menja 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)

idnameemailcity
1Lena Ortizlena@example.comLisbon
2Sam Patelsam@example.comLeeds

orders (porudžbine)

idcustomer_idtotalplaced_at
101142.002026-09-20
102218.502026-09-22
103125.002026-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
INSERTDodaje nove redove
UPDATEMenja postojeće redove
DELETEUklanja redove
CREATE TABLE / ALTER TABLEPravi ili menja strukturu tabele
WHEREFiltrira redove na koje se odnosi
JOINSpaja povezane tabele
GROUP BYSažima redove u grupe, uz COUNT, SUM, AVG
ORDER BY / LIMITSortira 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

PojamZnačenje
Upit (query)SQL naredba, posebno ona koja čita podatke.
Tabela / red / kolonaVrsta 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.
IndeksStruktura za pretragu koja znatno ubrzava pretragu kolone.
ŠemaStruktura svih tabela i kolona.
TransakcijaGrupa izmena koje ili uspeju ili propadnu zajedno.
SQL injekcijaNapad 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.

Mythex · Pricing · Pravite bilo šta uz AI · Šabloni za sajtove i aplikacije · Mythex u poređenju · Rečnik pojmova za pravljenje aplikacija uz AI · Besplatni alati za pravljenje aplikacija uz AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)