Knowledge🦒/SQL

[SQL] ν…Œμ΄λΈ” μžλ£Œν˜• μ’…λ₯˜

파카파였 2024. 4. 19. 20:56

ν…Œμ΄λΈ”μ„ 생성할떄 μ»¬λŸΌμ— λ“€μ–΄κ°ˆ 데이터에 λŒ€ν•œ μ œμ•½μ‘°κ±΄μ„ κ±Έμ—ˆμ—ˆλŠ”λ°, κ·Έ μ•ˆμ—μ„œ μ»¬λŸΌμ— λ“€μ–΄κ°ˆ μžλ£Œν˜•λ„ μ§€μ • ν•  수 μžˆλ‹€.
μ–΄λ–€ μžλ£Œν˜•μ΄ μžˆλŠ”μ§€ κ°„λ‹¨νžˆ μ•Œμ•„λ³΄μž

μžλ£Œν˜•

(μ»΄ν“¨ν„°λŠ” λͺ¨λ“  데이터λ₯Ό 0κ³Ό 1둜 μΈμ‹ν•˜λŠ” 것을 λ‹€μ‹œ μƒκΈ°ν•˜κΈ°)

ν…Œμ΄λΈ”μ˜ 각 컬럼(μ—΄ 데이터)λ“€λ§ˆλ‹€ μ–΄λ–€ μžλ£Œν˜•μ΄ λ“€μ–΄κ°ˆ 것인지 λͺ…μ‹œν•΄μ•Ό(μˆ«μžμΈμ§€, λ¬ΈμžμΈμ§€ λ“±), μ •ν™•ν•œ 데이터가 μž…λ ₯될 수 있기 λ•Œλ¬Έμ— 였λ₯˜λ₯Ό λ°©μ§€ν•  수 μžˆμ–΄ ν…Œμ΄λΈ”μ„ 생성할 λ•Œ μžλ£Œν˜•μ„ μž…λ ₯ν•΄μ€€λ‹€.
ex) 이름을 λ„£λŠ”λ° μˆ«μžκ°€ λ“€μ–΄μ˜€λ©΄ μ•ˆλ˜λ‹ˆκΉ 문자만 λ“€μ–΄μ˜¬μˆ˜ 있게 μ§€μ •ν•΄μ£ΌλŠ” 것이닀.

 

1. 숫자 μžλ£Œν˜•

 

1) μ •μˆ˜ν˜•

 

데이터 μš©λŸ‰μ— 따라 숫자 데이터 크기λ₯Ό μ„€μ •ν•œλ‹€.

  • κ°€μž₯ μž‘μ€ λ°μ΄ν„°λŠ” TINYINT => κ°€μž₯ 큰 λ°μ΄ν„°λŠ” BIGINT 순 이닀.
  • SIGNED : μŒμˆ˜λΆ€ν„° μ–‘μˆ˜κΉŒμ§€ μ‚¬μš©ν•œλ‹€.
  • UNSIGNED : 무쑰건 μ •μˆ˜λ§Œ μ‚¬μš©ν•œλ‹€.

 

 
TINYINT 1 -123 ~ 127 0 ~ 255
SMALLINT 2 -32,768 ~ 32,767 0 ~ 65,535
MEDIUMINT 3 -8,388,608 ~ 8,388,607 0 ~ 16,777,215
INT 4 -2,147,483,648 ~ 2,147,483,647 0 ~ 4,294,967,295
BIGINT 8 -2^63 ~ 2^63 -1 0 ~ 2^64 - 1

 

2) κ³ μ • μ†Œμˆ˜μ (Fixed Point) 수

 

쒁은 λ²”μœ„μ˜ 수 ν‘œν˜„μ΄ κ°€λŠ₯ν•˜κ³ , μ •ν™•ν•œ κ°’

μžλ£Œν˜•μ„€λͺ…λ²”μœ„

 

DECIMAL( s, d ) μ‹€μˆ˜ λΆ€λΆ„ 총 자릿수( s ) & μ†Œμˆ˜ λΆ€λΆ„ 자릿수 ( d ) s μ΅œλŒ€ 65

 

3) 뢀동 μ†Œμˆ˜μ (Floating Point) 수

 

넓은 λ²”μœ„μ˜ 수 ν‘œν˜„ κ°€λŠ₯, μ •ν™•ν•˜μ§€ μ•Šμ€ κ°’ (일반적으둜 μΆ©λΆ„νžˆ μ •ν™•)

