Felhasználói eszközök

Eszközök a webhelyen


oktatas:adatbazis-kezeles:mariadb:sql:dml

< SQL

Adatmanipuláció

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.

oktatas/adatbazis-kezeles/mariadb/sql/dml.txt · Utolsó módosítás: 2023/08/21 10:14 szerkesztette: admin