๊ด€๋ฆฌ ๋ฉ”๋‰ด

bom's happy life

MariaDB ๋ฐ์ดํ„ฐ ํ˜•์‹ ๋ณธ๋ฌธ

Deveolpment Study๐Ÿ—‚๏ธ/Databases

MariaDB ๋ฐ์ดํ„ฐ ํ˜•์‹

bompeach 2023. 2. 22. 10:02

<MariaDB์—์„œ ์ง€์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹์˜ ์ข…๋ฅ˜>

 

.

.

 

์ˆซ์ž ๋ฐ์ดํ„ฐ ํ˜•์‹(์ž์ฃผ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์œ„์ฃผ)

๋ฐ์ดํ„ฐํ˜•์‹ ๋ฐ”์ดํŠธ ์ˆ˜ ์ˆซ์ž๋ฒ”์œ„ ์„ค๋ช…
BIT N/8   1~64bit๋ฅผ ํ‘œํ˜„
INT(=INTEGER) 4 ์•ฝ -21์–ต~+21์–ต ์ •์ˆ˜
DOUBLE(=REAL) 8 -1.22E-308~1.79E+308 ์†Œ์ˆ˜์  ์•„๋ž˜ 15์ž๋ฆฌ๊นŒ์ง€ ํ‘œํ˜„

 

์ˆซ์ž ๋ฐ์ดํ„ฐ ํ˜•์‹

–์ •์ˆ˜, ์‹ค์ˆ˜ ๋“ฑ์˜ ์ˆซ์ž

–DECIMAL ๋ฐ์ดํ„ฐ ํ˜•์‹ : ์ •ํ™•ํ•œ ์ˆ˜์น˜ ์ €์žฅ, ์†Œ์ˆ˜์ ์ด ๋“ค์–ด๊ฐ„ ์‹ค์ˆ˜ ์ €์žฅ

–FLOAT, REAL(=DOUBLE) : ๊ทผ์‚ฌ์น˜์˜ ์ˆซ์ž ์ €์žฅ, ์ƒ๋‹นํžˆ ํฐ ์ˆซ์ž๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ 

–๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜๋ฅผ ์ง€์ •ํ•  ๋•Œ๋Š” UNSIGNED ์˜ˆ์•ฝ์–ด ์‚ฌ์šฉ

 

.

.

 

๋ฌธ์ž ๋ฐ์ดํ„ฐ ํ˜•์‹(์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์œ„์ฃผ)

๋ฐ์ดํ„ฐ ํ˜•์‹ ๋ฐ”์ดํŠธ ์ˆ˜ ์„ค๋ช…
CHAR(n) 1~255 ๊ณ ์ •๊ธธ์ด ๋ฌธ์žํ˜•. n์„ 1๋ถ€ํ„ฐ 255๊นŒ์ง€ ์ง€์ •.
VARCHAR(n) 1~65535 ๊ฐ€๋ณ€๊ธธ์ด ๋ฌธ์žํ˜•.n์„ ์‚ฌ์šฉํ•˜๋ฉด 1๋ถ€ํ„ฐ 65535๊นŒ์ง€ ์ง€์ •. VARCAHRํ˜•์„ ์‚ฌ์šฉํ•˜๋ฉด ์šฉ๋Ÿ‰์„ ์ค„์—ฌ์คŒ.
SET(๊ฐ’๋“ค...) 1,2,3,4,8 ์ตœ๋Œ€ 64๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ๊ฐ’

CHAR ํ˜•์‹

– ๊ณ ์ •๊ธธ์ด ๋ฌธ์žํ˜• (์ž๋ฆฟ์ˆ˜ ๊ณ ์ •)

– Ex) CHAR(100)์— ‘ABC’ 3๊ธ€์ž ์ €์žฅ

   » 100์ž๋ฆฌ๋ฅผ ๋ชจ๋‘ ํ™•๋ณดํ•œ ํ›„ ์•ž์— 3์ž๋ฆฌ ์‚ฌ์šฉํ•˜ ๊ณ  ๋’ค์˜ 97์ž๋ฆฌ๋Š” ๋‚ญ๋น„

– INSERT/UPDATE ์‹œ ์ผ๋ฐ˜์ ์œผ๋กœ ๋” ์ข‹์€ ์„ฑ๋Šฅ

 

 VARCHAR ํ˜•์‹

