Dnešní statistiky

Absolvovaná cvičení
-
Napsané znaky Napsaná slova
-
Čas cvičení
-

Celkové statistiky

Absolvovaná cvičení
-
Napsané znaky Napsaná slova
-
Čas cvičení
-

Lekce psaní všemi deseti: Programování v jazyce SQL

Psaní všemi deseti je při programování důležité. Při psaní kódu v programovacím jazyce SQL vám techniky rychlého psaní pomohou pracovat efektivněji.

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 () uzavírají argumenty funkcí a slouží k seskupování podmínek. Čá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ávisí rozlišování velikosti písmen v názvech databází a tabulek na operačním systému a nastavení serveru. 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 SQL ukončuje příkaz středník ;. Interaktivní nástroje, jako psql, klient MySQL a shell SQLite, na tento znak běžně čekají před spuštěním příkazu. V psql lze aktuální dotaz odeslat také příkazem \g. Pokud se místo výsledku zobrazí výzva k dalšímu vstupu, zkontrolujte, zda jste příkaz ukončili.

Dotazy SELECT a spojování tabulek

Psaní dotazů často znamená psaní spojení. PostgreSQL používá INNER JOIN, LEFT JOIN a RIGHT JOIN. V příkladu níže je podmínka spojení uvedena za klíčovým slovem ON. Existují také spojení se syntaxí USING nebo NATURAL. 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á při přiřazení hodnot operátor =; jednotlivá přiřazení odděluje čá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í. CTE podporují také MySQL, SQLite a SQL Server. Při psaní zkontrolujte, zda má každá otevírací závorka odpovídající uzavírací závorku.

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. Následující příklad používá syntaxi PostgreSQL.

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

Parametry a zástupné symboly

V aplikacích závisí symboly pro parametry na databázi i použitém ovladači. Nativní připravené příkazy PostgreSQL používají $1, $2, připravené příkazy MySQL a dotazy SQLite mohou používat ? a parametry SQL Serveru mají názvy jako @p1. Ovladač však může vyžadovat jiný zápis, například %s v Psycopg. Ověřte si správný zápis v jeho dokumentaci; při psaní těchto malých symbolů snadno uděláte překlep.

-- 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. PostgreSQL převádí identifikátory bez dvojitých uvozovek na malá písmena; v jiných systémech se pravidla liší. 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 umožňuje procvičit syntaxi jedné z nejpoužívanějších moderních databází.

Další text
Další lekce
Úkol Zpět k testu
sql
Graf Skrýt