프로그래밍/DataBase

[MySQL] 03. 데이터 타입 - 숫자 타입

Churnobyl 2023. 2. 25. 13:26
728x90
반응형

SQL 프로그램들의 자료형 표현식

Chapter 04.  데이터 타입

MySQL은 다음과 같은 데이터 타입을 지원한다

 

1. 숫자 타입 (numeric types)

2. 날짜 및 시간 타입 (date and time types)

3. 문자열 타입 (character and byte types)

4. 공간 타입 (spatial types)

5. JSON 데이터 타입 (JSON data types)

 

 


1. 숫자 타입 (numeric types)


 

1.1 숫자 타입 구문

M에 대해서 알아야 한다

1. 정수 타입의 경우 M은 최대 표시 너비를 뜻하고 최대 표시 너비는 255이다 (MySQL 8.0.17부터 사용되지 않을 예정)

2. 부동 소수점 및 고정 소수점 타입의 경우 M은 저장할 수 있는 총 자릿수이다

 


  • BIT(M)

비트의 값을 저장할 수 있다. M은 1부터 64까지 설정할 수 있다. M이 생략된 경우 기본값은 1이다

ALTER TABLE table1  # table1에 M이 7인 BIT타입 field1을 추가한다
ADD field1 BIT(7);

INSERT INTO table1(field1)  # table1의 field1에 b'10010'이라는 값을 추가한다
       VALUES(b'10010');

# DB출력: 18

 


  • BOOL(=BOOLEAN)

TINYINT(1)와 동일. 1은 TRUE, 0은 FALSE, 그리고 0이 아닌 값들을 TRUE로 간주된다. 하지만 1, 0이 각각 TRUE, FALSE인 것은 aliasing일 뿐이다. 아래 예제를 참고해보자

SELECT IF(2, 'TRUE', 'FALSE');  # 2는 TRUE값으로 간주된다

# 출력: TRUE


SELECT IF(2 = TRUE, 'TRUE', 'FALSE');  # 2는 0, 1이 아니기 때문에 FALSE가 출력된다

# 출력: FALSE


SELECT IF(2 = FALSE, 'TRUE', 'FALSE');  # 2는 0, 1이 아니기 때문에 FALSE가 출력된다

# 출력: FALSE

 

 

1.2 정수 타입(Integer Type)


MySQL이 지원하는 정수 타입들의 요구 크기 및 범위(출처: MySQL Manual)

  • MySQL은 SQL 표준인 INTEGER(or INT), SMALLINT와 확장적으로 TINYINT, MEDIUMINT, BIGINT를 지원한다

 


  • TINYINT(M)

1byte값을 저장할 수 있으며 signed(-128~127), unsigned(0~255). BOOLEAN 타입 정의 시 TINYINT(1) 형식으로 정의된다. TRUE는 1, FALSE는 0으로 저장되며 호출 시에도 1, 0으로 호출된다

ALTER TABLE table1  # table1에 M이 1인 TINYINT타입 field2을 추가한다
ADD field2 TINYINT(1);

INSERT INTO table1(field2)  # table1의 field2에 TRUE라는 값을 추가한다
       VALUES(TRUE);

# DB출력: 1

 

 


  • INT(M)

4bytes값을 저장할 수 있으며 가장 많이 쓰인다. signed라면 약 +-21억, unsigned라면 약 42억의 숫자값을 저장할 수 있다.

 

 


  • BIGINT(M)

8bytes값을 저장할 수 있으며 (2^64 - 1)값까지 저장할 수 있다 ( 1byte = 2^8bit)

 

 

1.3 고정 소수점 타입(Fixed-Point Type, Exact Value)


소수를 가지고 있는 실수 데이터의 정확한 값을 저장하기 위한 타입이다.

 

 


  • DECIMAL(M, D) ( M: 전체 자릿수(Precision, 정밀도), D: 소수점 뒷자리수(Scale, 배율) ) (= DEC)
  • 동의어 : NUMERIC
ALTER TABLE table1  # table1에 M이 5, D가 2인 DECIMAL 타입 field5을 추가한다
ADD field5 DECIMAL(5,2);

INSERT INTO table1(field5)  # table1의 field5에 12.3456789이라는 값을 추가한다
       VALUES(12.3456789);

# 출력: 12.35

 

 

1.4 부동 소수점 타입(Floating-Point Type, Approximate Value)


소수를 가지고 있는 실수 데이터의 대략적인 숫자값을 저장하기 위한 타입이다

 

 


  • FLOAT(M, D) ( M: 전체 자릿수(Precision, 정밀도), D: 소수점 뒷자리수(Scale, 배율) )
ALTER TABLE table1  # table1에 M이 7, D가 4인 FLOAT 타입 field6을 추가한다
ADD field6 FLOAT(7,4);

INSERT INTO table1(field6)  # table1의 field6에 12.3456789이라는 값을 추가한다
       VALUES(12.3456789);

# 출력: 12.3457

 

 


  • DOUBLE(M, D) ( M: 전체 자릿수(Precision, 정밀도), D: 소수점 뒷자리수(Scale, 배율) )
ALTER TABLE table1  # table1에 M이 11, D가 6인 DOUBLE 타입 field7을 추가한다
ADD field7 DOUBLE(11,6);

INSERT INTO table1(field7)  # table1의 field7에 12.345678999이라는 값을 추가한다
       VALUES(123.345678999);

# 출력: 12.345679

 

반응형