– ๊ฐ€๋ณ€๊ธธ์ด ๋ฌธ์žํ˜•์œผ๋กœ VARCHAR(100)์— ‘ABC’ 3๊ธ€์ž๋ฅผ ์ €์žฅํ•  ๊ฒฝ์šฐ์— 3์ž๋ฆฌ๋งŒ ์‚ฌ์šฉ

 

SET

– ์ตœ๋Œ€ 64๊ฐœ๋ฅผ ์ค€๋น„ํ•œ ํ›„์— ์ž…๋ ฅ์€ ๊ทธ ์ค‘์—์„œ 2๊ฐœ์”ฉ ์„ธํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ

 

.

.

 

๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ํ˜•์‹(์ž์ฃผ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์œ„์ฃผ)

๋ฐ์ดํ„ฐ ํ˜•์‹ ๋ฐ”์ดํŠธ ์ˆ˜  ์„ค๋ช…
DATE 3 ๋‚ ์งœ๋Š” 1001-01-01~9999-12-31๊นŒ์ง€ ์ €์žฅ๋˜๋ฉฐ ๋‚ ์งœ ํ˜•์‹๋งŒ ์‚ฌ์šฉ.
'YYYY-MM-DD'ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉ๋จ.
TIMESTAMP 4 ๋‚ ์งœ๋Š” 1001-01-01 00:00:00~9999-12-31 23:59:59๊นŒ์ง€ ์ €์žฅ๋˜๋ฉฐ ํ˜•์‹์€ 'YYYY-MM-DD HH:MM:SS' ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉ.
time_zone์‹œ์Šคํ…œ ๋ณ€์ˆ˜์™€ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ UTC์‹œ๊ฐ„๋Œ€๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅ(์™ธ๋ถ€์—์„œ ๊ฐ€์ ธ์˜ด)

 

.

.

 

๋ณ€์ˆ˜ ์‚ฌ์šฉ 1

 

ํ”„๋กœ์‹œ์ €๋‚˜ ํ•จ์ˆ˜ ์•ˆ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด DECLARE๋ฌธ ํ•„์š”

- @๋ณ€์ˆ˜๋ช… ํ˜•์‹์ด ์•„๋‹Œ ๋ณ€์ˆ˜๋ช…๋งŒ ์‚ฌ์šฉ

SET @๋ณ€์ˆ˜์ด๋ฆ„ = ๋ณ€์ˆ˜์˜ ๊ฐ’;  -- ๋ณ€์ˆ˜์˜ ์„ ์–ธ ๋ฐ ๊ฐ’ ๋Œ€์ž…
SELECT @๋ณ€์ˆ˜์ด๋ฆ„ ; -- ๋ณ€์ˆ˜์˜ ๊ฐ’ ์ถœ๋ ฅ

 

๋ณ€์ˆ˜ ์ง€์ •ํ•˜๊ธฐ ์‹ค์Šตํ•ด๋ณด๊ธฐ (๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ํŠน๋ณ„ํžˆ ํ•˜์ง€ ์•Š๋Š”๋‹ค.)

USE sqldb;

SET @MyVAR1 = 5; -- ์ž๋ฃŒํ˜•์„ ๊ธฐ์ž…ํ•˜์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ int๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.
SET @MyVAR2 = 3;
SET @MyVAR3 = 4.25;
SET @MyVAR4 = '๊ฐ€์ˆ˜ ์ด๋ฆ„ ==> ';

SELECT @MyVAR1;
SELECT @MyVAR2 + @MyVAR3;

SELECT @MyVAR4, userName FROM usertbl WHERE height > 180;

์ฒ˜๋ฆฌ๊ฒฐ๊ณผ

 

 

๋ณ€์ˆ˜ ์‚ฌ์šฉ 2

LIMIT ๋ฌธ ์‚ฌ์šฉ์‹œ ๋ณ€์ˆ˜ ์ง€์ •

- ?๋Š” EXECUTE ๋ฌธ์„ ๋งŒ๋‚˜๋ฉด์„œ ์‹คํ–‰๊ณผ ์ฒ˜๋ฆฌ

USE sqldb;

SET @myVar1 = 3; -- myVar1๋ณ€์ˆ˜์— 3 ๋„ฃ๊ธฐ
PREPARE myQuery
FROM 'select userName, height from userTBL order by 
height limit ?'; -- ?๋Š” 3
EXECUTE myQuery USING @myVar1; -- ์ฒ˜๋ฆฌ๊ตฌ๋ฌธ ํ˜ธ์ถœ

