·
// pytania i odpowiedzi SQL

SQL — Q&A

44pytań
0znasz

Pytania rekrutacyjne z SQL — od podstaw, kluczy i relacji przez JOIN-y i podzapytania, indeksy i widoki, normalizację, ACID, aż po procedury, triggery i CTE. Kliknij pytanie żeby zobaczyć odpowiedź, oznacz ✓ gdy je znasz.

🔍
44 pytania
🔎
Brak wyników
Spróbuj innej frazy
01 Czym jest SQL? ✓▶

SQL (Structured Query Language) to język do zarządzania relacyjnymi bazami danych. Używamy go do tworzenia, modyfikowania i usuwania struktur baz danych (DDL), manipulowania danymi (DML) oraz kontroli dostępu (DCL).

SQL pojawił się w 1974 roku. W 1986 stał się standardem ANSI, a w 1987 — ISO. Dziś jest podstawowym językiem wszystkich relacyjnych DBMS: MySQL, SQL Server, PostgreSQL, Oracle.

Podstawy SQL
02 Jakie są podzbiory SQL (DDL, DML, DCL)? ✓▶
  • DDL (Data Definition Language) — definiuje strukturę bazy danych: CREATE, ALTER, DROP, TRUNCATE;
  • DML (Data Manipulation Language) — manipuluje danymi: SELECT, INSERT, UPDATE, DELETE;
  • DCL (Data Control Language) — kontroluje dostęp: GRANT, REVOKE;
  • TCL (Transaction Control Language) — zarządza transakcjami: COMMIT, ROLLBACK, SAVEPOINT.
Podstawy SQL
03 Czym jest DBMS a czym RDBMS? ✓▶
  • DBMS (Database Management System) — system zarządzania bazą danych. Pośredniczy między użytkownikiem a danymi, umożliwiając ich tworzenie, modyfikowanie i pobieranie. Przykłady: pliki flat, XMLdb.
  • RDBMS (Relational DBMS) — DBMS oparty na modelu relacyjnym. Dane przechowywane w powiązanych tabelach, relacje przez klucze. Przykłady: MySQL, SQL Server, PostgreSQL, Oracle.
Podstawy SQL
04 Czym są tabele i pola (kolumny) w bazie danych? ✓▶

Tabela to podstawowa struktura przechowywania danych w RDBMS — dwuwymiarowa siatka składająca się z wierszy i kolumn.

  • Kolumny (pola) — pionowe; definiują typ i strukturę danych (np. id INT, name VARCHAR(100));
  • Wiersze (rekordy) — poziome; każdy wiersz to jeden rekord danych.

Tabela ma zawsze stałą liczbę kolumn (zdefiniowaną schemą) ale może zawierać dowolną liczbę wierszy.

Podstawy SQL
05 Czy SQL wspiera programowanie proceduralne? ✓▶

Standardowy SQL (ANSI) nie ma pętli ani rozbudowanych instrukcji warunkowych — jest językiem deklaratywnym (opisujesz CO chcesz, nie JAK). Jednak każdy RDBMS rozszerza SQL o elementy proceduralne:

  • T-SQL (Microsoft SQL Server) — IF/ELSE, WHILE, zmienne;
  • PL/SQL (Oracle) — pełnoprawny język proceduralny;
  • PL/pgSQL (PostgreSQL) — podobny do PL/SQL.
Podstawy SQL
06 Jakie są różnice między SQL, MySQL a SQL Server? ✓▶
  • SQL — język standardowy (ANSI/ISO) do komunikacji z relacyjnymi bazami danych;
  • MySQL — open-source RDBMS (Oracle) używający SQL jako języka. Popularny w aplikacjach webowych;
  • SQL Server (MSSQL) — RDBMS firmy Microsoft. Używa dialektu T-SQL. Popularny w środowiskach .NET i korporacyjnych.

Zarówno MySQL jak i SQL Server to systemy zarządzania bazami danych — SQL to język którym się z nimi komunikujemy.

Podstawy SQL
07 Jakie są różnice między SQL a PL/SQL? ✓▶
  • SQL — deklaratywny, wykonuje jedną kwerendę na raz, źródło danych;
  • PL/SQL (Oracle) — proceduralny dialekt SQL, wykonuje cały blok kodu, dodaje pętle, warunki, wyjątki;
  • Instrukcja SQL może być osadzona w PL/SQL — odwrotnie nie zadziała;
  • PL/SQL jest platformą wyświetlającą dane zwrócone przez SQL.
