Oto pełny spis najważniejszych funkcji, poleceń i technik SQL, które zostały omówione w trakcie naszego kursu. Poniższe zestawienie może posłużyć jako szybki przewodnik i odniesienie do pracy z bazami danych, zarówno dla początkujących, jak i zaawansowanych użytkowników SQL.
Możesz przeglądać tematy po kolei przesuwając stronę w dół lub przejść do odpowiedniego działu klikając na temat:
– Wprowadzenie do SQL
– Operacje na danych (INSERT, UPDATE, DELETE)
– Typy danych
– Klauzule i operatory
– Agregacje i funkcje grupujące
– Łączenie tabel (JOIN)
– Procedury składowane i funkcje
– Wyzwalacze (Triggers)
– Indeksy
– Partycjonowanie danych
– Widoki (Views)
– Replikacja danych
– Bezpieczeństwo baz danych
– Szyfrowanie danych
– Audytowanie i logowanie
– Narzędzia do pracy z Big Data
– Funkcje analityczne
– Funkcje okienkowe
Wprowadzenie do SQL
SELECT | Służy do pobierania danych z bazy.
SELECT kolumna1, kolumna2 FROM tabela;
FROM | Określa tabelę, z której pobierane są dane.
SELECT kolumna1 FROM tabela;
WHERE | Używane do filtrowania wyników na podstawie warunków.
SELECT kolumna1 FROM tabela WHERE warunek;
Operacje na danych (INSERT, UPDATE, DELETE)
INSERT INTO | Dodaje nowe dane do tabeli.
INSERT INTO tabela (kolumna1, kolumna2) VALUES (wartosc1, wartosc2);
UPDATE | Aktualizuje istniejące dane w tabeli.
UPDATE tabela SET kolumna1 = nowa_wartosc WHERE warunek;
DELETE FROM | Usuwa dane z tabeli.
DELETE FROM tabela WHERE warunek;
Typy danych
- INT | Liczby całkowite.
- VARCHAR(n) | Zmienna długość znaków do n znaków.
- DECIMAL(p, s) | Liczby dziesiętne o precyzji p i skalowalności s.
- DATE | Data.
- TIMESTAMP | Data i czas.
Klauzule i operatory
AND | Łączy dwa lub więcej warunków.
SELECT * FROM tabela WHERE warunek1 AND warunek2;
OR | Sprawdza, czy co najmniej jeden z warunków jest prawdziwy.
SELECT * FROM tabela WHERE warunek1 OR warunek2;
NOT | Neguje warunek.
SELECT * FROM tabela WHERE NOT warunek;
LIKE | Używane do wyszukiwania wzorców w ciągach znaków.
SELECT * FROM tabela WHERE kolumna LIKE 'wartosc%';
BETWEEN | Sprawdza, czy wartość jest w danym zakresie.
SELECT * FROM tabela WHERE kolumna BETWEEN wartosc1 AND wartosc2;
IN | Sprawdza, czy wartość znajduje się w liście wartości.
SELECT * FROM tabela WHERE kolumna IN (wartosc1, wartosc2);
Agregacje i funkcje grupujące
COUNT() | Liczy liczbę wierszy.
SELECT COUNT(*) FROM tabela;
SUM() | Sumuje wartości.
SELECT SUM(kolumna) FROM tabela;
AVG() | Oblicza średnią wartości.
SELECT AVG(kolumna) FROM tabela;
MIN() | Zwraca najmniejszą wartość.
SELECT MIN(kolumna) FROM tabela;
MAX() | Zwraca największą wartość.
SELECT MAX(kolumna) FROM tabela;
GROUP BY | Grupuje wiersze na podstawie określonych kolumn.
SELECT kolumna, COUNT(*) FROM tabela GROUP BY kolumna;
HAVING | Filtruje wyniki grupowania.
SELECT kolumna, SUM(kolumna2) FROM tabela GROUP BY kolumna HAVING SUM(kolumna2) > 100;
Łączenie tabel (JOIN)
INNER JOIN | Zwraca tylko dopasowane wiersze z obu tabel.
SELECT kolumna FROM tabela1 INNER JOIN tabela2 ON tabela1.kolumna = tabela2.kolumna;
LEFT JOIN | Zwraca wszystkie wiersze z lewej tabeli oraz dopasowane wiersze z prawej tabeli.
SELECT kolumna FROM tabela1 LEFT JOIN tabela2 ON tabela1.kolumna = tabela2.kolumna;
RIGHT JOIN | Zwraca wszystkie wiersze z prawej tabeli oraz dopasowane wiersze z lewej tabeli.
SELECT kolumna FROM tabela1 RIGHT JOIN tabela2 ON tabela1.kolumna = tabela2.kolumna;
FULL JOIN | Zwraca wszystkie wiersze z obu tabel, niezależnie od dopasowania.
SELECT kolumna FROM tabela1 FULL JOIN tabela2 ON tabela1.kolumna = tabela2.kolumna;
Procedury składowane i funkcje
CREATE PROCEDURE | Tworzenie procedury składowanej.
CREATE PROCEDURE nazwa_procedury (parametry) BEGIN -- instrukcje SQL END;
CALL | Wywołanie procedury.
CALL nazwa_procedury(parametry);
CREATE FUNCTION | Tworzenie funkcji, która zwraca wartość.
CREATE FUNCTION nazwa_funkcji (parametry) RETURNS typ_wartosci BEGIN RETURN wartość; END;
RETURN | Zwracanie wartości w funkcji.
RETURN wartość;
Wyzwalacze (Triggers)
CREATE TRIGGER | Tworzenie wyzwalacza uruchamianego przed lub po operacji na danych.
CREATE TRIGGER nazwa_wyzwalacza BEFORE/AFTER INSERT/UPDATE/DELETE ON tabela FOR EACH ROW BEGIN -- akcje wyzwalacza END;
OLD | Odnosi się do starych wartości wiersza podczas aktualizacji lub usuwania.
NEW | Odnosi się do nowych wartości wiersza podczas wstawiania lub aktualizacji.
Indeksy
CREATE INDEX | Tworzenie indeksu na kolumnie.
CREATE INDEX idx_nazwa ON tabela (kolumna);
CREATE UNIQUE INDEX | Tworzenie indeksu unikalnego.
CREATE UNIQUE INDEX idx_unikalny ON tabela (kolumna);
CREATE FULLTEXT INDEX | Tworzenie pełnotekstowego indeksu na kolumnie.
CREATE FULLTEXT INDEX idx_fulltext ON tabela (kolumna);
DROP INDEX | Usuwanie indeksu.
DROP INDEX idx_nazwa ON tabela;
Partycjonowanie danych
PARTITION BY RANGE | Partycjonowanie tabeli według zakresów.
CREATE TABLE tabela ( kolumna INT ) PARTITION BY RANGE (kolumna) ( PARTITION p1 VALUES LESS THAN (1000), PARTITION p2 VALUES LESS THAN (2000) );
PARTITION BY LIST | Partycjonowanie według listy wartości.
CREATE TABLE tabela ( kolumna VARCHAR(50) ) PARTITION BY LIST (kolumna) ( PARTITION p1 VALUES IN ('A', 'B', 'C'), PARTITION p2 VALUES IN ('D', 'E', 'F') );
Widoki (Views)
CREATE VIEW | Tworzenie widoku na podstawie zapytania SQL.
CREATE VIEW widok_nazwa AS SELECT kolumna1, kolumna2 FROM tabela WHERE warunek;
DROP VIEW | Usuwanie widoku.
DROP VIEW widok_nazwa;
CREATE MATERIALIZED VIEW | Tworzenie widoku materializowanego (gromadzi dane fizycznie).
CREATE MATERIALIZED VIEW WidokMaterializowany AS SELECT Klient_ID, SUM(Kwota) FROM Zamowienia GROUP BY Klient_ID;
Replikacja danych
Master-Slave Replication (Replikacja jednokierunkowa) | W standardowej replikacji, dane są kopiowane z serwera głównego (master) na serwery podrzędne (slave). Serwer podrzędny może odczytywać dane, ale nie może ich modyfikować. Replikacja jednokierunkowa jest idealna do obciążenia operacji odczytu.
Przykład: Konfiguracja replikacji master-slave w MySQL.
CHANGE MASTER TO MASTER_HOST='serwer_master', MASTER_USER='uzytkownik_replikacji', MASTER_PASSWORD='haslo', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; START SLAVE;
Master-Master Replication (Replikacja wielokierunkowa) | Umożliwia modyfikowanie danych na obu serwerach, które synchronizują się ze sobą. Wymaga dodatkowego zarządzania konfliktami.
CREATE REPLICATION SLAVE | Polecenie w MySQL używane do skonfigurowania replikacji.
Bezpieczeństwo baz danych
GRANT | Nadawanie uprawnień użytkownikowi do operacji na bazie danych.
GRANT SELECT, INSERT ON tabela TO 'uzytkownik'@'localhost';
REVOKE | Cofnięcie nadanych uprawnień użytkownikowi.
REVOKE SELECT ON tabela FROM 'uzytkownik'@'localhost';
REQUIRE SSL | Wymuszanie szyfrowanego połączenia SSL dla użytkownika.
GRANT ALL PRIVILEGES ON BazaDanych.* TO 'uzytkownik'@'localhost' REQUIRE SSL;
CREATE USER | Tworzenie nowego użytkownika.
CREATE USER 'uzytkownik'@'localhost' IDENTIFIED BY 'haslo';
DROP USER | Usuwanie użytkownika.
DROP USER 'uzytkownik'@'localhost';
SET PASSWORD | Zmiana hasła użytkownika.
SET PASSWORD FOR 'uzytkownik'@'localhost' = PASSWORD('nowe_haslo');
Szyfrowanie danych
ALTER TABLE ENCRYPTION | Szyfrowanie danych w tabeli.
ALTER TABLE tabela ENCRYPTION='Y';
SSL/TLS for MySQL | Konfiguracja MySQL do obsługi połączeń szyfrowanych SSL/TLS.
mysqld --ssl-ca=ca-cert.pem --ssl-cert=server-cert.pem --ssl-key=server-key.pem
Audytowanie i logowanie
General Log | Włączenie ogólnego logowania zapytań SQL.
SET GLOBAL general_log = 'ON';
Slow Query Log | Logowanie zapytań, które przekraczają określony czas wykonania.
SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 2; -- logowanie zapytań trwających dłużej niż 2 sekundy
CREATE TRIGGER | Rejestrowanie zmian za pomocą wyzwalaczy (np. audytowanie usuniętych rekordów).
CREATE TRIGGER AudytUsuniec AFTER DELETE ON Klienci FOR EACH ROW BEGIN INSERT INTO Audyt (Klient_ID, DataUsuniecia) VALUES (OLD.Klient_ID, NOW()); END;
Narzędzia do pracy z Big Data
Apache Hadoop (HDFS) | Przechowywanie i przetwarzanie dużych zbiorów danych w systemie plików rozproszonych.
Apache Spark SQL | Szybkie przetwarzanie dużych ilości danych z możliwością użycia zapytań SQL.
SELECT Klient_ID, SUM(Kwota) AS SumaZamowien FROM Zamowienia WHERE Data >= '2023-01-01' GROUP BY Klient_ID;
Presto (Trino) | Rozproszony silnik SQL do pracy z dużymi zbiorami danych, takimi jak HDFS czy Amazon S3.
SELECT Klient_ID, SUM(Kwota) FROM s3://bucket-nazwa/zamowienia WHERE Data >= '2023-01-01' GROUP BY Klient_ID;
Hive | Zapytania SQL nad danymi w systemie HDFS.
SELECT Produkt, SUM(Sprzedaz) FROM HistoriaSprzedazy WHERE Data >= '2022-01-01' GROUP BY Produkt;
Funkcje analityczne
ROW_NUMBER() | Nadanie numeru wierszom w obrębie określonego zestawu wyników.sql
SELECT Klient_ID, ROW_NUMBER() OVER (ORDER BY DataZamowienia) AS Pozycja FROM Zamowienia;
RANK() | Nadanie rankingu wierszom na podstawie wartości kolumn.
SELECT Klient_ID, RANK() OVER (ORDER BY Kwota DESC) AS Ranking FROM Zamowienia;
LEAD() / LAG() | Dostęp do poprzednich lub następnych wierszy w obrębie zestawu wyników.
SELECT Klient_ID, Kwota, LAG(Kwota, 1) OVER (ORDER BY DataZamowienia) AS PoprzedniaKwota FROM Zamowienia;
Funkcje okienkowe
OVER() | Funkcja pozwalająca na definiowanie okna do operacji agregujących.
SELECT Klient_ID, SUM(Kwota) OVER (PARTITION BY Klient_ID) AS SumaZamowien FROM Zamowienia;
PARTITION BY | Definiuje sposób podziału danych na “okna”, na których wykonywane są operacje.
SELECT Klient_ID, SUM(Kwota) OVER (PARTITION BY Klient_ID) FROM Zamowienia;
To podsumowanie kursu SQL obejmuje wszystkie kluczowe polecenia i techniki, które były omawiane w trakcie kursu. Każda z tych funkcji i poleceń ma szerokie zastosowanie w codziennej pracy z bazami danych i umożliwia wydajne zarządzanie danymi oraz optymalizację zapytań SQL.
Spis Treści - darmowy kurs SQL
Wprowadzenie: Czym jest baza danych?
Lekcja 1: Instalacja dedykowanego środowiska dla SQL
Lekcja 2: Tworzenie bazy danych
Lekcja 3: Tworzenie tabel w SQL
Lekcja 4: Wstawianie danych do bazy danych SQL
Lekcja 5: Pobieranie danych z bazy danych SQL
Lekcja 6: Aktualizacja i usuwanie danych SQL
Lekcja 7: Operacje na danych (JOIN)
Lekcja 8: Funkcje agregujące i grupowanie danych (GROUP BY)
Lekcja 9: Podzapytania (Subqueries)
Lekcja 10: Indeksy w bazach danych
Lekcja 11: Optymalizacja zapytań SQL
Lekcja 12: Transakcje w bazach danych
Lekcja 13: Zarządzanie blokadami (Locks) i dostępem do danych
Lekcja 14: Replikacja danych w bazach danych
Lekcja 15: Partycjonowanie danych SQL
Lekcja 16: Widoki (Views) w bazach danych
Lekcja 17: Procedury składowane (Stored Procedures) i funkcje w SQL
Lekcja 18: Wyzwalacze (Triggers) w bazach danych
Lekcja 19: Zaawansowane indeksowanie w bazach danych
Lekcja 20: Narzędzia do zarządzania dużymi danymi (Big Data) w SQL
Lekcja 21: Bezpieczeństwo baz danych
Dodatki:
- Spis najważniejszych funkcji SQL