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μ΄ˆκ°€ μ§€λ‚˜μ„œ μ œκ°€ λ³΄μ—¬μš”'