Strojopis je významný v programovaní. Na písanie kódu v programovacom jazyku SQL budete efektívnejší používať techniky rýchleho písania.
Programovanie v jazyku SQL a strojopis
Učenie SQL a precvičovanie strojopisu idú prirodzene dokopy. SQL dopyty sú plné zátvoriek, čiarok, operátorov a úvodzoviek. Malé chyby, ako nesprávna úvodzovka alebo chýbajúci bodkočiarka, môžu spôsobiť zlyhanie celého dopytu. Pri písaní SQL je užitočné vedieť, ktoré časti syntaxe sú spoločné medzi rôznymi databázami a ktoré sú špecifické. Tento článok sa zameriava najmä na PostgreSQL, ale spomína aj MySQL, SQLite a SQL Server tam, kde sa syntax líši.
Čo je charakteristické pre syntax SQL?
SQL (Structured Query Language) je deklaratívny jazyk. Namiesto opisovania krokov, ako získať údaje, deklarujete, ktoré údaje chcete. Takmer každý príkaz začína kľúčovým slovom ako SELECT
, INSERT
alebo UPDATE
. Poradie klauzúl je pevné: SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...
. PostgreSQL a MySQL toto poradie zdieľajú, takže ak sa ho naučíte v jednom systéme, využijete ho aj v druhom.
SELECT id, name
FROM customers
WHERE active = true
ORDER BY created_at DESC;
Často používané špeciálne znaky
SQL obsahuje veľa interpunkcie. Zátvorky ()
obklopujú funkcie a podmienky. Čiarky ,
oddeľujú stĺpce. Bodka .
sa používa pri schémach a názvoch tabuliek, napríklad public.users
. Jednoduché úvodzovky '...'
označujú textové reťazce. PostgreSQL používa dvojité úvodzovky "..."
pre identifikátory, zatiaľ čo MySQL používa backticky `...`
. V SQL Serveri sa používajú aj hranaté zátvorky [...]
. Precvičovanie týchto znakov pomáha písať dopyty správne.
-- Textový reťazec
SELECT * FROM books WHERE title = 'War and Peace';
-- Identifikátory s medzerami (PostgreSQL)
SELECT "Order ID", "Customer Name" FROM orders;
Veľké a malé písmená
Podľa zvyklostí sa kľúčové slová SQL píšu často veľkými písmenami: SELECT
, FROM
, WHERE
. Zviditeľňuje to ich úlohu, ale nie je to povinné. V PostgreSQL sa necitované identifikátory automaticky menia na malé písmená, takže MyTable
a mytable
sa považujú za rovnaké. V MySQL závisí správanie od operačného systému. Na precvičovanie sa často používajú veľké písmená pre kľúčové slová, aby bola štruktúra dotazu jasná.
Bodkočiarka a koniec príkazu
V PostgreSQL sa každý príkaz zvyčajne končí bodkočiarkou ;
. Zabudnutie môže zastaviť vykonanie v nástrojoch ako psql
. MySQL a SQLite sú v interaktívnom režime tolerantnejšie, ale bodkočiarka je stále odporúčaná. Tento malý znak býva častou príčinou chýb.
Dopyty SELECT a joiny
Písanie dopytov často znamená písanie joinov. PostgreSQL používa INNER JOIN
, LEFT JOIN
a RIGHT JOIN
. Každý join vyžaduje kľúčové slovo ON
nasledované podmienkou. Chýbajúca medzera alebo preklep podmienky zneplatní dopyt. Precvičovanie joinov pomáha pri presnom písaní symbolov ako =
a .
.
SELECT c.id, c.name, o.amount
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id
WHERE o.amount > 100;
Funkcie a výrazy
PostgreSQL má množstvo vstavaných funkcií, ako COUNT()
, SUM()
a AVG()
. Zátvorky sú vždy povinné. Funkcie dátumu a času ako NOW()
alebo DATE_TRUNC()
sú špecifické pre PostgreSQL. MySQL má ekvivalenty ako CURDATE()
alebo DATE_FORMAT()
. Správne napísanie vyžaduje pozornosť na podčiarkovníky, čiarky a zátvorky.
SELECT DATE_TRUNC('month', created_at) AS month,
COUNT(*) AS orders
FROM orders
GROUP BY month
ORDER BY month;
INSERT, UPDATE, DELETE
Príkazy, ktoré menia údaje, obsahujú veľa interpunkcie. INSERT
používa zátvorky a čiarky na zoznam stĺpcov a hodnôt. UPDATE
používa =
oddelené čiarkami. DELETE
kombinuje kľúčové slová s podmienkami. Tieto štruktúry sú takmer identické v PostgreSQL, MySQL, SQLite a SQL Serveri, hoci pravidlá citovania sa líšia.
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 často používa CTE začínajúce WITH
. Obsahujú veľa zátvoriek a čiarok, takže sú vhodným cvičením na písanie. MySQL a SQLite ich podporujú v novších verziách a SQL Server tiež. Najčastejšou chybou je nesprávne umiestnenie zátvoriek.
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;
Okenné funkcie
PostgreSQL je známe svojimi pokročilými okennými funkciami. Typická syntax OVER (PARTITION BY ... ORDER BY ...)
vyžaduje presné použitie zátvoriek a kľúčových slov. MySQL a SQL Server ich tiež podporujú, ale PostgreSQL je často považované za referenciu.
SELECT customer_id,
SUM(amount) OVER (PARTITION BY customer_id ORDER BY created_at) AS running_total
FROM payments;
Parametre a placeholders
V aplikáciách sa placeholders líšia medzi databázami. PostgreSQL používa $1, $2
, MySQL a SQLite používajú ?
a SQL Server používa @p1
. Tieto malé symboly sa ľahko popletú, ale sú kľúčové pre vykonanie.
-- PostgreSQL
SELECT * FROM users WHERE id = $1;
-- MySQL
SELECT * FROM users WHERE id = ?;
Zhrnutie
Podľa zvyklostí sa kľúčové slová SQL píšu veľkými písmenami, identifikátory ostávajú malými, pokiaľ nie sú v úvodzovkách. PostgreSQL používa dvojité úvodzovky pre identifikátory, placeholders $n
, CTE a okenné funkcie. MySQL používa backticky a ?
placeholders. SQL Server zavádza hranaté zátvorky a parametre @
. SQLite udržuje syntax jednoduchú, ale vyžaduje presnosť. Precvičovanie SQL dopytov zlepšuje presnosť písania symbolov a kľúčových slov a zameranie sa na PostgreSQL dáva skúsenosti s jednou z najpoužívanejších moderných databáz.