Podstawy SQL
08 Czym jest klucz główny (PRIMARY KEY)? ✓▶

Klucz główny to kolumna (lub zestaw kolumn) jednoznacznie identyfikująca każdy wiersz w tabeli. Gwarantuje unikalność i nie może zawierać wartości NULL. Każda tabela może mieć tylko jeden klucz główny.

CREATE TABLE Employees ( Id INT PRIMARY KEY, Name VARCHAR(100) NOT NULL, Email VARCHAR(200) UNIQUE );
Klucze i relacje
09 Czym jest klucz obcy (FOREIGN KEY)? ✓▶

Klucz obcy to kolumna (lub zestaw kolumn) w tabeli podrzędnej, która odwołuje się do klucza głównego tabeli nadrzędnej. Tworzy i egzekwuje relację między tabelami i zapewnia integralność referencyjną.

CREATE TABLE Orders ( OrderId INT PRIMARY KEY, CustomerId INT, FOREIGN KEY (CustomerId) REFERENCES Customers(Id) );
Klucze i relacje
10 Czym jest klucz unikalny (UNIQUE KEY) i czym różni się od PRIMARY KEY? ✓▶

Klucz unikalny gwarantuje że kolumna (lub zestaw kolumn) nie zawiera duplikatów. Różnice od PRIMARY KEY:

  • Klucz unikalny może zawierać jedną wartość NULL — PRIMARY KEY nie może;
  • Tabela może mieć wiele kluczy unikalnych, ale tylko jeden PRIMARY KEY;
  • PRIMARY KEY domyślnie tworzy indeks klastrowany, UNIQUE — nieklastrowany.
Klucze i relacje
11 Czym są ograniczenia (Constraints) w SQL? ✓▶

Ograniczenia to reguły wymuszające poprawność danych w kolumnie lub tabeli. Dwa poziomy: na poziomie kolumny i na poziomie tabeli.

CREATE TABLE Products ( Id INT PRIMARY KEY, -- unikalny + NOT NULL Name VARCHAR(100) NOT NULL, -- nie może być NULL Price DECIMAL CHECK (Price > 0),-- warunek Category VARCHAR(50) DEFAULT 'General' -- wartość domyślna );
Klucze i relacje
12 Jaka jest różnica między NULL, zerem a wartością pustą? ✓▶
  • NULL — brak wartości: "niedostępna, nieprzypisana, nieznana". Nie jest równe niczemu — nawet samemu sobie (NULL = NULL → FALSE);
  • 0 — konkretna wartość liczbowa zero;
  • '' (pusty string) — istniejąca wartość tekstowa o długości 0.
SELECT * FROM t WHERE col IS NULL; -- prawidłowo SELECT * FROM t WHERE col = NULL; -- ZAWSZE false!
Klucze i relacje
13 Jakie są podstawowe operatory w SQL? ✓▶
  • Arytmetyczne — +, -, *, /, %;
  • Porównania — =, !=, <>, <, >, <=, >=;
  • Logiczne — AND, OR, NOT, ALL, ANY, BETWEEN, IN, LIKE, EXISTS, UNIQUE, IS NULL;
  • Zbiorów — UNION, UNION ALL, INTERSECT, MINUS/EXCEPT.
Zapytania i joiny
14 Jaka jest różnica między operatorami BETWEEN a IN? ✓▶
-- BETWEEN — zakres wartości (włącznie z granicami) SELECT * FROM Orders WHERE Amount BETWEEN 100 AND 500; -- IN — konkretna lista wartości SELECT * FROM Products WHERE Category IN ('Electronics', 'Books', 'Toys'); -- NOT IN — wykluczenie WHERE Status NOT IN ('Cancelled', 'Refunded')
Zapytania i joiny
15 Jakie są typy JOIN w SQL? ✓▶
  • INNER JOIN — tylko wiersze z dopasowaniem w obu tabelach;
  • LEFT (OUTER) JOIN — wszystkie wiersze z lewej tabeli + dopasowania z prawej (brak → NULL);
  • RIGHT (OUTER) JOIN — wszystkie wiersze z prawej tabeli + dopasowania z lewej;
  • FULL (OUTER) JOIN — wszystkie wiersze z obu tabel (NULL tam gdzie brak dopasowania);
  • CROSS JOIN — iloczyn kartezjański (każdy wiersz z każdym);
  • SELF JOIN — tabela łączona ze sobą (np. hierarchie).
Zapytania i joiny
16 Czym jest INNER JOIN i jak go użyć? ✓▶

