Mis on SQL? Andmebaasi keel lihtsalt selgitatuna
SQL (Structured Query Language, hääldatakse „S-Q-L” või „sequel”) on standardne keel relatsiooniliste andmebaasidega töötamiseks – selliste, mis hoiavad andmeid ridade ja veergudega tabelites, nagu Postgres, MySQL, SQLite ja SQL Server. SQL-iga küsid oma andmetelt küsimusi („kes klientidest broneeris sel kuul?”) ning lisad, muudad või eemaldad kirjeid. See on olnud kasutusel alates 1970. aastatest, on rahvusvaheline standard ja toetab suurt osa maailma rakendustest.
Miks SQL on oluline, kui ehitad AI-ga
Kui palud AI rakenduste ehitajalt „salvesta tellimused” või „näita tulevaste broneeringute nimekirja”, peab miski andmebaasiga rääkima – enamikus rakendustes on see SQL, kas kirjutatult otse või genereeritult ORM-i kaudu.
SQL-i ise kirjutama ei pea, kuid natuke arusaamist tasub:
- Oma andmeid saad kontrollida. Lühike päring vastab küsimusele „mitu registreerimist saime sel nädalal?” kiiremini kui uue ekraani ehitamine.
- Paremaid aruandeid saad küsida. „Grupeeri käive kuu ja teenuse järgi” on SQL-i mõte. Selle tundmine teeb sinu päringu selgemaks.
- Ohtlikke muudatusi märkad.
DELETEvõiUPDATEilmaWHEREklauslita mõjutab iga rida. See tuleb enne käivitamist kinni püüda. - Su andmed ei ole lukus. SQL on jagatud standard, seega saab SQL-andmebaasi andmeid lugeda ja liigutada paljud tööriistad.
Igapäevane analoogia
Mõtle väga heakorrastatud raamatukogule, kus töötab raamatukoguhoidja, kes räägib ainult täpset ja lihtsat keelt.
Sa ei käi riiulite vahel ise. Annad raamatukoguhoidjale kaardi: „Leia kõik selle autori raamatud, mis on ilmunud pärast 2010, uuemad enne.” Raamatukoguhoidja tunneb hoonet sisse-välja ja tuleb tagasi täpselt nende raamatute ja sellises järjekorras.
SQL on keel kaardil. Sa ütled, mida tahad, mitte kuidas seda leida – andmebaas leiab ise kiireima tee.
Kuidas SQL töötab: tabelid, read ja veerud
Relatsiooniline andmebaas hoiab andmeid tabelites. Iga tabel hoiab ühte liiki asju, iga rida on üks kirje ja iga veerg on üks infotükk:
customers (kliendid)
| id | name | city | |
|---|---|---|---|
| 1 | Lena Ortiz | lena@example.com | Lissabon |
| 2 | Sam Patel | sam@example.com | Leeds |
orders (tellimused)
| 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 |
Veerg customer_id seob iga tellimuse kliendiga. See seos teebki andmebaasi „relatsiooniliseks”.
Näide: päris küsimustele vastamine
1. Andmete lugemine – „näita kõiki kliente Lissabonis”:
SELECT name, email
FROM customers
WHERE city = 'Lissabon';
2. Sortimine ja piiramine – „viis viimast tellimust”:
SELECT id, total, placed_at
FROM orders
ORDER BY placed_at DESC
LIMIT 5;
3. Tabelite ühendamine – „iga tellimus koos kliendi nimega”:
SELECT o.id, c.name, o.total
FROM orders o
JOIN customers c ON c.id = o.customer_id;
4. Kokkuvõte – „kogu kulutus kliendi kohta”:
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;
Näidisandmetega tagastab see Lena Ortiz 67.00 ja Sam Patel 18.50.
5. Andmete muutmine:
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;
Need vastavad peaaegu iga rakenduse nelja põhitegevusele – loomine, lugemine, uuendamine ja kustutamine, tuntud kui CRUD.
Hoiatus: UPDATE customers SET city = 'Porto'; ilma WHERE klauslita muudab iga kliendi. Kontrolli alati WHERE-i enne muudatuse käivitamist.
SQL-i põhiosad
| Käsk | Mida see teeb |
|---|---|
SELECT | Loeb andmeid |
INSERT | Lisab uusi ridu |
UPDATE | Muudab olemasolevaid ridu |
DELETE | Eemaldab ridu |
CREATE TABLE / ALTER TABLE | Loob või muudab tabeli struktuuri |
WHERE | Filtreerib, millised read mõjutatakse |
JOIN | Ühendab seotud tabeleid |
GROUP BY | Kokkuvõtab read gruppidesse koos COUNT, SUM, AVG-iga |
ORDER BY / LIMIT | Sorteerib ja piirab tulemusi |
SQL on standardiseeritud, kuid iga andmebaas lisab omad lisandid, mida nimetatakse dialektiks. Postgres, MySQL ja SQLite mõistavad ülaltoodud näiteid, kuid sellised üksikasjad nagu kuupäevafunktsioonid erinevad veidi.
Põhimõisted
| Mõiste | Tähendus |
|---|---|
| Päring | SQL-lause, eriti see, mis loeb andmeid. |
| Tabel / rida / veerg | Asja liik / üks kirje / üks omadus. |
| Primaarvõti | Veerg, mis identifitseerib iga rea unikaalselt, tavaliselt id. |
| Võõrvõti | Veerg, mis viitab reale teises tabelis, näiteks customer_id. |
| Indeks | Otsingustruktuur, mis muudab veeru otsimise palju kiiremaks. |
| Skeem | Kõigi tabelite ja veergude struktuur. |
| Tehing (transaction) | Muudatuste rühm, mis õnnestub või ebaõnnestub koos. |
| SQL-i süstimine (injection) | Rünnak, kus kasutaja sisend lisatakse päringusse varjatult. Vältimiseks kasutatakse parameetrilisi päringuid. |
Levinud arusaamatused
- „SQL on andmebaas.” SQL on keel; Postgres, MySQL ja SQLite on andmebaasid, mis seda keelt räägivad.
- „SQL on vana, seega aegunud.” See on küps, mitte kasutusest kadunud. Kaasaegsed andmebaasid ja andmetööriistad kasutavad seda endiselt ning uuemad lisavad sageli SQL-i toe.
- „Ainult arendajad saavad SQL-i kasutada.” Analüütikud, turundajad ja asutajad kasutavad lihtsaid päringuid igapäevaselt.
- „SQL ei suuda paindlikke andmeid hoida.” Paljud SQL-andmebaasid hoiavad ka JSON-i. Postgresil on näiteks
jsonbtüüp. Vt SQL vs NoSQL. - „AI-l võib lubada käivitada mis tahes SQL-i tootmisandmetel.” Lugemised on madala riskiga; muudatused ja kustutamised elavatel andmetel väärivad varundust ja teist pilku. Vt kuidas varundada oma rakenduse andmebaasi.
Mida küsida oma AI ehitajalt
- „Näita mulle minu andmebaasi tabeleid ja mida iga veerg tähendab.”
- „Kirjuta ainult lugemisele mõeldud päring: mitu uut registreerimist päevas viimase 30 päeva jooksul?”
- „Enne mis tahes UPDATE’i või DELETE’i käivitamist näita mulle päringut ja seda, mitu rida see mõjutab.”
- „Lisa indeksid veergudele, mida filtreerime ja sorteerime kõige sagedamini.”
- „Veendu, et iga päring, mis kasutab kasutaja sisendit, on parameetriline.”
- „Mähi tellimuste ja maksete uuendused tehingusse, et need ei saaks pooleldi õnnestuda.”
SQL Mythexis
Kui su rakendus peab andmeid salvestama, lisab Mythex projektile pühendatud Postgres-andmebaasi – küsi vestluses, näiteks „salvesta ootenimekirja e-kirjad andmebaasi”, või kasuta käsku /database (Andmebaas). Agent loob tabelid ja kirjutab päringud ning Ask-režiimis saad paluda mis tahes päringu selgitamist lihtsas keeles. Andmebaasi endast loe lähemalt: mis on Postgres.
Küsimused
Mis on SQL lihtsas keeles?
SQL (Structured Query Language) on standardne keel relatsiooniliste andmebaasidega töötamiseks. Seda kasutad, et oma andmetelt küsimusi esitada, näiteks „millised tellimused tehti sel nädalal”, ning lisada, muuta või kustutada kirjeid.
Kuidas SQL-i hääldatakse?
Nii „S-Q-L” (tähed eraldi) kui ka „sequel” on levinud ja õiged. Keel kandis algselt nime SEQUEL, sellest tuleb teine hääldus.
Kas SQL on programmeerimiskeel?
SQL on päringukeel, mis on mõeldud andmete haldamiseks. Kirjeldad, millist tulemust soovid, ja andmebaas leiab ise, kuidas selle saada. Seda ei kasutata iseseisvalt terviklike rakenduste ehitamiseks, kuid see on osa peaaegu igast rakendusest, mis kasutab relatsioonilist andmebaasi.
Kas SQL on raske õppida?
Põhitõed on ligipääsetavad: SELECT, WHERE, ORDER BY, INSERT, UPDATE ja DELETE katavad enamiku igapäevastest vajadustest ning loevad peaaegu nagu inglise keel. Ühendamine, grupeerimine ja jõudluse häälestamine nõuavad kauem aega.
Kas pean SQL-i teadma, et AI-ga rakendust ehitada?
Ei pea. AI-ehitaja kirjutab SQL-i või andmebaasikoodi sinu eest. Natukesest arusaamisest on kasu, et oma andmeid kontrollida, aruandeid küsida ja riskantseid muudatusi enne nende toimumist märgata.