์ฒ˜๋ฆฌ๊ฒฐ๊ณผ

 

 

.

.

 

๋ฐ์ดํ„ฐ ํ˜•์‹๊ณผ ํ˜•๋ณ€ํ™˜

CAST( )

CONVERT( ) - ๊ฑฐ์˜ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ

CAST ( expression AS ๋ฐ์ดํ„ฐํ˜•์‹ [ (๊ธธ์ด) ] )
CONVERT ( expression, ๋ฐ์ดํ„ฐํ˜•์‹ [ (๊ธธ์ด) ] )

 

๋ฐ˜์˜ฌ๋ฆผํ•œ ์ •์ˆ˜์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์ œ

USE sqldb;

SELECT CAST(AVG(amount) AS SIGNED INTEGER) AS 'ํ‰๊ท  ๊ตฌ๋งค ๊ฐœ์ˆ˜' FROM buytbl;
SELECT convert(AVG(amount) AS SIGNED INTEGER) AS 'ํ‰๊ท  ๊ตฌ๋งค ๊ฐœ์ˆ˜' FROM buytbl;

์ฒ˜๋ฆฌ๊ฒฐ๊ณผ

 

 

.

.

 

์ œ์–ด ํ๋ฆ„ ํ•จ์ˆ˜ - ํ”„๋กœ๊ทธ๋žจ ํ๋ฆ„ ์ œ์–ด

 

IF(์ˆ˜์‹,์ฐธ,๊ฑฐ์ง“)

- ์ˆ˜์‹์˜ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ 2์ค‘ ๋ถ„๊ธฐ

- SELECT IF(100>200, '์ฐธ์ด๋‹ค', '๊ฑฐ์ง“์ด๋‹ค');  -- ์‚ผํ•ญ์—ฐ์‚ฐ

 

IFNULL(์ˆ˜์‹1, ์ˆ˜์‹2)

-์ˆ˜์‹1์ด NULL์ด ์•„๋‹ˆ๋ฉด ์ˆ˜์‹1 ๋ฐ˜ํ™˜

-์ˆ˜์‹1์ด NULL ์ด๋ฉด ์ˆ˜์‹2 ๋ฐ˜ํ™˜

-SELECT IFNULL(NULL, '๋„์ด๊ตฐ์š”'), IFNULL(100,'๋„์ด๊ตฐ์š”');

-์ฒซ ๋ฒˆ์งธ '๋„์ด๊ตฐ์š”' ์ถœ๋ ฅ, ๋‘ ๋ฒˆ์งธ๋Š” 100 ์ถœ๋ ฅ

 

 

.

.

 

 

<๋ฌธ์ž์—ด ํ•จ์ˆ˜ - ๋ฌธ์ž์—ด์„ ์กฐ์ž‘ํ•จ>

 

CONCAT(๋ฌธ์ž์—ด1, ๋ฌธ์ž์—ด2, ...), (CONCAT_WS(๊ตฌ๋ถ„์ž, ๋ฌธ์ž์—ด1, ๋ฌธ์ž์—ด2,...)

- ๋ฌธ์ž์—ด์„ ์ด์–ด์คŒ

- CONCAT_WS( )๋Š” ๊ตฌ๋ถ„์ž ํฌํ•จ ๋ฌธ์ž์—ด์„ ์ด์–ด์คŒ

 

.

.

 

INSERT(๊ธฐ์ค€ ๋ฌธ์ž์—ด, ์œ„์น˜, ๊ธธ์ด, ์‚ฝ์ž…ํ•  ๋ฌธ์ž์—ด)

- ๊ธฐ์ค€ ๋ฌธ์ž์—ด์˜ ์œ„์น˜๋ถ€ํ„ฐ ๊ธธ์ด๋งŒํผ์„ ์ง€์šฐ๊ณ  ์‚ฝ์ž…ํ•  ๋ฌธ์ž์—ด์„ ๋ผ์›Œ ๋„ฃ์Œ

 

ex)

SELECT INSERT('kangeunhee', 5, 3, 'joung')

์‹คํ–‰๊ฒฐ๊ณผ

 

.

.

 

TRIM(๋ฌธ์ž์—ด), TRIM(๋ฐฉํ–ฅ ์ž๋ฅผ ๋ฌธ์ž์—ด FROM ๋ฌธ์ž์—ด)