INNER JOIN zwraca tylko te wiersze gdzie istnieje dopasowanie w obu tabelach. Wiersze bez dopasowania są pomijane.

SELECT e.Name, d.DeptName FROM Employees e INNER JOIN Departments d ON e.DeptId = d.Id; -- Tylko pracownicy którzy mają przypisany dział
Zapytania i joiny
17 Czym są GROUP BY i HAVING? ✓▶

GROUP BY grupuje wiersze o tych samych wartościach w określonej kolumnie — używane z funkcjami agregującymi (COUNT, SUM, AVG, MIN, MAX). HAVING filtruje grupy (jak WHERE ale dla agregatów).

SELECT DeptId, COUNT(*) AS EmpCount, AVG(Salary) AS AvgSal FROM Employees GROUP BY DeptId HAVING AVG(Salary) > 5000; -- Działy ze średnią pensją powyżej 5000

Kolejność klauzul: WHERE → GROUP BY → HAVING → ORDER BY

Zapytania i joiny
18 Czym są podzapytania (subqueries)? ✓▶

Podzapytanie to zapytanie zagnieżdżone wewnątrz innego zapytania. Może wystąpić w klauzulach WHERE, FROM, SELECT lub HAVING.

-- Podzapytanie w WHERE SELECT Name, Salary FROM Employees WHERE Salary > (SELECT AVG(Salary) FROM Employees); -- Podzapytanie skorelowane (używa wartości z zewnętrznego zapytania) SELECT e.Name FROM Employees e WHERE EXISTS (SELECT 1 FROM Orders o WHERE o.EmpId = e.Id);
Zapytania i joiny
19 Jakie operatory zbiorów występują w SQL? ✓▶
-- UNION — suma (bez duplikatów) SELECT Id FROM Customers UNION SELECT Id FROM Suppliers; -- UNION ALL — suma (z duplikatami, szybszy) UNION ALL -- INTERSECT — część wspólna INTERSECT -- EXCEPT / MINUS — różnica (Oracle używa MINUS) EXCEPT

Wszystkie zapytania muszą mieć tę samą liczbę kolumn i zgodne typy danych.

Zapytania i joiny
20 Napisz SQL zwracający pracownika o 3. najwyższej pensji. ✓▶
-- SQL Server / MySQL 8+ (TOP lub LIMIT) SELECT TOP 1 Salary FROM ( SELECT TOP 3 Salary FROM Employees ORDER BY Salary DESC ) sub ORDER BY Salary ASC; -- Elegancko z funkcją okna (SQL Server, PostgreSQL) SELECT Name, Salary FROM ( SELECT Name, Salary, DENSE_RANK() OVER (ORDER BY Salary DESC) AS rnk FROM Employees ) r WHERE rnk = 3;
Zapytania i joiny
21 Czy można sortować przy użyciu aliasu kolumny? ✓▶

Tak. Alias kolumny można użyć w klauzuli ORDER BY — jest ona ewaluowana po SELECT, więc aliasy są już znane. Nie można używać aliasów w WHERE lub HAVING (ewaluowane przed SELECT).

SELECT FirstName + ' ' + LastName AS FullName, Salary * 12 AS AnnualSalary FROM Employees ORDER BY AnnualSalary DESC; -- alias działa tutaj
Zapytania i joiny
22 Czym jest indeks w SQL i po co go używamy? ✓▶

Indeks to struktura danych przyspieszająca wyszukiwanie wierszy w tabeli — jak spis treści w książce. Zmniejsza liczbę stron danych przeskanowanych przez kwerendę.

CREATE INDEX idx_emp_name ON Employees(LastName); CREATE UNIQUE INDEX idx_email ON Employees(Email); -- Sprawdzenie indeksów (SQL Server): SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID('Employees');

Indeksy przyspieszają SELECTy ale spowalniają INSERT/UPDATE/DELETE — dodają narzut na utrzymanie struktury.

Indeksy i widoki
23 Jakie są typy indeksów w SQL? ✓▶
  • Unikalny (UNIQUE) — wartości kolumny nie mogą się powtarzać;
  • Klastrowany (Clustered) — fizycznie sortuje wiersze tabeli; max 1 na tabelę; tworzony automatycznie dla PRIMARY KEY;
  • Nieklastrowany (Non-Clustered) — oddzielna struktura z referencjami; max 999 na tabelę; tworzony automatycznie dla UNIQUE;
  • Złożony (Composite) — obejmuje wiele kolumn;
  • Funkcyjny — oparty na wyrażeniu lub funkcji;
  • Bitmapowy — dla kolumn o niskiej kardynalności (Oracle).
