Kymmensormijärjestelmä on ohjelmoinnin kannalta merkittävä. Olet tehokkaampi käyttämällä nopeita kirjoitustekniikoita koodin kirjoittamiseen SQL ohjelmointikielellä.
Ohjelmointi SQL- ja kymmenensormijärjestelmässä
SQL:n oppiminen ja kymmensormijärjestelmän harjoittelu kulkevat hyvin käsi kädessä. SQL-kyselyt sisältävät paljon sulkeita, pilkkuja, operaattoreita ja lainausmerkkejä. Pienet virheet, kuten väärä lainausmerkki tai puuttuva puolipiste, voivat estää koko kyselyn suorittamisen. Kun kirjoitat SQL:ää, on hyödyllistä tietää, mitkä syntaksin osat ovat yhteisiä eri tietokannoille ja mitkä ovat järjestelmäkohtaisia. Tässä artikkelissa keskitytään pääasiassa PostgreSQL:ään, mutta mainitaan myös MySQL, SQLite ja SQL Server siellä, missä syntaksi eroaa.
Mikä on ominaista SQL-syntaksille?
SQL (Structured Query Language) on deklaratiivinen kieli. Sen sijaan, että kuvaisit vaihe vaiheelta, miten tiedot haetaan, ilmoitat, mitä tietoja haluat. Lähes jokainen lause alkaa avainsanalla, kuten SELECT
, INSERT
tai UPDATE
. Lausekkeiden järjestys on kiinteä: SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...
. PostgreSQL ja MySQL noudattavat tätä järjestystä, joten jos opit sen toisessa, voit käyttää sitä myös toisessa.
SELECT id, name
FROM customers
WHERE active = true
ORDER BY created_at DESC;
Erikoismerkit, joita käytetään usein
SQL on täynnä välimerkkejä. Sulkeet ()
ympäröivät funktioita ja ehtoja. Pilkut ,
erottavat sarakkeet. Piste .
käytetään skeemoissa ja taulukoissa, kuten public.users
. Yksinkertaiset lainausmerkit '...'
merkitsevät merkkijonoja. PostgreSQL käyttää kaksoislainausmerkkejä "..."
tunnisteille, kun taas MySQL käyttää backtickejä `...`
. SQL Serverissä esiintyy myös hakasulkuja [...]
. Näiden merkkien harjoittelu auttaa kirjoittamaan virheettömiä kyselyitä.
-- Merkkijono
SELECT * FROM books WHERE title = 'War and Peace';
-- Tunnisteet, joissa on välilyöntejä (PostgreSQL)
SELECT "Order ID", "Customer Name" FROM orders;
Isot ja pienet kirjaimet
Tavan mukaan SQL-avainsanat kirjoitetaan usein isoilla kirjaimilla: SELECT
, FROM
, WHERE
. Tämä tekee niistä helpommin havaittavia kyselyissä, mutta se ei ole pakollista. PostgreSQL:ssä lainaamattomat tunnisteet muunnetaan automaattisesti pieniksi kirjaimiksi, joten MyTable
ja mytable
käsitellään samana. MySQL:ssä käytös riippuu käyttöjärjestelmästä. Harjoituksissa on tavallista käyttää isoja kirjaimia avainsanoissa, koska se korostaa kyselyn rakennetta.
Puolipiste ja lauseen lopetus
PostgreSQL:ssä jokainen lause päättyy yleensä puolipisteeseen ;
. Sen unohtaminen voi estää suorittamisen työkaluissa, kuten psql
. MySQL ja SQLite ovat sallivampia interaktiivisessa tilassa, mutta puolipiste on silti hyvä käytäntö. Tämä pieni merkki on usein syy siihen, että kysely ei toimi.
SELECT-kyselyt ja joinit
Kyselyjen kirjoittaminen tarkoittaa usein myös joinien kirjoittamista. PostgreSQL käyttää INNER JOIN
, LEFT JOIN
ja RIGHT JOIN
. Jokainen join vaatii avainsanan ON
ja ehdon. Virheellinen välilyönti tai väärin kirjoitettu ehto rikkoo kyselyn. Joinien harjoittelu auttaa tarkkuuteen merkeissä kuten =
ja .
.
SELECT c.id, c.name, o.amount
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id
WHERE o.amount > 100;
Funktiot ja lausekkeet
PostgreSQL sisältää monia funktioita, kuten COUNT()
, SUM()
ja AVG()
. Sulkeet ovat aina pakollisia. Päivämäärä- ja aikafunktiot, kuten NOW()
tai DATE_TRUNC()
, ovat tyypillisiä PostgreSQL:lle. MySQL:ssä on vastaavia funktioita, kuten CURDATE()
ja DATE_FORMAT()
. Niiden kirjoittaminen oikein vaatii tarkkuutta alaviivojen, pilkkujen ja sulkeiden kanssa.
SELECT DATE_TRUNC('month', created_at) AS month,
COUNT(*) AS orders
FROM orders
GROUP BY month
ORDER BY month;
INSERT, UPDATE, DELETE
Tietoja muuttavat komennot sisältävät paljon välimerkkejä. INSERT
käyttää sulkeita ja pilkkuja sarakkeiden ja arvojen luetteloimiseen. UPDATE
käyttää =
pilkuilla erotettuna. DELETE
yhdistää avainsanat ehtoihin. Nämä rakenteet ovat lähes identtisiä PostgreSQL:ssä, MySQL:ssä, SQLite:ssä ja SQL Serverissä, vaikka lainausmerkkisäännöt voivat vaihdella.
INSERT INTO users (id, name, email)
VALUES (1, 'Alice', 'a@example.com');
UPDATE users
SET name = 'Bob', email = 'bob@example.com'
WHERE id = 1;
DELETE FROM users WHERE id = 2;
Common Table Expressions (CTE)
PostgreSQL käyttää paljon CTE-rakenteita (Common Table Expressions), jotka aloitetaan avainsanalla WITH
. Niissä on usein useita sulkeita ja pilkkuja, joten ne ovat hyvää harjoitusta. MySQL ja SQLite tukevat niitä uudemmissa versioissa, ja myös SQL Server hyväksyy ne. Sulkeiden oikea asettelu on tavallisin virhe.
WITH recent_orders AS (
SELECT * FROM orders WHERE created_at > NOW() - INTERVAL '30 days'
)
SELECT customer_id, COUNT(*) AS order_count
FROM recent_orders
GROUP BY customer_id;
Ikkunafunktiot
PostgreSQL tunnetaan edistyneistä ikkunafunktioistaan. Tyypillinen syntaksi OVER (PARTITION BY ... ORDER BY ...)
vaatii tarkkuutta sulkeiden ja avainsanojen kanssa. MySQL ja SQL Server tukevat myös ikkunafunktioita, mutta PostgreSQL toimii usein vertailukohtana.
SELECT customer_id,
SUM(amount) OVER (PARTITION BY customer_id ORDER BY created_at) AS running_total
FROM payments;
Parametrit ja placeholders
Sovelluksissa placeholderit vaihtelevat tietokannan mukaan. PostgreSQL käyttää $1, $2
, MySQL ja SQLite käyttävät ?
, ja SQL Server @p1
. Nämä pienet symbolit on helppo kirjoittaa väärin, mutta ne ovat tärkeitä kyselyjen toiminnalle.
-- PostgreSQL
SELECT * FROM users WHERE id = $1;
-- MySQL
SELECT * FROM users WHERE id = ?;
Yhteenveto
Tavan mukaan SQL-avainsanat kirjoitetaan isoilla kirjaimilla, kun taas tunnisteet pysyvät pieninä, ellei niitä lainata. PostgreSQL lisää kaksoislainausmerkit tunnisteille, käyttää $n
-placeholdereita, CTE-rakenteita ja ikkunafunktioita. MySQL käyttää backtickejä ja ?
-placeholdereita. SQL Server lisää hakasulut ja @
-parametrit. SQLite pitää syntaksin yksinkertaisena, mutta vaatii tarkkuutta. SQL-kyselyiden harjoittelu kehittää huolellisuutta välimerkkien, avainsanojen ja symbolien kanssa, ja PostgreSQL:ään keskittyminen antaa kokemusta yhdestä nykyaikaisimmista tietokannoista.