Dzisiejsze statystyki

Ukończone ćwiczenia
-
Napisane znaki Napisane słowa
-
Czas ćwiczeń
-

Łączne statystyki

Ukończone ćwiczenia
-
Napisane znaki Napisane słowa
-
Czas ćwiczeń
-

Ćwiczenie pisania bezwzrokowego: Programowanie w języku SQL

Pisanie bezwzrokowe jest istotne w programowaniu. Korzystając z technik szybkiego pisania, sprawniej tworzysz kod w języku programowania SQL.

Dowiedzmy się więcej o języku SQL i pisaniu bezwzrokowym podczas programowania w języku SQL.

Programowanie w SQL i pisanie bezwzrokowe

Nauka SQL i ćwiczenie pisania na klawiaturze dobrze się uzupełniają. Zapytania SQL są pełne nawiasów, przecinków, operatorów i cudzysłowów. Małe błędy, takie jak wpisanie złego znaku cudzysłowu albo pominięcie średnika, mogą spowodować, że całe zapytanie przestanie działać. Pisząc w SQL, warto wiedzieć, które elementy składni są wspólne dla różnych baz danych, a które są specyficzne dla danego systemu. W tym artykule koncentrujemy się głównie na PostgreSQL, ale wspomnimy również o MySQL, SQLite i SQL Server tam, gdzie składnia się różni.

Co jest charakterystyczne dla składni SQL?

SQL (Structured Query Language) to język deklaratywny. Zamiast opisywać krok po kroku, jak pobrać dane, określasz, jakie dane chcesz otrzymać. Prawie każde polecenie zaczyna się od słowa kluczowego, takiego jak SELECT, INSERT czy UPDATE. Kolejność klauzul jest ustalona: SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY .... PostgreSQL i MySQL stosują tę samą kolejność, więc jeśli nauczysz się jej w jednym systemie, łatwo przeniesiesz tę umiejętność do innego.

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

Znaki specjalne, które często wpisujesz

SQL obfituje w znaki interpunkcyjne. Nawiasy okrągłe () obejmują argumenty funkcji i służą do grupowania warunków. Przecinki , oddzielają kolumny. Kropka . jest używana w nazwach schematów i tabel, np. public.users. Pojedyncze cudzysłowy '...' oznaczają literały tekstowe. PostgreSQL używa podwójnych cudzysłowów "..." dla identyfikatorów, natomiast MySQL stosuje odwrotne apostrofy `...`. W SQL Server można spotkać także nawiasy kwadratowe [...]. Ćwicząc wpisywanie tych symboli, uczysz się dokładnego pisania zapytań i ograniczasz liczbę literówek.

-- Literał tekstowy
SELECT * FROM books WHERE title = 'War and Peace';

-- Identyfikatory ze spacjami (PostgreSQL)
SELECT "Order ID", "Customer Name" FROM orders;

Wielkie i małe litery

Zgodnie z konwencją słowa kluczowe SQL zapisuje się wielkimi literami: SELECT, FROM, WHERE. Ułatwia to ich wyróżnienie w zapytaniach, ale nie jest wymagane. W PostgreSQL identyfikatory bez podwójnych cudzysłowów są automatycznie zamieniane na małe litery, więc MyTable i mytable są traktowane tak samo. W MySQL rozróżnianie wielkich i małych liter w nazwach baz danych i tabel zależy od systemu operacyjnego oraz ustawień serwera. Do ćwiczeń pisania warto używać wielkich liter dla słów kluczowych, ponieważ podkreśla to strukturę zapytania.

Średniki i zakończenia poleceń

W SQL średnik ; kończy polecenie. Narzędzia interaktywne, takie jak psql, klient MySQL i konsola SQLite, zwykle czekają na ten znak przed wykonaniem polecenia. W psql możesz też wysłać bieżące zapytanie poleceniem \g. Jeśli zamiast wyniku pojawia się zachęta do wpisania dalszego tekstu, sprawdź, czy polecenie zostało zakończone.

Zapytania SELECT i złączenia