Indeksy i widoki
24 Jaka jest różnica między indeksem klastrowanym a nieklastrowanym? ✓▶
  • Tabela może mieć tylko jeden indeks klastrowany ale 999 nieklastrowanych;
  • Klastrowany fizycznie sortuje dane tabeli; nieklastrowany ma oddzielną strukturę;
  • Klastrowany przechowuje dane i informacje o indeksie razem; nieklastrowany — tylko referencje;
  • Odczyt z klastrowanego jest generalnie szybszy niż z nieklastrowanego;
  • Klastrowany tworzony automatycznie dla PRIMARY KEY; nieklastrowany dla UNIQUE KEY.
Indeksy i widoki
25 Czym jest widok (VIEW) w SQL? ✓▶

Widok to wirtualna tabela oparta na zapytaniu SELECT. Nie przechowuje danych fizycznie — za każdym razem gdy pytamy o widok, wykonywane jest zapytanie bazowe.

CREATE VIEW ActiveEmployees AS SELECT Id, Name, Department FROM Employees WHERE Status = 'Active'; -- Użycie jak zwykła tabela: SELECT * FROM ActiveEmployees; -- Usunięcie: DROP VIEW ActiveEmployees;

Widoki upraszczają zapytania, ukrywają złożoność, ograniczają dostęp do kolumn i zapewniają warstwę bezpieczeństwa.

Indeksy i widoki
26 Jakie polecenie SQL wyświetla bieżącą datę? ✓▶
-- SQL Server SELECT GETDATE(); -- data i czas SELECT GETUTCDATE(); -- UTC SELECT SYSDATETIME(); -- wyższa precyzja SELECT CAST(GETDATE() AS DATE); -- tylko data bez czasu -- MySQL SELECT NOW(); -- data i czas SELECT CURDATE(); -- tylko data -- PostgreSQL / standard SQL SELECT CURRENT_DATE; SELECT CURRENT_TIMESTAMP;
Indeksy i widoki
27 Jakie funkcje agregujące oferuje SQL? ✓▶
SELECT COUNT(*), -- liczba wierszy COUNT(DISTINCT City), -- liczba unikalnych SUM(Salary), -- suma AVG(Salary), -- średnia MIN(Salary), -- minimum MAX(Salary), -- maksimum STRING_AGG(Name, ', ') -- konkatenacja (SQL Server) FROM Employees;

Funkcje agregujące ignorują wartości NULL (z wyjątkiem COUNT(*)).

Indeksy i widoki
28 Jakie znasz funkcje manipulacji tekstem w SQL? ✓▶
UPPER(str) -- na wielkie litery LOWER(str) -- na małe litery LEN(str) -- długość (SQL Server) SUBSTRING(str,s,len) -- wycinek TRIM(str) -- usuń spacje LTRIM/RTRIM(str) -- lewe/prawe REPLACE(str,a,b) -- zastąp a → b CHARINDEX(a,str) -- pozycja znaku CONCAT(a,b,c) -- łączenie stringów FORMAT(val, fmt) -- formatowanie
Indeksy i widoki
29 Napisz SQL który znajdzie pracowników których imię zaczyna się na 'A'. ✓▶
-- LIKE z symbolem wieloznacznym % SELECT * FROM Employees WHERE EmpName LIKE 'A%'; -- _ oznacza dokładnie jeden dowolny znak WHERE EmpName LIKE 'A_a%'; -- np. "Ana", "Ala" -- NOT LIKE — wykluczenie WHERE EmpName NOT LIKE '%Manager%';
Indeksy i widoki
30 Czym jest normalizacja i jakie są jej postaci normalne? ✓▶

Normalizacja to proces organizowania bazy danych w celu eliminacji nadmiarowości i zależności. Postaci normalne:

  • 1NF — atomowe wartości (brak list w komórkach), unikalny klucz główny;
  • 2NF — spełnia 1NF + brak częściowych zależności od klucza złożonego;
  • 3NF — spełnia 2NF + brak tranzytywnych zależności (kolumna zależy od klucza, nie od innej niekolumny);
  • BCNF (3.5NF) — silniejsza forma 3NF;
  • 4NF, 5NF — rzadziej stosowane w praktyce.
Normalizacja i ACID
31 Czym jest denormalizacja i kiedy ją stosujemy? ✓▶