μžλ£Œν˜•ν‘œν˜„ λ²”μœ„

 

FLOAT -3.402...E+38 ~ -1.175...E-38 , 0 , 1.175...E-38 ~ 3.402...E+38
DOUBLE -1.797...E+308 ~ -2.225E-308 , 0 , 2.225...E-308 ~ 1.797...E+308

 

 

2. 문자 μžλ£Œν˜•

 

1) λ¬Έμžμ—΄

  • μžλ£Œν˜•(s) : (s)쑰건은 ν•΄λ‹Ή 컬럼(μ—΄ 데이터)에 λͺ‡κΈ€μžλ₯Ό μ“Έ 것인지 숫자 S둜 μ΅œλŒ€ 개수 μ œν•œλ‘”λ‹€.
CHAR(s) κ³ μ • μ‚¬μ΄μ¦ˆ(λ‚¨λŠ” κΈ€μž 곡백(슀페이슀)으둜 μ±„μš°λŠ” 것) s(κ³ μ •κ°’) 255
VARCHAR(s) κ°€λ³€ μ‚¬μ΄μ¦ˆ μ‹€μ œ κΈ€μžμˆ˜[μ΅œλŒ€κ°’ s] +1 [κΈ€μžμˆ˜μ •λ³΄] 65,535

 

주의

  • κ²€μƒ‰μ‹œ CHARκ°€ 더 λΉ λ₯΄λ‹€.
    (ν•˜μ§€λ§Œ? 무쑰건 쒋은 것은 μ•„λ‹Œλ°, 이유 : λΉ„μ–΄μžˆλŠ” κ³΅κ°„λ§ŒνΌ κ³΅λ°±μ±„μ›Œμ„œ byteλ₯Ό μ“°κΈ° λ•Œλ¬Έμ— μ“Έλ°μ—†λŠ” 데이터λ₯Ό 더 μ“Έ κ°€λŠ₯μ„± μ΄μžˆλ‹€.)
  • VARCHAR 컬럼 길이 값이 4κΈ€μž 보닀 적을 경우 => CHAR둜 μžλ™ λ³€ν•œλœλ‹€.

 

 

2) ν…μŠ€νŠΈ

 

λ¬Έμžμ—΄λ³΄λ‹€ 더 κΈ΄ 문자의 ν…μŠ€νŠΈλ₯Ό μž‘μ„±ν•˜λŠ” 컬럼(μ—΄ 데이터)일 경우 μ‚¬μš©ν•œλ‹€. (ex) κ²Œμ‹œνŒμ˜ κΈ€)

μžλ£Œν˜•μ΅œλŒ€ λ°”μ΄νŠΈ 크기

 

TINYTEXT 255
TEXT 65,535
MEDIUMTEXT 16,777,215
LONGTEXT 4,294,967,295

 

 

3) μ‹œκ°„ μžλ£Œν˜•

  • DATE : μ—°,μ›”,일
  • TIME : μ‹œ,λΆ„,초
  • DATETIME : μ‹œκ°„ 데이터λ₯Ό 가감없이 기둝할 경우 μ‚¬μš©
  • TIMESTAMP : μ‹œκ°„ μžλ™κΈ°λ‘, ꡭ제적인 μ„œλΉ„μŠ€λ₯Ό ν•  κ²½μš°μ‚¬μš©

 

DATE YYYY-MM-DD  
TIME HHH:MI:SS HHH: -838 ~ 838κΉŒμ§€μ˜ μ‹œκ°„
DATETIME YYYY-MM-DD HH:MI:SS λ‚΄κ°€ μž…λ ₯ν•œ, μž…λ ₯된 μ‹œκ°„μ„ κ·Έ κ°’ 자체둜 μ €μž₯(μ–΄λ””μ„œλ“  λ™μΌν•œ κ°’)
TIMESTAMP YYYY-MM-DD HH:MI:SS MySQL이 μ„€μΉ˜λœ μ»΄ν“¨ν„°μ˜ μ‹œκ°„λŒ€λ₯Ό κΈ°μ€€μœΌλ‘œ μ €μž₯, 각 κ΅­κ°€μ˜ μ‹œκ°„λŒ€λ§ˆλ‹€ 달라짐
 

 

# Reference

https://velog.io/@estell/SQL-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%9E%90%EB%A3%8C%ED%98%95%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90