Pisanie zapytań to często pisanie złączeń. PostgreSQL korzysta z INNER JOIN, LEFT JOIN oraz RIGHT JOIN. W poniższym przykładzie warunek złączenia występuje po słowie kluczowym ON. Istnieją też złączenia wykorzystujące USING lub NATURAL. Brak spacji albo błąd w warunku sprawi, że zapytanie nie zadziała. Ćwiczenie złączeń to dobry sposób, aby przyzwyczaić się do dokładnego wpisywania symboli takich jak = czy ..

SELECT c.id, c.name, o.amount
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id
WHERE o.amount > 100;

Funkcje i wyrażenia

PostgreSQL ma wiele wbudowanych funkcji, takich jak COUNT(), SUM() czy AVG(). Zawsze wymagają one nawiasów. Funkcje daty i czasu, np. NOW() czy DATE_TRUNC(), są charakterystyczne dla PostgreSQL. MySQL ma podobne funkcje, np. CURDATE() czy DATE_FORMAT(). Poprawne ich wpisywanie wymaga uwagi przy znakach podkreślenia, przecinkach i nawiasach.

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

INSERT, UPDATE, DELETE

Polecenia modyfikujące dane zawierają dużo znaków interpunkcyjnych. INSERT korzysta z nawiasów i przecinków do wyliczenia kolumn i wartości. UPDATE używa operatora = do przypisywania wartości, a poszczególne przypisania oddziela przecinkami. DELETE łączy słowa kluczowe z warunkami. Te konstrukcje są prawie identyczne w PostgreSQL, MySQL, SQLite i SQL Server, choć zasady cytowania mogą się różnić.

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;

Wspólne wyrażenia tabelowe (CTE)

PostgreSQL często używa wspólnych wyrażeń tabelowych (CTE - Common Table Expressions), wprowadzanych słowem kluczowym WITH. CTE wymagają wielu nawiasów i przecinków, dlatego dobrze nadają się do ćwiczeń pisania. MySQL, SQLite i SQL Server również obsługują CTE wprowadzane przez WITH. Sprawdź, czy każdemu nawiasowi otwierającemu odpowiada nawias zamykający.

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;

Funkcje okienkowe

PostgreSQL jest znany z rozbudowanych funkcji okienkowych. Typowa składnia OVER (PARTITION BY ... ORDER BY ...) wymaga precyzyjnego wpisywania nawiasów i słów kluczowych. MySQL i SQL Server również obsługują funkcje okienkowe. Poniższy przykład używa składni PostgreSQL.

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

Parametry i symbole zastępcze

W aplikacjach zapis parametrów zależy zarówno od bazy danych, jak i używanego sterownika. Przygotowane polecenia obsługiwane bezpośrednio przez PostgreSQL używają $1, $2, przygotowane polecenia MySQL i zapytania SQLite mogą używać ?, a parametry SQL Server mają nazwy takie jak @p1. Sterownik może jednak wymagać innej składni, na przykład %s w Psycopg. Sprawdź ją w jego dokumentacji, ponieważ te drobne symbole łatwo pomylić podczas pisania.

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

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

Podsumowanie

Zgodnie z konwencją słowa kluczowe SQL najczęściej wpisuje się wielkimi literami. PostgreSQL zamienia na małe litery identyfikatory bez podwójnych cudzysłowów; w innych systemach obowiązują inne zasady. PostgreSQL dodaje podwójne cudzysłowy dla identyfikatorów, symbole $n, CTE i funkcje okienkowe. MySQL używa odwrotnych apostrofów i znaku zapytania ?. SQL Server wprowadza nawiasy kwadratowe i parametry @. SQLite zachowuje prostotę, ale nadal wymaga precyzji. Ćwiczenie zapytań SQL rozwija dokładność w pisaniu znaków interpunkcyjnych, słów kluczowych i symboli. Skupienie się na PostgreSQL daje praktykę z jedną z najczęściej używanych współcześnie baz danych.

Następny tekst
Następna lekcja
Zadanie Wróć do testu
sql
Wykres Ukryj