- ๋ฌธ์ž์—ด์˜ ์•ž๋’ค ๊ณต๋ฐฑ์„ ๋ชจ๋‘ ์—†์•ฐ

 

ex)

SELECT TRIM('   EUNHEE  ');

์‹คํ–‰๊ฒฐ๊ณผ

 

.

.

 

REPEAT(๋ฌธ์ž์—ด, ํšŸ์ˆ˜)

-๋ฌธ์ž์—ด์„ ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต

 

REPLACE(๋ฌธ์ž์—ด, ์›๋ž˜ ๋ฌธ์ž์—ด, ๋ฐ”๊ฟ€ ๋ฌธ์ž์—ด)

-๋ฌธ์ž์—ด์—์„œ ์›๋ž˜ ๋ฌธ์ž์—ด์„ ์ฐพ์•„์„œ ๋ฐ”๊ฟ€ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ”์คŒ

 

REVERSE(๋ฌธ์ž์—ด)

-๋ฌธ์ž์—ด์˜ ์ˆœ์„œ๋ฅผ ๊ฑฐ๊พธ๋กœ

 

ex)

SELECT REPEAT('bom', 2)  -->์‹คํ–‰๊ฒฐ๊ณผ : bom bom

SELECT REPLACE('kim bom', 'bom', 'hong'); -->์‹คํ–‰๊ฒฐ๊ณผ : kim hong

SELECT REVERSE('bom'); -->์‹คํ–‰๊ฒฐ๊ณผ : mob

 

.

.

 

SPACE(๊ธธ์ด)

-๊ธธ์ด ๋งŒํผ์˜ ๊ณต๋ฐฑ ๋ฐ˜ํ™˜

 

SUBSTRING(๋ฌธ์ž์—ด, ์‹œ์ž‘์œ„์น˜, ๊ธธ์ด) ๋˜๋Š” SUBSTRING(๋ฌธ์ž์—ด FROM ์‹œ์ž‘์œ„์น˜ FOR ๊ธธ์ด)

-์‹œ์ž‘ ์œ„์น˜๋ถ€ํ„ฐ ๊ธธ์ด๋งŒํผ ๋ฌธ์ž ๋ฐ˜ํ™˜

 

SUBSTRING_INDEX(๋ฌธ์ž์—ด, ๊ตฌ๋ถ„์ž, ํšŸ์ˆ˜)

-๋ฌธ์ž์—ด์—์„œ ๊ตฌ๋ถ„์ž๊ฐ€ ์™ผ์ชฝ๋ถ€ํ„ฐ ํšŸ์ˆ˜ ๋ฒˆ์งธ ๋‚˜์˜ค๋ฉด ๊ทธ ์ดํ›„์˜ ์˜ค๋ฅธ์ชฝ์€ ๋ฒ„๋ฆผ. ํšŸ์ˆ˜๊ฐ€ ์Œ์ˆ˜๋ฉด ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ ์„ธ๊ณ  ์™ผ์ชฝ์„ ๋ฒ„๋ฆผ

 

ex)

SELECT SPACE(5); -->์‹คํ–‰๊ฒฐ๊ณผ : SPACE(5)

SELECT SUBSTRING('kimbom', 4, 3) ; -->์‹คํ–‰๊ฒฐ๊ณผ : bom

SELECT SUBSTRING_INDEX('kimbom', 'm', 1); -->์‹คํ–‰๊ฒฐ๊ณผ : kimbo

 

.

.

 

 

<์ˆ˜ํ•™ ํ•จ์ˆ˜>

 

ABS(์ˆซ์ž)

- ์ˆซ์ž์˜ ์ ˆ๋Œ€๊ฐ’ ๊ณ„์‚ฐ : ์˜ˆ๋ฅผ ๋“ค๋ฉด ์Œ์ˆ˜๊ฐ’์„ ์ž…๋ ฅํ•ด๋„ ์•Œ์•„์„œ ์ •์ˆ˜๋„ ๋ณ€ํ™˜์‹œ์ผœ์ฃผ๋Š” ์• .

 

ex)

 SELECT ABS(-5)  -->์‹คํ–‰๊ฒฐ๊ณผ : 5

 

.

.

 

CEILING(์ˆซ์ž) = CEIL( ) 

-์˜ฌ๋ฆผ : ์†Œ์ˆซ์  ๋ฐ˜์˜ฌ๋ฆผ

 

FLOOR(์ˆซ์ž)

