데이터 베이스 데이터 유형

Sangyeong Je·2022년 9월 26일
0

프로그래밍

목록 보기
2/11

MySQL

  • 타입은 작을수록 좋다
    일반적으로 데이터를 저장하고 표현하는 데 문제가 없는 데이터 타입 중 가장 작은 것을 골라야 한다. 보통 작은 데이터 타입일수록 디스크나 메모리, CPU 캐시에 더 적은 공간을 사용하기 때문에 더 빠르며 덜 소비한다.

    하지만 저장할 값의 크기를 너무 작게 추정하지 않도록 주의해야 한다. 스키마의 이곳저곳에서 데이터 타입의 범위를 늘리는 작업은 어렵고, 시간을 많이 소모하기 때문이다.

  • 타입은 단순한 게 좋다
    보통 간단한 데이터 타입을 처리할수록 CPU 사이클로 덜 소비한다. 예로 문자 비교는 문자 셋 (Character set)과 콜레이션 (Collation)으로 인해 복잡해지므로, 문자 비교보다는 정수 비교가 비용이 더 저렴하다. 날짜와 시간은 문자열로 저장하지 말고, MySQL의 내장 형식에 저장해야 하며 IP 주소는 정수를 이용해 저장해야 한다.

    IP 주소를 사용할 수 있는 함수로 INET_ATON 함수와 INET_NTOA 함수가 있으니 참고

  • 가능하면 NULL을 쓰지 말자
    컬럼은 되도록 NOT NULL (NULL 허용 안 함)로 정의해야 한다. NULL 허용이 기본값이다 보니 사용하는 응용 프로그램이 NULL을 저장할 필요가 없을 때조차 테이블에 NULL을 허용하는 컬럼을 포함한 경우가 많다. NULL을 저장할 의도가 아니라면 컬럼을 NOT NULL로 정의하자.

    NULL 허용 컬럼은 저장 공간도 더 많이 사용하며 NULL 허용 컬럼을 인덱싱할 땐 항목마다 한 바이트씩 더 들어간다. 만약 ‘값이 없다’라는 사실을 테이블에 기록해야 하더라도 굳이 NULL을 쓸 필요는 없을지 모른다. NULL 대신 0이나 특수한 어떤 값, 빈 문자열 등을 사용하는 걸 고려해보자.

숫자형 데이터 유형

  • 숫자형 데이터 유형은 정수형과 실수형으로 나눌 수 있다.
  • 실수형 타입은 키(160.24cm)나 몸무게(56.24kg), 온도(36.5도) 처럼 정밀한 값이 요구되는 컬럼에는 실수형 데이터 유형을 지정해야함.
데이터 유형정의
TINYINT정수형 데이터 타입(1byte) -128 ~ +127 또는 0 ~ 255수 표현할 수 있다.
SMALLINT정수형 데이터 타입(2byte) -32768 ~ 32767 또는 0 ~ 65536수 표현할 수 있다.
MEDIUMINT정수형 데이터 타입(3byte) -8388608 ~ +8388607 또는 0 ~ 16777215수 표현할 수 있다.
INT정수형 데이터 타입(4byte) -2147483648 ~ +2147483647 또는 0 ~ 4294967295수 표현할 수 있다.
BIGINT정수형 데이터 타입(8byte) - 무제한 수 표현할 수 있다.
FLOAT(길이, 소수)부동 소수형 데이터 타입(4byte) -고정 소수점을 사용 형태이다.
DECIMAL(길이, 소수)고정 소수형 데이터 타입고정(길이+1byte) -소수점을 사용 형태이다.
DOUBLE(길이, 소수)부동 소수형 데이터 타입(8byte) -DOUBLE을 문자열로 저장한다.

문자형 데이터 유형

  • CHAR(5)는 항상 5만큼의 저장용량을 차지, VARCHAR(5)는 값이 'BYE'라면 3만큼 차지하지만 값이 저장될때 값의 사이즈를 나타내는부분이 저장용량에 추가됨. 따라서
    값의 길이가 크게 변하지않으면 CHAR, 크게 변하면 VARCHAR을 쓰는게 좋음
데이터 유형정의
CHAR고정 길이 데이터 타입(최대 255byte)- 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간 공백으로 채워진다.
VARCHAR가변 길이 데이터 타입(최대 65535byte)- 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간은 채우지 않는다.
TINYTEXT문자열 데이터 타입(최대 255byte)
TEXT문자열 데이터 타입(최대 65535byte)
MEDIUMTEXT문자열 데이터 타입(최대 16777215byte)
LONGTEXT문자열 데이터 타입(최대 4294967295byte)
JSONJSON 문자열 데이터 타입 - JSON 형태의 포맷을 꼭 준수해야 한다.

날짜형 데이터 유형

데이터 유형정의
DATE날짜(년도, 월, 일) 형태의 기간 표현 데이터 타입(3byte)
TIME시간(시, 분, 초) 형태의 기간 표현 데이터 타입(3byte)
DATETIME날짜와 시간 형태의 기간 표현 데이터 타입(8byte)
TIMESTAMP날짜와 시간 형태의 기간 표현 데이터 타입(4byte) -시스템 변경 시 자동으로 그 날짜와 시간이 저장된다.
YEAR년도 표현 데이터 타입(1byte)

이진 데이터 유형

데이터 유형정의
BINARY & BYTECHAR의 형태의 이진 데이터 타입 (최대 255byte)
VARBINARYVARCHAR의 형태의 이진 데이터 타입 (최대 65535byte)
TINYBLOB이진 데이터 타입 (최대 255byte)
BLOB이진 데이터 타입 (최대 65535byte)
MEDIUMBLOB이진 데이터 타입 (최대 16777215byte)
LONGBLOB이진 데이터 타입 (최대 4294967295byte)

-참조

0개의 댓글