SQL: jak działa i podstawy zapytań do baz danych w 15 minut

SQL – co to jest, jak działa i podstawy zapytań do baz danych

SQL (Structured Query Language) to język zapytań do relacyjnych baz danych. Pozwala tworzyć, czytać, aktualizować i usuwać dane (CRUD) za pomocą prostych komend, które wyglądają prawie jak angielski. Każda strona na WordPressie, każdy sklep i każda aplikacja webowa rozmawiają z bazą po SQL. Wchodzisz na artykuł, WordPress posyła zapytanie SELECT * FROM wp_posts WHERE post_name = 'artykul', baza zwraca treść, motyw ją wyświetla. SQL działa z MySQL, MariaDB, PostgreSQL, SQLite i Microsoft SQL Server.

Jak SQL w ogóle działa

Relacyjna baza trzyma dane w tabelach, jak arkusze w Excelu. Każda tabela ma kolumny (pola, np. id, name, email) i wiersze (rekordy, czyli pojedyncze osoby albo produkty). SQL to język, którym pytasz bazę o dane (SELECT), dorzucasz nowe (INSERT), zmieniasz istniejące (UPDATE), usuwasz (DELETE) i tworzysz nowe tabele (CREATE TABLE).

WordPress jest fajnym przykładem. Baza WP składa się z tabel: wp_posts (artykuły, strony), wp_users (użytkownicy), wp_options (ustawienia), wp_postmeta (metadane). Każda akcja w panelu (dodanie posta, zmiana tytułu, komentarz) to po prostu zapytanie SQL do tych tabel.

Podstawowe komendy

SELECT, czyli pobieranie danych.

-- Pobierz wszystkie posty
SELECT * FROM wp_posts;

-- Pobierz tytuły opublikowanych postów
SELECT post_title, post_date
FROM wp_posts
WHERE post_status = 'publish'
ORDER BY post_date DESC
LIMIT 10;

SELECT to co pobrać (kolumny albo * dla wszystkich). FROM to z jakiej tabeli. WHERE filtruje. ORDER BY sortuje. LIMIT ogranicza liczbę wyników.

INSERT, czyli dodawanie.

INSERT INTO wp_users (user_login, user_email, user_pass)
VALUES ('jan', 'jan@firma.pl', 'hash_hasla');

UPDATE, czyli aktualizacja.

UPDATE wp_posts
SET post_title = 'Nowy tytuł'
WHERE ID = 42;

Najważniejsza zasada SQL-a w jednym zdaniu: zawsze daj WHERE przy UPDATE i DELETE. Bez WHERE zmieniasz albo usuwasz wszystkie wiersze w tabeli. Sam tak skasowałem kiedyś całą tabelę produktów u klienta. Raz wystarczy, żeby nauczyć się tej zasady na zawsze.

DELETE, czyli usuwanie.

DELETE FROM wp_posts WHERE ID = 42;

JOIN, czyli łączenie tabel.

-- Pobierz posty razem z autorami
SELECT p.post_title, u.user_login
FROM wp_posts p
JOIN wp_users u ON p.post_author = u.ID
WHERE p.post_status = 'publish';

JOIN zszywa dwa zestawy danych po wspólnym polu (tutaj post_author = user ID). To moc baz relacyjnych: dane są powiązane referencjami, a nie kopiowane.

SQL a WordPress: praktyczne kawałki

Masowa zmiana URL-i. Migrujesz domenę ze stara.pl na nowa.pl: UPDATE wp_posts SET post_content = REPLACE(post_content, 'stara.pl', 'nowa.pl');. Zamienia wszystkie wystąpienia w treści postów. To samo robisz na wp_options i wp_postmeta.

Najcięższe tabele. Baza rośnie i nie wiesz, co ją obciąża? SELECT table_name, ROUND(data_length/1024/1024, 2) AS MB FROM information_schema.tables WHERE table_schema = 'wordpress' ORDER BY data_length DESC;. Pokaże ci ranking po rozmiarze.

