Podzielić polecenia SQL na grupy: DDL, DML, DCL, TCL
Stosować prawidłową składnię SQL i konwencje
Tworzyć i usuwać bazy danych poleceniami SQL
📜
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.
Rok
Wydarzenie
1970
Edgar F. Codd publikuje teorię relacyjnych baz danych
1974
IBM tworzy SEQUEL (późniejszy SQL) dla systemu System R
1986
ANSI standaryzuje SQL — SQL-86
1992
SQL-92 (SQL2) — znaczące rozszerzenia standardu
1999
SQL: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
Grupa
Pełna nazwa
Polecenia
Do czego służy
DDL
Data Definition Language
CREATE, ALTER, DROP, TRUNCATE, RENAME
Definiowanie struktury bazy (tabele, indeksy, widoki)
Konwencja, nie wymóg — SQL nie jest case-sensitive
Nazwy tabel małymi literami
FROM klienci
Zalecane — niektóre systemy są case-sensitive
Średnik na końcu polecenia
SELECT 1;
Obowiązkowe w wielu klientach
Komentarz liniowy
-- to jest komentarz
Od -- 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ści
WHERE email IS NULL
Nie używaj: = NULL
Przykładowe polecenie SQL z komentarzami:
-- Wybierz imię i nazwisko klientów z WarszawySELECT
imie, -- kolumna 1
nazwisko -- kolumna 2FROMklienci-- tabela źródłowaWHERE
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 DATABASEsklepCHARACTER SET utf8mb4
COLLATE utf8mb4_polish_ci;
-- Utwórz bazę TYLKO jeśli nie istnieje (bez błędu)CREATE DATABASE IF NOT EXISTSsklepCHARACTER SET utf8mb4;
-- Wybierz bazę danych do pracyUSEsklep;
-- Wyświetl wszystkie bazy danychSHOW DATABASES;
-- Sprawdź aktualnie używaną bazęSELECT DATABASE();
-- Usuń bazę danych (OSTROŻNIE — usuwa wszystkie tabele!)DROP DATABASEsklep;
DROP DATABASE IF EXISTSsklep; -- bez błędu gdy nie istnieje-- Wyświetl polecenie tworzenia bazySHOW CREATE DATABASEsklep;
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):