SQL

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ä.

Usein kysyttyä

Mikä on SQL?

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.

Mitä SQL-lyhenne tarkoittaa?

SQL tulee sanoista Structured Query Language eli rakenteinen kyselykieli. Kieli on standardoitu kansainvälisesti standardissa ISO/IEC 9075.

Pitääkö SQL:ää osata vibekoodatessa?

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ä.

Esimerkkejä

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"