🎯 Cele lekcji

📜

1. SQL — historia i standard

SQL (Structured Query Language) — ustandaryzowany język do zarządzania relacyjnymi bazami danych. Służy do definiowania struktury danych, manipulowania danymi i kontroli dostępu.
RokWydarzenie
1970Edgar F. Codd publikuje teorię relacyjnych baz danych
1974IBM tworzy SEQUEL (późniejszy SQL) dla systemu System R
1986ANSI standaryzuje SQL — SQL-86
1992SQL-92 (SQL2) — znaczące rozszerzenia standardu
1999SQL:1999 — dodano rekurencję, obiekty
2003+SQL:2003, SQL:2008, SQL:2011, SQL:2016 — JSON, okna, itp.
Każdy SZBD implementuje SQL nieco inaczej. MySQL, PostgreSQL, Oracle i MS SQL mają własne rozszerzenia. Na kursie skupiamy się na MySQL/MariaDB z zachowaniem zgodności ze standardem.
📋

2. Podział poleceń SQL

GrupaPełna nazwaPoleceniaDo czego służy
DDL Data Definition Language CREATE, ALTER, DROP, TRUNCATE, RENAME Definiowanie struktury bazy (tabele, indeksy, widoki)
DML Data Manipulation Language INSERT, SELECT, UPDATE, DELETE Manipulowanie danymi (dodawanie, odczyt, zmiana, usuwanie)
DCL Data Control Language GRANT, REVOKE Zarządzanie uprawnieniami użytkowników
TCL Transaction Control Language COMMIT, ROLLBACK, SAVEPOINT, START TRANSACTION Zarządzanie transakcjami
Mnemonic: Definujesz strukturę (DDL) → Manipulujesz danymi (DML) → Controling dostęp (DCL) → Transakcje (TCL)
✍️

3. Składnia SQL — konwencje i zasady

ZasadaPrzykładUwaga
Słowa kluczowe WIELKIMI literamiSELECT * FROM tabelaKonwencja, nie wymóg — SQL nie jest case-sensitive
Nazwy tabel małymi literamiFROM klienciZalecane — niektóre systemy są case-sensitive
Średnik na końcu poleceniaSELECT 1;Obowiązkowe w wielu klientach
Komentarz liniowy-- to jest komentarzOd -- do końca linii
Komentarz blokowy/* komentarz */Może obejmować wiele linii
Ciągi znaków'Jan Kowalski'Apostrofy (nie cudzysłowy)
NULL to brak wartościWHERE email IS NULLNie używaj: = NULL

Przykładowe polecenie SQL z komentarzami:

-- Wybierz imię i nazwisko klientów z Warszawy
SELECT
    imie,          -- kolumna 1
    nazwisko       -- kolumna 2
FROM
    klienci        -- tabela źródłowa
WHERE
    miasto = 'Warszawa'  /* filtr */
ORDER BY
    nazwisko ASC;    -- sortowanie rosnące
🗄️

4. Tworzenie i zarządzanie bazami danych

-- Utwórz nową bazę danych (z kodowaniem polskich znaków)
CREATE DATABASE sklep
    CHARACTER SET utf8mb4
    COLLATE utf8mb4_polish_ci;

-- Utwórz bazę TYLKO jeśli nie istnieje (bez błędu)
CREATE DATABASE IF NOT EXISTS sklep
    CHARACTER SET utf8mb4;

-- Wybierz bazę danych do pracy
USE sklep;

-- Wyświetl wszystkie bazy danych
SHOW DATABASES;

-- Sprawdź aktualnie używaną bazę
SELECT DATABASE();

-- Usuń bazę danych (OSTROŻNIE — usuwa wszystkie tabele!)
DROP DATABASE sklep;
DROP DATABASE IF EXISTS sklep;  -- bez błędu gdy nie istnieje

-- Wyświetl polecenie tworzenia bazy
SHOW CREATE DATABASE sklep;
DROP DATABASE usuwa bazę danych wraz ze WSZYSTKIMI tabelami i danymi — bez możliwości cofnięcia! Zawsze upewnij się, że masz kopię zapasową.
Collation — zestaw zasad sortowania i porównywania ciągów znaków.
utf8mb4_polish_ci — polskie reguły, case-insensitive (wielkość liter nieistotna)
utf8mb4_bin — binarne (dokładne, case-sensitive)
✏️

Zadania interaktywne

Zadanie 1Przyporządkuj polecenie do grupy DDL/DML/DCL/TCL
INSERT INTO klienci VALUES (...)
CREATE TABLE produkty (...)
GRANT SELECT ON baza.* TO 'user'@'localhost'
ROLLBACK;
DROP TABLE zamowienia
UPDATE klienci SET miasto = 'Warszawa'
Zadanie 2Quiz: polecenie tworzące bazę danych

Które polecenie SQL tworzy nową bazę danych?

  • NEW DATABASE biblioteka;
  • MAKE DATABASE biblioteka;
  • CREATE DATABASE biblioteka;
  • ADD DATABASE biblioteka;
Zadanie 3Napisz polecenie CREATE DATABASE

Napisz polecenie SQL tworzące bazę danych o nazwie biblioteka z kodowaniem UTF8MB4 i porównaniem polskim (case-insensitive):

📌 Zapamiętaj