Denormalizacja to świadome wprowadzenie redundancji do znormalizowanej bazy danych w celu poprawy wydajności odczytu. Polega na łączeniu tabel lub powielaniu danych.

Stosujemy ją gdy: zapytania JOIN są zbyt kosztowne, priorytetem jest prędkość odczytu (hurtownie danych, OLAP), mamy systemy z dużą liczbą odczytów i małą ilością zapisów.

Kompromis: lepsza wydajność SELECT vs trudniejsze utrzymanie spójności danych.

Normalizacja i ACID
32 Jakie są wady braku normalizacji bazy danych? ✓▶
  • Nadmiarowość danych — te same dane przechowywane wielokrotnie, marnowanie miejsca;
  • Anomalie aktualizacji — zmiana danych w jednym miejscu nie propaguje się do innych kopii;
  • Anomalie wstawiania — nie można wstawić danych bez zbędnych informacji;
  • Anomalie usuwania — usunięcie wiersza może stracić inne ważne dane;
  • Naruszenie ACID — trudna spójność przy wielu kopiach tych samych danych.
Normalizacja i ACID
33 Czym jest właściwość ACID? ✓▶

ACID to cztery właściwości gwarantujące poprawne przetwarzanie transakcji:

  • A — Atomicity (Niepodzielność) — transakcja to "wszystko albo nic". Jeśli jedna operacja się nie powiedzie — cała transakcja jest cofana (ROLLBACK);
  • C — Consistency (Spójność) — baza zawsze przechodzi z jednego spójnego stanu do drugiego. Żadne zasady integralności nie są naruszane;
  • I — Isolation (Izolacja) — współbieżne transakcje nie wpływają na siebie nawzajem. Poziomy: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE;
  • D — Durability (Trwałość) — zatwierdzone (COMMIT) zmiany są trwałe — nawet po awarii systemu.
Normalizacja i ACID
34 Jaka jest różnica między DELETE a TRUNCATE? ✓▶
-- DELETE — DML, można cofnąć (ROLLBACK), obsługuje WHERE DELETE FROM Orders WHERE Status = 'Cancelled'; DELETE FROM Orders; -- wszystkie wiersze (wolno) -- TRUNCATE — DDL, nie można cofnąć, bez WHERE, szybkie TRUNCATE TABLE TempData;
  • DELETE — powolne (loguje każdy wiersz), zachowuje IDENTITY, transakcyjne;
  • TRUNCATE — szybkie (dealokuje strony), resetuje IDENTITY, nie można filtrować.
Normalizacja i ACID
35 Jakie są typy systemów zarządzania bazami danych? ✓▶
  • Hierarchiczne DBMS — dane w strukturze drzewa (rodzic-dziecko). Np. IBM IMS. Ograniczone relacje;
  • Sieciowe DBMS — wiele-do-wielu przez sieć rekordów. Np. IDMS;
  • Relacyjne DBMS (RDBMS) — dane w tabelach powiązanych kluczami. Standard dziś. Np. MySQL, PostgreSQL, Oracle;
  • Obiektowe DBMS — dane jako obiekty. Np. db4o;
  • NoSQL (dokumentowe, kolumnowe, grafowe, klucz-wartość) — MongoDB, Cassandra, Redis, Neo4j.
Normalizacja i ACID
36 Czym jest niespójna zależność w bazie danych? ✓▶

Niespójna zależność (anomalia zależności) to sytuacja gdy ścieżka dostępu do danych jest brakująca, uszkodzona lub błędna. Użytkownik musi przeszukiwać dane w niewłaściwej tabeli, co prowadzi do błędnych wyników.

Najczęstsza przyczyna: brak normalizacji — dane rozłożone nielogicznie między tabelami, brakujące klucze obce lub złe relacje między tabelami.

Normalizacja i ACID
37 Czym jest TRIGGER w SQL? ✓▶

Trigger (wyzwalacz) to specjalna procedura automatycznie wykonywana gdy na tabeli zachodzi INSERT, UPDATE lub DELETE.

CREATE TRIGGER trg_AfterInsert ON Orders AFTER INSERT AS BEGIN -- loguj każde nowe zamówienie INSERT INTO AuditLog (Action, TableName, ActionDate) VALUES ('INSERT', 'Orders', GETDATE()); END;

Typy triggerów: AFTER (po operacji), INSTEAD OF (zastępuje operację), BEFORE (Oracle). Używaj ostrożnie — mogą ukrywać logikę biznesową.

Zaawansowane
38 Czym jest procedura składowana (Stored Procedure)? ✓▶

