Kieli, jolla relaatiotietokannasta haetaan, lisätään, muutetaan ja poistetaan tietoja.
Structured Query Language · Koodaus
SQL (Structured Query Language) on relaatiotietokantojen kyselykieli. Sillä luodaan taulut, haetaan tietoja ja muutetaan niitä. SQL on kansainvälisesti standardoitu: standardi on ISO/IEC 9075, jonka uusin painos julkaistiin vuonna 2023. Yleisimmät tietokannat, kuten PostgreSQL, MySQL, SQLite ja Microsoft SQL Server, käyttävät SQL:ää, ja jokaisessa on lisäksi omia laajennuksiaan.
SQL:n tavallisimmat käskyt vastaavat CRUD-toimintoja: INSERT lisää rivin, SELECT hakee tietoja, UPDATE muuttaa ja DELETE poistaa. WHERE-ehto rajaa, mihin riveihin käsky kohdistuu, ja JOIN yhdistää tietoja useasta taulusta, esimerkiksi tilaukset ja niiden asiakkaat. CREATE TABLE määrittää taulun sarakkeet ja niiden tyypit.
Vibekoodauksessa SQL:ää ei aina kirjoiteta itse. Supabase, Prisma ja muut työkalut muodostavat kyselyt koodin perusteella, ja tekoäly kirjoittaa ne sujuvasti. Kaksi asiaa kannattaa silti tarkistaa. Ensimmäinen on UPDATE tai DELETE ilman WHERE-ehtoa, joka muuttaa tai poistaa taulun kaikki rivit. Toinen on SQL-injektio: jos käyttäjän syöte liitetään kyselyyn suoraan merkkijonona, hyökkääjä voi ajaa omia käskyjään. Pyydä tekoälyä käyttämään parametrisoituja kyselyjä.
SQL on kieli, jolla relaatiotietokantaa käsitellään: sillä luodaan taulut ja haetaan, lisätään, muutetaan ja poistetaan tietoja. Sitä käyttävät esimerkiksi PostgreSQL, MySQL ja SQLite.
SQL tulee sanoista Structured Query Language eli rakenteinen kyselykieli. Kieli on standardoitu kansainvälisesti standardissa ISO/IEC 9075.
Perusteet kannattaa tuntea: SELECT, INSERT, UPDATE, DELETE ja WHERE. Tekoäly kirjoittaa kyselyt, mutta sinun pitää pystyä huomaamaan vaaralliset kohdat, kuten DELETE ilman WHERE-ehtoa tai käyttäjän syöte suoraan kyselyssä.
SELECT nimi, email FROM asiakkaat WHERE kaupunki = 'Tampere'; hakee tamperelaiset asiakkaat
INSERT INTO tuotteet (nimi, hinta) VALUES ('Kahvi', 4.50); lisää uuden tuotteen
UPDATE tilaukset SET tila = 'lähetetty' WHERE id = 17; muuttaa yhden tilauksen
DELETE FROM viestit; ilman WHERE-ehtoa poistaa taulun kaikki rivit
SELECT * FROM tilaukset JOIN asiakkaat ON tilaukset.asiakas_id = asiakkaat.id yhdistää kaksi taulua
"Kirjoita tämä kysely parametrisoituna, ettei siihen voi tehdä SQL-injektiota"
Tutustu kaikkiin vibekoodauksen termeihin.