Sprzątanie rewizji postów. WordPress zapisuje każdą wersję posta. Po latach wp_posts potrafi przekroczyć rozmiar samej treści. Usuń: DELETE FROM wp_posts WHERE post_type = 'revision';, potem OPTIMIZE TABLE wp_posts;.

Narzędzia do pracy z SQL

phpMyAdmin. Webowy interfejs do MySQL i MariaDB, dostępny na większości hostingów (cPanel, phpMyAdmin). Piszesz zapytania, przeglądasz tabele, eksportujesz i importujesz bazy.

MySQL CLI. Terminal, mysql -u root -p, piszesz SQL bezpośrednio. Na VPS-ie najszybszy sposób.

DBeaver. Darmowy desktopowy klient (MySQL, PostgreSQL, SQLite, Oracle). GUI z edytorem SQL, diagramami ER, eksportem danych. Sam tego używam, kiedy pracuję z większą bazą.

Adminer. Lżejsza alternatywa dla phpMyAdmin. Jeden plik PHP, około 500 KB, szybszy interfejs.

Bezpieczeństwo: SQL Injection

SQL Injection to atak, w którym ktoś wstrzykuje złośliwy SQL przez formularz na stronie. W pole loginu wpisuje na przykład ' OR 1=1 --. Jeśli aplikacja nie sanityzuje inputu, to trafia prosto do zapytania i atakujący wchodzi do bazy. Obrona: prepared statements, czyli parametryzowane zapytania, gdzie dane od użytkownika nigdy nie są sklejane bezpośrednio z SQL-em. W WordPressie pomaga $wpdb->prepare(), który robi to automatycznie.

Najczęściej zadawane pytania

Czy SQL jest trudny

Podstawy (SELECT, INSERT, UPDATE, DELETE, WHERE, JOIN): tydzień, dwa nauki. SQL jest jednym z najłatwiejszych „języków”, bo składnia idzie blisko angielskiego. Zaawansowany SQL (subqueries, window functions, CTE, optymalizacja zapytań): miesiące. Do zarządzania WordPressem i podstawowej administracji bazą podstawy w zupełności wystarczą.

Czy muszę znać SQL, żeby używać WordPressa

Do codziennego klikania w panelu: nie. Wtyczki robią wszystko. Znajomość SQL przydaje się, kiedy chcesz naprawiać problemy (uszkodzona baza, masowa zmiana danych, optymalizacja), migrować strony, czyścić bazę z rewizji albo spamu, debugować wolne zapytania. Minimum, jakie warto mieć: SELECT, UPDATE i DELETE z phpMyAdmina.

SQL vs NoSQL

SQL (relacyjne): MySQL, PostgreSQL, MariaDB. Dane w tabelach z relacjami, sztywny schemat, ACID (spójność transakcji). Pasują do strukturalnych danych: użytkownicy, zamówienia, produkty. NoSQL: MongoDB (dokumenty JSON), Redis (key-value), Elasticsearch (wyszukiwanie). Pasuje do nieustrukturyzowanych danych, cache, real-time, full-text search. WordPress i większość typowych stron: SQL. Wyszukiwarka, sesje, cache: NoSQL jako dodatek do SQL-a, nie zamiast niego.

Picture of Tomasz Zieliński
Tomasz Zieliński

Tomasz zajmuje się tematyką SEO, sztucznej inteligencji i automatyzacji pracy w marketingu internetowym. W swoich artykułach analizuje zmiany w algorytmach wyszukiwarek, rozwój narzędzi AI oraz nowe sposoby tworzenia i optymalizacji treści. Interesuje go przede wszystkim to, jak technologia wpływa na codzienną pracę specjalistów SEO, marketerów i twórców internetowych.

Facebook
Twitter
LinkedIn
Pinterest

Najnowsze Wpisy

Śledź nas