MySQL függvényei

A MySQL függvényeit két csoportba célszerű bontani:

Az alábbi összefoglaló a legfontosabb MySQL-függvényeket rendszerezi.

Aggregáló függvények

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;

Nem aggregáló függvények

Ezek jellemzően soronként hajtódnak végre.

Szövegkezelő függvények

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

Numerikus függvények

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();

Dátum- és időfüggvények

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;

Feltételes és NULL-kezelő függvények

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;

CASE

SELECT nev, CASE WHEN fizetes < 400000 THEN 'alacsony' WHEN fizetes < 700000 THEN 'közepes' ELSE 'magas' END AS kategoria FROM dolgozok;

Típusátalakító függvények

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);

Függvények egymásba ágyazása

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ó.