A MySQL függvényeit két csoportba célszerű bontani:
GROUP BY mellett használjuk őket.Az alábbi összefoglaló a legfontosabb MySQL-függvényeket rendszerezi.
Az aggregáló függvények egy sorhalmazon végeznek számítást, és rendszerint egy értéket adnak vissza.
COUNT()Megszámolja a sorokat vagy a nem NULL értékeket.
SELECT COUNT(*) FROM dolgozok;
Az összes sort megszámolja.
SELECT COUNT(fizetes) FROM dolgozok;
A fizetes oszlop nem NULL értékeit számolja.
SELECT COUNT(DISTINCT osztaly_id) FROM dolgozok;
Megszámolja, hány különböző osztály szerepel a dolgozók táblában.
⚠️ Fontos:
A COUNT(*) és COUNT(oszlop) nem feltétlenül ugyanazt adja vissza, mert a COUNT(oszlop) figyelmen kívül hagyja a NULL értékeket.
SUM()Egy numerikus oszlop értékeinek összegét számítja ki.
SELECT SUM(fizetes) FROM dolgozok;
Csoportosítva:
SELECT osztaly_id, SUM(fizetes) FROM dolgozok GROUP BY osztaly_id;
Ez megadja az egyes osztályok összes fizetését.
AVG()Átlagot számol.
SELECT AVG(fizetes) FROM dolgozok;
Csoportosítva:
SELECT osztaly_id, AVG(fizetes) FROM dolgozok GROUP BY osztaly_id;
📌 A NULL értékeket nem veszi figyelembe.
MIN()A legkisebb értéket adja vissza.
SELECT MIN(fizetes) FROM dolgozok;
📌 Dátumokra és szövegekre is alkalmazható.
SELECT MIN(szuletesi_datum) FROM dolgozok;
MAX()A legnagyobb értéket adja vissza.
SELECT MAX(fizetes) FROM dolgozok;
Dátumok esetén például:
SELECT MAX(szuletesi_datum) FROM dolgozok;
Ezek jellemzően soronként hajtódnak végre.
CONCAT()Szövegeket fűz össze.
SELECT CONCAT(vezeteknev, ' ', keresztnev) FROM dolgozok; -- Pl.: Szabó János
UPPER() / LOWER()Nagybetűssé / kisbetűssé alakít.
SELECT UPPER(nev) FROM dolgozok; -- Pl. SZABÓ JÁNOS
SELECT LOWER(nev) FROM dolgozok; -- Pl. szabó jános
LENGTH()A karakterlánc byte-hosszát adja vissza.
SELECT LENGTH('Hello'); -- Eredmény: 5
UTF-8 esetén fontos különbség van a CHAR_LENGTH()-hez képest.
CHAR_LENGTH()A karakterek számát adja vissza.
SELECT CHAR_LENGTH('naplemente');
Ez karaktereket számol, nem byte-okat.
SUBSTRING()Egy szövegrészletet vág ki.
SELECT SUBSTRING('ABCDEFG', 2, 3); -- Eredmény: BCD
LEFT() / RIGHT()A szöveg bal / jobb oldaláról vesz karaktereket.
SELECT LEFT('ABCDEFG', 3); -- Eredmény: ABC
SELECT RIGHT('ABCDEFG', 3); -- Eredmény: EFG
TRIM()Eltávolítja a szóközöket a szöveg elejéről és végéről.
SELECT TRIM(' Hello '); -- Eredmény: 'Hello'
LTRIM() / RTRIM()Csak bal, illetve csak jobb oldalról távolítja el a szóközöket.
SELECT LTRIM(' Hello');
SELECT RTRIM('Hello ');
REPLACE()Egy szövegrészletet másikra cserél.
SELECT REPLACE('Hello World', 'World', 'világ'); -- Eredmény: Hello világ
REVERSE()Megfordítja a karakterláncot.
SELECT REVERSE('ABC'); -- Eredmény: CBA
LOCATE()Megkeresi egy részszöveg pozícióját.
SELECT LOCATE('World', 'Hello World'); -- Eredmény: 7
ROUND()Kerekít.
SELECT ROUND(12.5678, 2); -- Eredmény: 12.57
CEIL() / FLOOR()Felfelé / lefelé kerekít a legközelebbi egészre.
SELECT CEIL(12.1); -- Eredmény: 13
SELECT FLOOR(12.9); -- Eredmény: 12
TRUNCATE()Tizedesjegyeket vág le kerekítés nélkül.
SELECT TRUNCATE(12.9876, 2); -- Eredmény: 12.98
ABS()Abszolút értéket ad.
SELECT ABS(-15); -- Eredmény: 15
MOD()Maradékos osztást végez.
SELECT MOD(10, 3); -- Eredmény: 1
📌 Az % operátor is használható:
SELECT 10 % 3;
POWER()Hatványoz.
SELECT POWER(2, 3); -- Eredmény: 8
SQRT()Négyzetgyök.
SELECT SQRT(25); -- Eredmény: 5
RAND()Véletlenszerű számot generál 0 és 1 között.
SELECT RAND();
NOW()Az aktuális dátumot és időt adja.
SELECT NOW(); -- Pl. 2026-09-01 20:05:12
CURDATE()Az aktuális dátum.
SELECT CURDATE();
CURTIME()Az aktuális idő.
SELECT CURTIME();
YEAR()Egy dátumból kinyeri az évet.
SELECT YEAR('2026-09-01'); -- Eredmény: 2026
MONTH()A hónap számát adja vissza.
SELECT MONTH('2026-09-01'); -- Eredmény: 9
DAY()A hónap napját adja vissza.
SELECT DAY('2026-09-01'); -- Eredmény: 1
HOUR(), MINUTE(), SECOND()Idő komponenseinek kinyerése:
SELECT HOUR('15:42:31');
SELECT MINUTE('15:42:31');
SELECT SECOND('15:42:31');
DAYNAME()A hét napjának nevét adja.
SELECT DAYNAME('2026-09-01');
MONTHNAME()A hónap nevét adja.
SELECT MONTHNAME('2026-09-01');
WEEKDAY()A hét napját számmal adja vissza, hétfőtől indulva.
SELECT WEEKDAY('2026-09-01');
DATEDIFF()Két dátum közötti napok számát adja.
SELECT DATEDIFF('2026-12-31', '2026-09-01');
TIMESTAMPDIFF()Két dátum/időpont közötti különbséget megadott mértékegységben számolja.
SELECT TIMESTAMPDIFF(YEAR,'2000-05-10','2026-09-21');
Más egységek is használhatók:
TIMESTAMPDIFF(DAY, ...)
TIMESTAMPDIFF(HOUR, ...)
TIMESTAMPDIFF(MINUTE, ...)
TIMESTAMPDIFF(SECOND, ...)
DATE_ADD()Időt ad hozzá egy dátumhoz.
SELECT DATE_ADD('2026-09-01', INTERVAL 10 DAY);
DATE_SUB()Időt von le.
SELECT DATE_SUB('2026-09-27', INTERVAL 1 MONTH);
DATE_FORMAT()Egy dátumot formázott szöveggé alakít.
SELECT DATE_FORMAT('2026-09-27','%Y-%m-%d') FROM dolgozok;
IF()Egyszerű feltételt kezel.
SELECT IF(fizetes >= 500000, 'magas', 'alacsony') FROM dolgozok;
IFNULL()Ha az első érték NULL, a másodikat adja vissza.
SELECT IFNULL(telefon, 'Nincs megadva') FROM dolgozok;
NULLIF()NULL-t ad, ha a két kifejezés egyenlő.
SELECT NULLIF(10, 10); -- Eredmény: NULL
-- Ha különböznek:
SELECT NULLIF(10, 20); -- Eredmény: 10
COALESCE()A felsorolt értékek közül az első nem NULL értéket adja vissza.
SELECT COALESCE(telefon, email, 'Nincs elérhetőség') FROM dolgozok;
CASESELECT
nev,
CASE
WHEN fizetes < 400000 THEN 'alacsony'
WHEN fizetes < 700000 THEN 'közepes'
ELSE 'magas'
END AS kategoria
FROM dolgozok;
CAST()Egy értéket más adattípusra alakít.
SELECT CAST('123' AS UNSIGNED);
SELECT CAST('2026-09-27' AS DATE);
CONVERT()Szintén típusátalakításra használható.
SELECT CONVERT('123', UNSIGNED);
A függvények kombinálhatók.
Például:
SELECT
UPPER(
CONCAT(vezeteknev, ' ', keresztnev)
) AS teljes_nev
FROM dolgozok;
Vagy:
SELECT ROUND(AVG(fizetes), 0) FROM dolgozok;
Itt először AVG() kiszámítja az átlagot, majd ROUND() egészre kerekíti.
📌 Az aggregáló és egy nem aggregáló függvény együtt is használható.
Adott a következő adatbázis ER-diagramja:

Futtasd le a feladat1.sql-t, majd készítsd el a következő lekérdezéseket!
Írd ki az összes alkalmazott nevét nagybetűkkel és a név hosszát!
Add meg az alkalmazottak fizetéseit kerekítve százezresekre! (100000-es egység)
Jelenítsd meg az alkalmazottak felvételi dátumát a következő formátumban: "2024. január 15."
Számítsd ki, hogy az egyes alkalmazottak hány napja dolgoznak a cégnél! Az eredményt napok száma szerint csökkenő sorrendben írasd ki.
Határozd meg az alkalmazottak életkorát és kategorizáld őket: "Fiatal" (30 alatt), "Középkorú" (30-45), "Idősebb" (45 fölött)! A lekérdezésben jelenítsd meg az alkalmazott nevét, szültési dátumát, életkorát és az életkor szerinti kategoriáját!
Add meg osztályonként az alkalmazottak számát és az átlagfizetésüket!
Mely osztályban a legmagasabb az átlagfizetés, és mennyi?
Kategorizáld az alkalmazottakat fizetés alapján: "Junior" (260k alatt), "Mid" (260-340k), "Senior" (340k fölött)!
Készíts egy "Jó napot, [NEV]! Ön a [VAROS] irodában dolgozik." formátumú üzenetet! Az összes alkalmazottnév és város legyen kisbetűs!
Add meg osztályonként az összes projekt költségvetésének összegét és az egyedi projektek számát!
Mutasd meg, mely projektek milyen hosszúak voltak (napok száma), és add meg a projekt nevének hosszát is! A lekérdezés jelenítse meg a projekt nevét, hosszát, a kezdés dátumát, a befejezés dátumát és a projekt hosszát napokban. Az adatok a projekt hosszának alapján csökkenő sorrendben jelenjenek meg.
Add meg, hogy mely osztályban a legmagasabb a fizetési szórás (legmagasabb és legalacsonyabb közötti különbség), és mennyi! A lekérdezés jelenítse meg az osztályt, minimum és maximum fizetése, a szórást és hogy hány alkalmazott van az adott osztályon. Az adatok szórás szerint csökkenö sorrendben jelenjenek meg.
Készíts egy "teljesítménybizonyítvány" jellegű listát, ahol az alkalmazottak státusza "Kiváló" (ha 5+ projektben dolgoztak), "Jó" (2-4 projekt), vagy "Fejlesztendő" (1-nél kevesebb)! A lista projektek száma alapján csökkenő sorrendben jelenítse meg az alkalmazott nevét és pozícióját, a projektek számát és az alkalmazott státuszát.
Készítsd el az összes alkalmazott "felhasználónevét" az nevének első 3 betűje és a születési évének utolsó 2 száma alapján (név első 3 karaktere + születési év utolsó 2 számjegye)! Az egészet kisbetűkkel! A lekérdezésben adja meg az alkalmazott nevét, születési dátumát és a felhasználónevét.
Készítsd el az összes alkalmazott "foglalkozási leírását" a következő formátumban: "[NEV] a [VAROS] irodában [POZICIO] pozícióban dolgozik és [FIZETES] Ft fizetést kap." Minden szövegrész legyen megfelelő formátumban (név/város kisbetűs)! Az adatokat az alkalmazottak neve alapján ábécé sorrendben jelenítse meg!