Number

숫자 데이터 νƒ€μž…μ€ κ°’μ˜ μ •ν™•ν•œ μ €μž₯ 여뢀와 값을 μ €μž₯ν•˜λŠ” λ‚΄λΆ€ ν˜•μ‹μ— 따라 λ‚˜λˆŒ 수 μžˆλ‹€.

  • μ°Έκ°’ νƒ€μž…: 값을 λ³€ν˜• 없이 κ·ΈλŒ€λ‘œ μ €μž₯ν•˜λŠ” νƒ€μž…(INTEGER, DECIMAL)

  • κ·Όμ‚Ώκ°’ νƒ€μž…: 뢀동 μ†Œμˆ˜μ  λ°©μ‹μœΌλ‘œ 값을 μ €μž₯ν•˜λ©°, 이 κ³Όμ •μ—μ„œ λ―Έμ„Έν•œ μ˜€μ°¨κ°€ λ°œμƒν•  수 μžˆλŠ” νƒ€μž…(FLOAT, DOUBLE)

  • 이진 ν‘œκΈ°λ²•: CPUκ°€ κ°€μž₯ 효율적으둜 μ²˜λ¦¬ν•  수 μžˆλŠ” μ΄μ§„μˆ˜ ν˜•νƒœλ‘œ 값을 μ €μž₯ν•˜λŠ” νƒ€μž…, μ €μž₯ 곡간 효율이 μ’‹μŒ(λŒ€λΆ€λΆ„μ˜ 숫자 νƒ€μž…, INTEGER 계열, FLOAT, DOUBLE)

  • μ‹­μ§„ ν‘œκΈ°λ²•: 각 자릿수λ₯Ό κ°œλ³„μ μœΌλ‘œ ν‘œν˜„ν•˜μ—¬ μ €μž₯ν•˜λŠ” νƒ€μž…, 이진 ν‘œκΈ°λ²•λ³΄λ‹€ 더 λ§Žμ€ μ €μž₯ 곡간을 μ‚¬μš©ν•˜μ§€λ§Œ 였차 λ°œμƒ X(DECIMAL νƒ€μž… 유일)

μ •μˆ˜

DECIMAL νƒ€μž…μ„ μ œμ™Έν•˜κ³  μ •μˆ˜λ₯Ό μ €μž₯ν•˜λŠ” νƒ€μž…μ€ 5κ°€μ§€κ°€ μ‘΄μž¬ν•˜λ©°, 각 νƒ€μž…λ³„ λ²”μœ„λŠ” μ•„λž˜μ™€ κ°™λ‹€.

데이터 νƒ€μž…
μ €μž₯곡간(Bytes)
μ΅œμ†Ÿκ°’(Signed)
μ΅œμ†Ÿκ°’(Unsigned)
μ΅œλŒ“κ°’(Signed)
μ΅œλŒ“κ°’(Unsigned)

TINYINT

1

-128

0

127

255

SMALLINT

2

-32,768

0

32,767

65,535

MEDIUMINT

3

-8,388,608

0

8,388,607

16,777,215

INT

4

-2,147,483,648

0

2,147,483,647

4,294,967,295

BIGINT

8

-9,223,372,036,854,775,808

0

9,223,372,036,854,775,807

18,446,744,073,709,551,615

UNSIGNED μ˜΅μ…˜ μ‚¬μš©μ€ 인덱슀의 μ‚¬μš© 여뢀에 영ν–₯을 λΌμΉ˜μ§„ μ•Šμ§€λ§Œ, λ²”μœ„κ°€ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— 쑰인 μ‹œμ—” 각 νƒ€μž…λ³„λ‘œ λ™μΌν•œ νƒ€μž…μ„ μ‚¬μš©ν•˜λŠ” 것이 μ’‹λ‹€.

뢀동 μ†Œμˆ˜μ 

