Spis najważniejszych funkcji SQL

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

  1. INT | Liczby całkowite.
  2. VARCHAR(n) | Zmienna długość znaków do n znaków.
  3. DECIMAL(p, s) | Liczby dziesiętne o precyzji p i skalowalności s.
  4. DATE | Data.
  5. 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