Lekce psaní na stroji: Programování v jazyce SQL

zavřete a začněte psát

Psaní všemi deseti je významné v programování. Při psaní kódu v SQL programovacím jazyce budete efektivnější používat techniky rychlého psaní.

Pojďme se dozvědět více o jazyce SQL a psaní všemi deseti při programování v SQL.

Programování v SQL a psaní všemi deseti

Učení SQL a procvičování psaní na klávesnici k sobě přirozeně patří. Dotazy SQL jsou plné závorek, čárek, operátorů a uvozovek. Malé chyby, například špatně zadaný uvozovkový znak nebo vynechaný středník, mohou způsobit, že se celý dotaz nespustí. Při psaní v SQL je dobré vědět, které části syntaxe jsou společné napříč databázemi a které jsou specifické pro konkrétní systém. V tomto článku se zaměříme hlavně na PostgreSQL, ale zmíníme také MySQL, SQLite a SQL Server tam, kde se syntaxe liší.

Co je charakteristické pro syntaxi SQL?

SQL (Structured Query Language) je deklarativní jazyk. Místo toho, abyste popisovali krok za krokem, jak data získat, určíte, jaká data chcete. Téměř každý příkaz začíná klíčovým slovem, například SELECT, INSERT nebo UPDATE. Pořadí klauzulí je pevně dané: SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY .... PostgreSQL a MySQL toto pořadí sdílí, takže pokud se jej naučíte v jednom systému, snadno jej použijete i v jiném.

SELECT id, name
FROM customers
WHERE active = true
ORDER BY created_at DESC;

Speciální znaky, které často píšete

SQL je plné interpunkce. Kulaté závorky () obklopují funkce a podmínky. Čárky , oddělují sloupce. Tečka . se používá pro schémata a názvy tabulek, například public.users. Jednoduché uvozovky '...' označují řetězce. PostgreSQL používá dvojité uvozovky "..." pro identifikátory, zatímco MySQL používá zpětné apostrofy `...`. V SQL Serveru se můžete setkat i se hranatými závorkami [...]. Procvičování těchto symbolů pomáhá psát dotazy bez náhodného rozbití.

-- Řetězcový literál
SELECT * FROM books WHERE title = 'War and Peace';

-- Identifikátory s mezerami (PostgreSQL)
SELECT "Order ID", "Customer Name" FROM orders;

Velká a malá písmena

Podle konvence se klíčová slova SQL obvykle píší velkými písmeny: SELECT, FROM, WHERE. Usnadňuje to jejich rozpoznání v dotazech, ale není to povinné. V PostgreSQL se necitované identifikátory automaticky převádějí na malá písmena, takže MyTable a mytable se chápou stejně. V MySQL záleží chování na operačním systému. Pro cvičení psaní se vyplatí používat velká písmena u klíčových slov, protože tím zvýrazníte strukturu dotazu.

Středníky a ukončení příkazů

V PostgreSQL by měl každý příkaz končit středníkem ;. Jeho vynechání může zablokovat spuštění dotazu v nástrojích jako psql. MySQL a SQLite jsou v interaktivním režimu tolerantnější, ale středník je stále doporučenou praxí. Tento malý znak bývá častou příčinou selhání dotazů při rychlém psaní.

Dotazy SELECT a spojování tabulek

Psaní dotazů často znamená psaní spojení. PostgreSQL používá INNER JOIN, LEFT JOIN a RIGHT JOIN. Každé spojení vyžaduje klíčové slovo ON a podmínku. Pokud vynecháte mezeru nebo napíšete špatně podmínku, dotaz nebude fungovat. Procvičování spojení je dobrý způsob, jak si zvyknout na přesné psaní symbolů jako = 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;

Funkce a výrazy

PostgreSQL obsahuje mnoho vestavěných funkcí, například COUNT(), SUM() nebo AVG(). Vždy vyžadují závorky. Funkce pro datum a čas, jako NOW() nebo DATE_TRUNC(), jsou typické pro PostgreSQL. MySQL má podobné funkce, například CURDATE() nebo DATE_FORMAT(). Správné psaní těchto funkcí vyžaduje pečlivost při zadávání podtržítek, čárek a závorek.

SELECT DATE_TRUNC('month', created_at) AS month,
       COUNT(*) AS orders
FROM orders
GROUP BY month
ORDER BY month;

INSERT, UPDATE, DELETE

Příkazy, které mění data, obsahují mnoho interpunkčních znaků. INSERT používá závorky a čárky pro seznamy sloupců a hodnot. UPDATE používá operátor = oddělený čárkami. DELETE kombinuje klíčová slova s podmínkami. Tyto konstrukce jsou téměř stejné v PostgreSQL, MySQL, SQLite i SQL Serveru, i když pravidla pro citování se mohou lišit.

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;

Společné tabulkové výrazy (CTE)

PostgreSQL hojně používá společné tabulkové výrazy (CTE - Common Table Expressions), zavedené pomocí klíčového slova WITH. CTE často obsahují více závorek a čárek, takže se dobře hodí k procvičování psaní. MySQL a SQLite je podporují v novějších verzích a SQL Server také. Nejčastějším problémem je správné vyvážení závorek.

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;

Okénkové funkce

PostgreSQL je známý svými pokročilými okénkovými funkcemi. Typická syntaxe OVER (PARTITION BY ... ORDER BY ...) vyžaduje pečlivé psaní závorek a klíčových slov. MySQL a SQL Server také podporují okénkové funkce, ale PostgreSQL se často bere jako referenční implementace.

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

Parametry a zástupné symboly

Když se SQL používá v aplikacích, zástupné symboly se liší podle databází. PostgreSQL používá $1, $2, MySQL a SQLite používají ? a SQL Server @p1. Tyto malé znaky je snadné napsat špatně, ale jsou zásadní pro správné spuštění dotazů.

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

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

Shrnutí

Podle konvence se klíčová slova SQL píší velkými písmeny, zatímco identifikátory zůstávají malými, pokud nejsou citovány. PostgreSQL používá dvojité uvozovky pro identifikátory, symboly $n, CTE a okénkové funkce. MySQL používá zpětné apostrofy a otazník ?. SQL Server zavádí hranaté závorky a parametry @. SQLite má jednoduchou syntaxi, ale stále vyžaduje přesnost. Procvičování dotazů SQL rozvíjí přesnost při psaní interpunkce, klíčových slov a symbolů. Zaměření na PostgreSQL dává dobrou praxi s jednou z nejpoužívanějších moderních databází.