Tämän päivän tilastot

Suoritettuja harjoituksia
-
Kirjoitetut merkit Kirjoitetut sanat
-
Harjoitteluaika
-

Kokonaistilastot

Suoritettuja harjoituksia
-
Kirjoitetut merkit Kirjoitetut sanat
-
Harjoitteluaika
-

Kymmensormijärjestelmän oppitunti: Ohjelmointi SQL-kielellä

Kymmensormijärjestelmä on ohjelmoinnin kannalta merkittävä. Olet tehokkaampi, kun käytät nopeita kirjoitustekniikoita koodin kirjoittamiseen ohjelmointikielellä SQL.

Opitaan lisää SQL-kielestä ja kymmensormijärjestelmästä ohjelmoitaessa SQL-kielellä.

Ohjelmointi SQL-kielellä ja kymmensormijärjestelmä

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 funktioiden argumentteja ja ryhmittelevät ehtoja. Pilkut , erottavat sarakkeet. Pistettä . 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ä tietokantojen ja taulujen nimien kirjainkoon merkitsevyys riippuu käyttöjärjestelmästä ja palvelimen asetuksista. Harjoituksissa on tavallista käyttää isoja kirjaimia avainsanoissa, koska se korostaa kyselyn rakennetta.

Puolipiste ja lauseen lopetus

SQL:ssä puolipiste ; päättää lauseen. Interaktiiviset työkalut, kuten psql, MySQL-asiakasohjelma ja SQLite-komentotulkki, odottavat tavallisesti tätä merkkiä ennen lauseen suorittamista. Psql:ssä voit lähettää nykyisen kyselyn myös komennolla \g. Jos tuloksen sijaan näkyy kehote kirjoittaa lisää, tarkista, oletko päättänyt lauseen.

SELECT-kyselyt ja joinit

Kyselyjen kirjoittaminen tarkoittaa usein myös joinien kirjoittamista. PostgreSQL käyttää INNER JOIN, LEFT JOIN ja RIGHT JOIN. Alla olevassa esimerkissä liitosehto annetaan avainsanan ON jälkeen. Liitokset voivat käyttää myös USING- tai NATURAL-syntaksia. 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ää merkkiä = arvojen asettamiseen ja pilkkuja yksittäisten sijoitusten erottamiseen. 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, SQLite ja SQL Server tukevat myös CTE-rakenteita. Tarkista, että jokaista avaavaa suljetta vastaa sulkeva sulje.

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. Alla oleva esimerkki käyttää PostgreSQL:n syntaksia.

SELECT customer_id,
       SUM(amount) OVER (PARTITION BY customer_id ORDER BY created_at) AS running_total
FROM payments;

Parametrit ja paikkamerkit

Sovelluksissa parametrien paikkamerkit riippuvat sekä tietokannasta että käytetystä ajurista. PostgreSQL:n natiivit valmistellut lauseet käyttävät merkintää $1, $2, MySQL:n valmistellut lauseet ja SQLite-kyselyt voivat käyttää merkintää ?, ja SQL Serverin parametreilla on nimiä kuten @p1. Ajuri voi vaatia toisenlaista syntaksia, esimerkiksi %s Psycopgissa. Tarkista oikea syntaksi ajurin dokumentaatiosta, sillä nämä pienet merkit on helppo kirjoittaa väärin.

-- PostgreSQL
SELECT * FROM users WHERE id = $1;

-- MySQL
SELECT * FROM users WHERE id = ?;

Yhteenveto

Tavan mukaan SQL-avainsanat kirjoitetaan isoilla kirjaimilla. PostgreSQL muuntaa ilman kaksoislainausmerkkejä kirjoitetut tunnisteet pieniksi kirjaimiksi; muiden järjestelmien säännöt eroavat tästä. 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ä laajasti käytetystä nykyaikaisesta tietokantajärjestelmästä.

Seuraava teksti
Seuraava oppitunti
Tehtävä Takaisin testiin
sql
Kaavio Piilota