- ๋‚ด๋ฆผ : ์†Œ์ˆซ์  ๋ฌด์กฐ๊ฑด ๋ฒ„๋ฆผ

 

ROUND(์ˆซ์ž) 

- ๋ฐ˜์˜ฌ๋ฆผ : ์†Œ์ˆซ์ ์ด 5~9์ผ๋•Œ ๋ฐ˜์˜ฌ๋ฆผ

 

ex)

SELECT CEILING(3.5), FLOOR(3.5), ROUND(3.5);

์‹คํ–‰๊ฒฐ๊ณผ

 

.

.

 

 

MOD(์ˆซ์ž1, ์ˆซ์ž2)  ๋˜๋Š”  ์ˆซ์ž1 % ์ˆซ์ž2  ๋˜๋Š” ์ˆซ์ž1 MOD ์ˆซ์ž2

- ์ˆซ์ž1์„ ์ˆซ์ž2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’

 

ex)

SELECT MOD(5, 2);
SELECT 5 % 2 ;
SELECT 5 MOD 2 ;

์‹คํ–‰๊ฒฐ๊ณผ

 

.

.

 

POW(์ˆซ์ž1, ์ˆซ์ž2), SQRT(์ˆซ์ž) = POWER( )

- ์ œ๊ณฑ๊ทผ

 

ex)

SELECT POW(2,4);

SELECT SQRT(9);

์‹คํ–‰๊ฒฐ๊ณผ

 

.

.

 

RAND( )

- ๋žœ๋ค์ˆซ์ž

- 0 <= x < 1

- 0์ด์ƒ 1๋ฏธ๋งŒ์˜ ์‹ค์ˆ˜๋ฅผ ๊ตฌํ•จ

- ๋งŒ์•ฝ, ‘m<= ์ž„์˜์˜ ์ •์ˆ˜ < n’๋ฅผ ๊ตฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด FLOOR(m + (RAND( ) * (n-m) )์„ ์‚ฌ์šฉ!

select FLOOR(1 + (RAND() * (10-1) ));  -- ์™ธ์›Œ๋‘๋ฉด ํŽธํ•˜๋‹ค

 

.

.

.

 

<๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ ํ•จ์ˆ˜>

 

CURDATE( )

- ํ˜„์žฌ ์—ฐ-์›”-์ผ

SELECT CURDATE()  -->์‹คํ–‰๊ฒฐ๊ณผ : 2022-12-30

 

.

.

 

DATEDIFF(๋‚ ์งœ1, ๋‚ ์งœ2)

 

TIMEDIFF(๋‚ ์งœ1 ๋˜๋Š” ์‹œ๊ฐ„1, ๋‚ ์งœ1 ๋˜๋Š” ์‹œ๊ฐ„2)

 

DAYOFWEEK(๋‚ ์งœ)

 

.

.

 

 

LAST_DAY(๋‚ ์งœ)

-์ฃผ์–ด์ง„ ๋‚ ์งœ์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ ๊ตฌํ•จ

-์ฃผ๋กœ ๊ทธ ๋‹ฌ์ด ๋ช‡ ์ผ๊นŒ์ง€ ์žˆ๋Š”์ง€ ํ™•์ผํ•  ๋•Œ ์‚ฌ์šฉ

SELECT LAST_DAY('2020-05-01');

 

.

.

 


MAKEDATE(์—ฐ๋„, ์ •์ˆ˜)

- ์—ฐ๋„์—์„œ ์ •์ˆ˜๋งŒํผ ์ง€๋‚œ ๋‚ ์งœ ๊ตฌํ•จ

SELECT MAKEDATE(2020, 32);

 

.

.

.

 

<์‹œ์Šคํ…œ ์ •๋ณด ํ•จ์ˆ˜>

 

USER( ), DATEBASE( )

- ํ˜„์žฌ ์‚ฌ์šฉ์ž ๋ฐ ํ˜„์žฌ ์„ ํƒ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

SELECT CURRENT_USER(), DATABASE();

 

.

.

 

SLEEP(์ดˆ) 

-์ฟผ๋ฆฌ์˜ ์‹คํ–‰์„ ์ž ๊น ๋ฉˆ์ถค(๋”œ๋ ˆ์ด)

SELECT SLEEP(5);

SELECT '์ง ~ 5์ดˆ๊ฐ€ ์ง€๋‚˜์„œ ์ œ๊ฐ€ ๋ณด์—ฌ์š”'