[[oktatas:adatbazis-kezeles:mariadb:sql|< SQL]]
====== Adatmanipuláció ======
* **Szerző:** Sallai András
* Copyright (c) 2019, Sallai András
* Szerkesztve: 2019, 2021
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Beszúrás =====
INSERT INTO táblanév
VALUES (érték1,érték2,érték3,...);
INSERT INTO táblanév (mező1,mező2,mező3,...)
VALUES (érték1,érték2,érték3,...);
INSERT INTO táblanév SET mező1=érték1, mező2=érték2, ...
Az utoljára beszúrt rekord azonosítója:
SELECT LAST_INSERT_ID();
===== Frissítés =====
UPDATE táblanév
SET mező1=érték1,mező2=érték2,...
WHERE mező=érték;
===== Lekérdezés =====
M betűvel kezdődő nevek megjelenítése:
select * from dolgozok where name like "M%";
Á betűvel kezdődő nevek megjelenítése:
select * from dolgozok where name rlike "^Á.*";
A betűvel kezdődő nevek megjelenítése:
select * from dolgozok where name rlike "^A.*";
===== Függvények =====
==== Szövegkezelés ====
=== lpad() ===
Vezető nullák.
lpad(56, 3, 0)
Eredmény: 056
=== format() ===
A format() függvény szintaxisa:
format(szám, törtrész_pozíció[, locale])
Példák:
Kettő tizedesjegy, ezredes elválasztóval:
select format(3843, 2)
Eredmény: 3,843.00
Kettő tizedesjegy, ezredes elválasztóval:
select format(3843, 2, 'hu_HU')
Eredmény: 3.843,00
Valós szám, 2 tizedesjeggyel:
select format(3.12345, 2, 'hu_HU');
Eredmény: 3,12
=== position() ===
Milyen pozíción található a 'fa' szó:
select position('fa' in 'almafa az égen');
Eredmény: 5
=== mid() ===
Szeretnénk az 5-dik karaktertől, 2 darab karaktert:
select mid('almafa az égen', 5, 2);
Eredmény: fa
=== length() ===
A karakter hossza bájtokban:
select char_length('élő');
Eredmény: 5
=== char_length() ===
A karakter hossza karakterenként:
select char_length('élő');
Eredmény: 3
=== hex() ===
A karakter hossza karakterenként:
select hex(123);
Eredmény: 7B
=== ucase és lcase ===
select ucase('alma');
Eredmény: ALMA
select lcase('ALMA');
Eredmény: alma
=== replace() ===
Szöveg cseréje:
select replace('almafa az égen', 'alma', 'körte');
Eredmény: körtefa az égen
=== trim() ===
A trim() függvény levágja a szóközöket egy mondat elejéről és végéről.
Szóközök levágása:
trim(" valami ");
Az eredmény: "valami"
==== Dátum ====
=== now() ===
select now();
Eredmény: 2021-03-16 19:05:41
=== curdate() ===
select curdate();
Eredmény: 2021-03-16
=== curtime() ===
select curtime();
Eredmény: 19:09:09
=== Felbontás ===
Dátum:
select date(now());
Eredmény: 2021-03-16
Idő:
select time(now());
Eredmény: 19:11:59
Év:
select year(now());
Eredmény: 2021
Hónap:
select month(now());
Eredmény: 3
Nap:
select day(now());
Eredmény: 16
Óra:
select hour(now());
Eredmény: 19
Perc:
select minute(now());
Eredmény: 18
Másodperc:
select second(now());
Eredmény: 52
A hónap neve:
select monthname(now());
Eredmény: March
A nap neve:
select dayname(now());
Eredmény: Tuesday
=== datediff() ===
Két dátum különbsége:
select datediff('2021-03-21', '2021-02-02');
Eredménye: 47
=== timediff() ===
Két idő különbsége:
select timediff('19:27:05', '19:24:04');
Eredmény: 00:03:01
===== Operátorok =====
==== Aritmetikai ====
| + | összeadás |
| - | kivonás |
| * | szorzás |
| / | osztás |
| % | maradék képzés |
==== Összehasonlító operátorok ====
| = |
| > |
| < |
| >= |
| <= |
| <> |
==== Értékadó operátorok ====
| += | plusz egyenlő |
| -= | mínusz egyenlő |
| *= | szorozva egyenlő |
| /= | osztva egyenlő |
| %= | maradékosan osztva egyenlő |
| &= | bitenkénti és egyenlő |
| ^-= | bitenkénti kizáró vagy egyenlő |
| |*= | bitenkénti vagy egyenlő |
==== Logikai operátorok ====
| ALL |
| AND |
| ANY |
| BETWEEN |
| EXISTS |
| IN |
| LIKE |
| NOT |
| OR |
| SOME |
===== Csoportosítás =====
A csoportosítás végezhetünk egyes mezők alapján.
Ha megjelenítendő mező megegyezik a csoportosított mezővel,
akkor az ismétlődő adatok csak egyszer jelennek meg.
select telepules
from dolgozok
group by telepules;
A példában, így lekérdezhetők milyen települések vannak tárolva, és
minden település csak egyszer jelenik meg.
A csoportosított mezők mellett azonban használhatunk függvényeket.
A következő példában, a fizetéseket szeretnénk látni településenként összegezve:
select telepules, sum(fizetes)
from dolgozok
group by telepules;
Vagy településenként átlagolva:
select telepules, avg(fizetes)
from dolgozok
group by telepules;
==== Szűrés csoportosítás után ====
A csoportosítás által kapott adatokat szűrhetjük a **having** direktívával.
Például, csak azokat a településeket szeretnénk látni, ahol
a fizetések átlaga nagyobb mint fél millió:
select telepules, avg(fizetes)
from dolgozok
group by telepules
having avg(fizetes)> 500000
;
A **where** direktívával a csoportosítás előtt szűrünk, a **having** direktívával a
csoportosítás után.
===== Link =====
* https://devsrealm.com/web-dev/mysql-and-mariadb/list-of-functions-and-practical-uses-in-mariadb/#QUOTE_Function (2021)