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() / RIGHTA 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ó.