Procedura składowana to zestaw instrukcji SQL skompilowany i przechowywany na serwerze. Może przyjmować parametry wejściowe i zwracać wyniki.

CREATE PROCEDURE GetEmployeesByDept @DeptId INT AS BEGIN SELECT Id, Name, Salary FROM Employees WHERE DeptId = @DeptId; END; -- Wywołanie: EXEC GetEmployeesByDept @DeptId = 3;

Zalety: lepsza wydajność (kompilacja raz), bezpieczeństwo (parametryzacja → brak SQL injection), hermetyzacja logiki.

Zaawansowane
39 Czym jest CTE (Common Table Expression)? ✓▶

CTE to tymczasowy, nazwany wynik zapytania definiowany za pomocą klauzuli WITH. Istnieje tylko na czas wykonywania jednego zapytania. Czytelniejszy odpowiednik podzapytań i tabel tymczasowych.

WITH TopSalaries AS ( SELECT DeptId, MAX(Salary) AS MaxSal FROM Employees GROUP BY DeptId ) SELECT e.Name, e.Salary, t.MaxSal FROM Employees e JOIN TopSalaries t ON e.DeptId = t.DeptId WHERE e.Salary = t.MaxSal; -- Rekurencyjne CTE — np. dla hierarchii WITH RECURSIVE OrgChart AS (...)
Zaawansowane
40 Czym są funkcje okna (Window Functions)? ✓▶

Funkcje okna wykonują obliczenia na zestawie wierszy powiązanych z bieżącym wierszem — bez grupowania wyników (każdy wiersz zachowuje swoją tożsamość).

SELECT Name, DeptId, Salary, ROW_NUMBER() OVER (PARTITION BY DeptId ORDER BY Salary DESC) AS Rank, SUM(Salary) OVER (PARTITION BY DeptId) AS DeptTotal, LAG(Salary) OVER (ORDER BY HireDate) AS PrevSalary FROM Employees;

Popularne funkcje: ROW_NUMBER, RANK, DENSE_RANK, NTILE, LAG, LEAD, FIRST_VALUE, LAST_VALUE.

Zaawansowane
41 Czym jest transakcja i jak jej używać? ✓▶

Transakcja to jednostka pracy składająca się z jednej lub więcej operacji SQL, które muszą się wykonać wszystkie albo żadna (ACID).

BEGIN TRANSACTION; UPDATE Accounts SET Balance = Balance - 500 WHERE Id = 1; -- przelew z konta UPDATE Accounts SET Balance = Balance + 500 WHERE Id = 2; -- przelew na konto IF @ERROR <> 0 ROLLBACK; -- cofnij obie operacje ELSE COMMIT; -- zatwierdź obie
Zaawansowane
42 Czym jest PIVOT w SQL? ✓▶

PIVOT przekształca unikalne wartości z kolumny w wiele kolumn — obraca wiersze w kolumny. UNPIVOT robi odwrotność.

-- Sprzedaż per kwartał (wiersze) → kolumny SELECT Product, [Q1], [Q2], [Q3], [Q4] FROM Sales PIVOT (SUM(Amount) FOR Quarter IN ([Q1],[Q2],[Q3],[Q4])) p;
Zaawansowane
43 Czym są funkcje w SQL i do czego ich używamy? ✓▶

Funkcje SQL to obiekty bazy danych zwracające wartość. W odróżnieniu od procedur — nie modyfikują stanu bazy, mogą być używane wewnątrz zapytań SELECT.

-- Przykład funkcji skalarnej (SQL Server) CREATE FUNCTION dbo.GetFullName(@First VARCHAR(50), @Last VARCHAR(50)) RETURNS VARCHAR(101) AS BEGIN RETURN @First + ' ' + @Last; END; -- Użycie: SELECT dbo.GetFullName(FirstName, LastName) FROM Employees;
Zaawansowane
44 Czym jest CASE WHEN w SQL? ✓▶

CASE WHEN to warunkowe wyrażenie SQL — odpowiednik if/else używany w SELECT, WHERE i ORDER BY.

-- Simple CASE SELECT Name, CASE Department WHEN 'IT' THEN 'Technologia' WHEN 'HR' THEN 'Zasoby ludzkie' ELSE 'Inne' END AS DeptPL FROM Employees; -- Searched CASE SELECT Name, Salary, CASE WHEN Salary < 3000 THEN 'Junior' WHEN Salary < 7000 THEN 'Mid' ELSE 'Senior' END AS Level FROM Employees;
Zaawansowane