FLOAT와 DOUBLE νƒ€μž…μ€ μ‹€μˆ˜λ₯Ό κ·Όμ‚¬μΉ˜λ‘œ ν‘œν˜„ν•œλ‹€.

  • IEEE 754 ν‘œμ€€μ— 따라 이진 뢀동 μ†Œμˆ˜μ  λ°©μ‹μœΌλ‘œ 값을 μ €μž₯

  • 일뢀 μ‹­μ§„ μ†Œμˆ˜λ₯Ό μ •ν™•ν•˜κ²Œ ν‘œν˜„ν•˜μ§€ λͺ»ν•˜λŠ” ν•œκ³„λ₯Ό 가짐

  • μ‹­μ§„μˆ˜ 0.1 -> μ΄μ§„μˆ˜λ‘œ ν‘œν˜„ λΆˆκ°€λŠ₯ν•˜μ—¬ κ°€μž₯ κ°€κΉŒμš΄ κ°’μœΌλ‘œ μ €μž₯

μ΄λŸ¬ν•œ νŠΉμ„± λ•Œλ¬Έμ— 뢀동 μ†Œμˆ˜μ  νƒ€μž…μ˜ μ»¬λŸΌμ„ 동등 비ꡐ(=) 쑰건으둜 μ‚¬μš©ν•˜λŠ” 것은 잠재적인 버그λ₯Ό μœ λ°œν•  수 μžˆλ‹€.

DECIMAL

DECIMAL νƒ€μž…μ€ κ³ μ • μ†Œμˆ˜μ  νƒ€μž…μœΌλ‘œ, 숫자λ₯Ό λ‚΄λΆ€μ μœΌλ‘œ λ¬Έμžμ—΄μ΄λ‚˜ 이진 ν˜•νƒœμ˜ μ‹­μ§„ ν‘œκΈ°λ²•μœΌλ‘œ μ €μž₯ν•˜μ—¬ μ†Œμˆ˜μ  μ•„λž˜ μžλ¦Ώμˆ˜κΉŒμ§€ μ •ν™•ν•˜κ²Œ ν‘œν˜„ν•œλ‹€.

  • 자릿수만큼 κ³ μ •λœ 크기둜 μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ— λ©”λͺ¨λ¦¬λ‚˜ λ””μŠ€ν¬ 곡간을 많이 μ‚¬μš©

  • DECIMAL(P, S)와 같이 μ„ μ–Έν•˜λ©°, P(Precision)λŠ” μ†Œμˆ˜μ μ„ ν¬ν•¨ν•œ 전체 유효 숫자의 자릿수λ₯Ό, S(Scale)λŠ” μ†Œμˆ˜μ  μ΄ν•˜μ˜ 자릿수λ₯Ό 의미

μ†Œμˆ˜μ μ—μ„œ μ •ν™•ν•œ 값을 보μž₯ν•  수 μžˆμ§€λ§Œ, μ €μž₯ 곡간과 μ—°μ‚° 속도 μΈ‘λ©΄μ—μ„œ νŠΈλ ˆμ΄λ“œμ˜€ν”„κ°€ μ‘΄μž¬ν•œλ‹€.

  • μ €μž₯ 곡간: 이진 ν‘œκΈ°λ²•μ„ μ‚¬μš©ν•˜λŠ” λ‹€λ₯Έ 숫자 νƒ€μž…λ³΄λ‹€ 더 λ§Žμ€ μ €μž₯ 곡간 μš”κ΅¬

  • μ—°μ‚° 속도: CPUκ°€ 직접 μ²˜λ¦¬ν•˜λŠ” 이진 연산에 λΉ„ν•΄ μ†Œν”„νŠΈμ›¨μ–΄μ μœΌλ‘œ μ²˜λ¦¬λ˜λ―€λ‘œ μƒλŒ€μ μœΌλ‘œ 느림

λ”°λΌμ„œ λͺ¨λ“  숫자 νƒ€μž…μ— DECIMAL을 μ‚¬μš©ν•˜λŠ” 것은 λΉ„νš¨μœ¨μ μ΄λ©°, 였차 μ—†λŠ” μ†Œμˆ˜μ  연산이 λ°˜λ“œμ‹œ ν•„μš”ν•œ κ²½μš°μ—λ§Œ DECIMAL을 μ„ νƒν•˜λŠ” 것이 μ’‹λ‹€.

참고자료

Last updated

Was this helpful?