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