Co to jest SQL?
Język pracy z danymi.
SQL pozwala zapytać bazę o konkretne informacje, zmieniać dane i definiować ich strukturę. Zacznijmy od pojęć, dzięki którym kolejne zapytania będą zrozumiałe.
Część bazodanowa INF.03Spis całego kursu SQL — 30 lekcji
Idź po kolei od podstaw do autorskiego zadania praktycznego. Kurs dotyczy bazodanowej części INF.03.
- Co to jest SQL? Bazy danych od podstaw
- Jak działa relacyjna baza danych?
- Relacje, klucze i diagram E/R
- Normalizacja: 1NF, 2NF, 3NF i anomalie
- Przygotowanie środowiska: XAMPP, MariaDB i phpMyAdmin
- Typy danych i NULL
- CREATE: baza, tabele i ograniczenia
- ALTER i DROP: zmiana struktury
- INSERT: dodawanie danych
- SELECT, aliasy i DISTINCT
- WHERE i logika warunków
- LIKE, IN, BETWEEN i IS NULL
- ORDER BY, LIMIT, TOP i FETCH
- Funkcje skalarne tekstowe
- Funkcje skalarne liczbowe
- Daty, CAST, CASE i COALESCE
- Funkcje agregujące: COUNT, SUM, AVG, MIN i MAX
- GROUP BY i HAVING: podsumowania w grupach
- INNER JOIN: łączenie danych z tabel
- LEFT JOIN, SELF JOIN, CROSS JOIN i relacje N:M
- Podzapytania, EXISTS i pułapka NOT IN
- UNION i widoki: łączenie i ponowne użycie wyników
- UPDATE i DELETE: bezpieczna zmiana danych
- Transakcje i podstawy wydajności
- Użytkownicy, uprawnienia i bezpieczeństwo SQL
- Import i eksport SQL oraz CSV
- Kopie zapasowe, odtwarzanie i kontrola spójności
- PHP i baza danych: mysqli oraz parametry zapytań
- Formularze i raporty oparte na bazie danych
- Zadanie końcowe SQL: od importu do raportu i odtworzenia
Pobierz syntetyczne dane SQL i CSV
Edytor wykonuje zapytania w SQLite w przeglądarce. Tryby MySQL i SQL Server to ograniczona emulacja składni; Oracle i Access są omawiane porównawczo. Administrację, PHP, import i kopie wykonuj w osobnym środowisku zgodnie z instrukcjami lekcji.
SQL to skrót od Structured Query Language, czyli strukturalnego języka zapytań. Najczęściej wykorzystujemy go do pracy z relacyjnymi bazami danych: opisujemy, jakie dane chcemy otrzymać lub zmienić, a system zarządzania bazą danych dobiera sposób wykonania operacji.
To język w dużej mierze deklaratywny. Pisząc „pokaż produkty tańsze niż 100 zł”, wskazujesz oczekiwany rezultat. Zwykle nie opisujesz pętli przechodzącej kolejno przez każdy produkt. Nie oznacza to jednak, że każde zapytanie jest równie wydajne — do indeksów i planu wykonania wrócimy później.
Baza danych, SZBD i SQL — trzy różne pojęcia
Baza danych
Uporządkowany zbiór danych oraz struktur opisujących ich organizację. Przykład: produkty, klienci, zamówienia i powiązania między nimi w sklepie.
SZBD / DBMS
System zarządzania bazą danych: oprogramowanie przechowujące dane, wykonujące zapytania i kontrolujące dostęp oraz spójność. Przykłady: MySQL, MariaDB, SQL Server i Oracle Database.
SQL
Język poleceń przekazywanych do SZBD. SQL nie jest nazwą jednego programu i nie jest samą bazą danych.
Narzędzie klienckie
Interfejs, w którym wpisujesz polecenia lub oglądasz tabele: np. phpMyAdmin albo SQL Server Management Studio. phpMyAdmin nie jest silnikiem bazy.
Jak wygląda relacyjna baza danych?
Dane zapisujemy w tabelach. Kolumna, nazywana też atrybutem lub polem, opisuje jedną cechę, np. nazwę produktu. Wiersz, czyli rekord, reprezentuje konkretny obiekt. Typ kolumny określa, jakie wartości mają być w niej przechowywane — np. liczby całkowite, tekst albo daty.
| id | nazwa | cena |
|---|---|---|
| 1 | Klawiatura | 120,00 |
| 2 | Mysz | 60,00 |
| 3 | Kabel | 25,00 |
Klucz główny (PRIMARY KEY) identyfikuje każdy rekord: jest unikalny i nie przyjmuje NULL. Może składać się z jednej lub kilku kolumn. W przykładzie jest nim id. Klucz obcy (FOREIGN KEY) wskazuje powiązany rekord, np. klient_id w zamówieniu odnosi się do klucza klienta. Dzięki temu nie trzeba kopiować jego pełnych danych do każdego zamówienia.
NULL oznacza brak znanej lub właściwej wartości. Nie jest liczbą zero ani pustym tekstem. Inaczej interpretujemy „cena wynosi 0”, a inaczej „ceny jeszcze nie znamy”. Szczegóły porównań z NULL pojawią się w osobnej lekcji.
Pierwsze zapytanie — przeczytaj je jak zdanie
SELECT nazwa, cena
FROM produkty
WHERE cena < 100
ORDER BY cena, nazwa;
„Wybierz nazwę i cenę z tabeli produktów, pozostaw produkty tańsze niż 100 i uporządkuj wynik według ceny, a przy tej samej cenie według nazwy”.
SELECTwskazuje kolumny wyniku.FROMwskazuje źródło danych.WHEREfiltruje wiersze.ORDER BYokreśla kolejność. Bez niego silnik nie gwarantuje kolejności wyniku.
Dla przedstawionych danych oczekujemy dwóch wierszy: Kabel — 25,00, następnie Mysz — 60,00. To objaśnienie wyniku przykładu, a nie zrzut z wykonania w konkretnym serwerze. Polecenie SELECT odczytuje dane; nie zmienia cen ani nie usuwa produktów.
Do czego służą poszczególne grupy poleceń?
| Cel | Polecenia | Co robią? |
|---|---|---|
| Odczyt | SELECT | Wyszukuje i oblicza wyniki; często opisywany jako DQL. |
| Zmiana danych — DML | INSERT, UPDATE, DELETE | Dodają, zmieniają i usuwają rekordy. |
| Struktura — DDL | CREATE, ALTER, DROP | Tworzą, zmieniają i usuwają obiekty, np. tabele. |
| Uprawnienia — DCL | GRANT, REVOKE | Nadają i odbierają uprawnienia w obsługujących je SZBD. |
| Transakcje — TCL | COMMIT, ROLLBACK | Zatwierdzają lub wycofują transakcję, zgodnie z regułami silnika. |
Te skróty porządkują naukę, ale nie tworzą jednej obowiązkowej klasyfikacji. Niektóre dokumentacje zaliczają SELECT do DML. Składnia rozpoczęcia transakcji i możliwość cofnięcia DDL zależą od systemu. Nie zakładaj, że każde DROP da się cofnąć.
MySQL, MariaDB, SQL Server, Oracle i Access
Standard SQL jest wspólną podstawą, lecz producenci rozwijają własne odmiany, czyli dialekty. Dlatego w kursie będziemy porównywać tę samą intencję zapytania, zamiast mechanicznie zamieniać pojedyncze słowa.
MySQL / MariaDB
Dwa odrębne, spokrewnione SZBD działające jako serwery. Wiele podstawowych zapytań jest zgodnych, ale wersje, funkcje i zachowania trzeba sprawdzać. XAMPP często dostarcza MariaDB, choć panel może używać nazwy „MySQL”.
Microsoft SQL Server
Serwer baz danych z dialektem Transact-SQL (T-SQL). Przykładowe różnice to TOP, typy dat i właściwość IDENTITY.
Oracle Database
Serwer baz danych z własnym dialektem SQL. Istotne są m.in. sekwencje, funkcje dat oraz szczególne traktowanie pustego tekstu w typach znakowych.
Microsoft Access
Aplikacja do pracy z bazami, formularzami i raportami. Współczesne pliki .accdb korzystają z silnika ACE. Access może też być klientem bazy serwerowej, np. przez ODBC.
Serwerowa czy plikowa? Lokalna czy zdalna?
To dwa różne podziały. W modelu serwerowym osobny proces SZBD obsługuje połączenia i współbieżne żądania klientów. Ten serwer może działać na Twoim laptopie albo na komputerze w sieci. Lokalny MySQL nadal jest serwerem.
W bazie plikowej silnik może pracować wewnątrz aplikacji korzystającej z pliku. Przykładami są SQLite oraz plikowa baza Access. Access może udostępniać plik wielu użytkownikom, ale współdzielenie pliku nie zmienia ACE w taki sam serwer jak SQL Server. Dobór rozwiązania zależy m.in. od liczby użytkowników, współbieżności, administracji i sposobu wdrożenia.
Czego trzeba się nauczyć do części bazodanowej INF.03?
Samo SELECT nie wystarcza. Zakres obejmuje projektowanie i normalizację modelu, relacje i integralność, tworzenie oraz zmianę struktur, odczyt i modyfikację danych, funkcje, złączenia i podzapytania, a także administrację SZBD, użytkowników, uprawnienia, import, eksport, kopie i ich odtwarzanie. Potrzebne są również formularze, raporty oraz współpraca aplikacji z bazą.
SQL nie stanowi całej kwalifikacji INF.03. Trzeba przygotować się także do tworzenia i administrowania stronami oraz aplikacjami internetowymi, m.in. HTML, CSS, JavaScript i PHP. Porównania T-SQL, Oracle i Access pomagają zrozumieć różnice; nie oznaczają, że wszystkie ich rozszerzenia są osobnym wymaganiem egzaminacyjnym.
Plan kursu — od podstaw do zadań egzaminacyjnych
- Co to jest SQL? — ta część.
- Jak działa relacyjna baza danych?
- Relacje, klucze i diagramy E/R.
- Normalizacja: 1NF, 2NF, 3NF i anomalie.
- Przygotowanie środowiska: SZBD, XAMPP, MariaDB i phpMyAdmin.
- Typy danych i NULL.
- CREATE: baza, tabele, ograniczenia i auto-ID.
- ALTER i DROP.
- INSERT.
- SELECT, aliasy i DISTINCT.
- WHERE i logika.
- LIKE, IN, BETWEEN i IS NULL.
- ORDER BY i ograniczanie wyników.
- Funkcje skalarne tekstowe.
- Funkcje skalarne liczbowe.
- Funkcje dat, CAST, CASE i COALESCE.
- Funkcje agregujące.
- GROUP BY i HAVING.
- INNER JOIN.
- Pozostałe złączenia, SELF/CROSS i relacje N:M.
- Podzapytania, EXISTS, NOT IN i NULL.
- UNION i widoki.
- UPDATE i DELETE oraz porównanie DELETE/TRUNCATE/DROP.
- Transakcje i podstawy wydajności.
- Użytkownicy, uprawnienia i bezpieczeństwo.
- Import i eksport SQL/CSV.
- Kopie, próbne odtworzenie i diagnostyka.
- PHP i baza danych: bezpieczna parametryzacja.
- Formularze i raporty.
- Autorskie zadanie egzaminacyjne i lista kontrolna.
Odnośniki do gotowych części znajdziesz w kategorii SQL. Wpisy są publikowane kolejno.
Sprawdź rozumienie
- Czym różnią się SQL i MySQL?
- Czy baza na Twoim komputerze może być bazą serwerową?
- Czy SELECT zmienia dane w tabeli?
- Dlaczego identyfikator klienta jest zwykle lepszym kluczem niż samo imię?
- Czy NULL, pusty tekst i zero oznaczają to samo?
Odpowiedzi z wyjaśnieniem
- SQL jest językiem; MySQL jest SZBD, który wykonuje polecenia tego języka we własnym dialekcie.
- Tak. Serwer MySQL, MariaDB czy SQL Server może działać lokalnie i przyjmować połączenia z tego samego komputera.
- Zwykłe SELECT służy do odczytu. Może obliczać nowy wynik, ale nie aktualizuje przez to zapisanych wartości.
- Imiona mogą się powtarzać i zmieniać. Klucz powinien jednoznacznie oraz stabilnie identyfikować rekord; często wybiera się techniczny identyfikator.
- Nie. NULL oznacza brak wartości, pusty tekst jest wartością tekstową, a zero jest liczbą. Oracle traktuje pusty ciąg znakowy jak NULL — to ważny wyjątek dialektu.
Źródła i zakres materiału
- ORE — podstawa programowa: technik informatyk, część INF.03.4, strony PDF 23–24.
- CKE — informator dla zawodu technik informatyk, Formuła 2019, aktualizacja 25.08.2022.
- MySQL 8.4 — SELECT.
- Microsoft — SELECT (Transact-SQL).
Przykłady są autorskie i używają danych dydaktycznych. Szczegóły zależne od wersji silnika będą wskazywane przy danym zagadnieniu.

