Database - 필드와 레코드

Tae Yun Choi·2023년 5월 12일
0
post-thumbnail

예시

  • Entity - Member Table
  • 속성의 이름 - name, ID, address phoneNumber Field
  • 각각의 Row - Record, Tuple

필드 타입 (MySQL 기준)

숫자 타입

타입용량최솟값 (signed)최댓값 (signed)최솟값 (unsigned)최댓값 (unsigned)
TINYINT1-2^72^7 - 102^8 - 1
SMALLINT2-2^152^15 - 102^16 - 1
MEDIUMINT3-2^232^23 - 102^24 - 1
INT4-2^312^31 -102^32 - 1
BIGINT8-2^632^63 - 102^64 - 1

날짜 타입

DATE

  • 날짜 부분 포함, 시간 부분 미포함
  • 지원 범위 - 1000-01-01 ~ 9999-12-31, 총 3바이트

DATETIME

  • 날짜 및 시간 부분 모두 포함
  • 지원 범위 - 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59, 총 8바이트

TIMESTAMP

  • 날짜 및 시간 부분 모두 포함
  • 지원 범위 - 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07, 총 4바이트

문자 타입

CHAR & VARCHAR

  • CHAR or VARCHAR 모두 문자 수를 지정할 수 있음
  • CHAR는 테이블을 생성할 때 선언한 길이로 고정됨 - 0 ~ 255 사이의 값을 가짐
    • ex) CHAR(30) - 최대 30글자, 한 글자를 넣든 두 글자를 넣든 30바이트의 공간 차지
    • 30Byte넘으면 데이터 잘림 - VARCHAR도 동일
    • MySQL 5.0.3 이후부터 괄호 안의 숫자가 바이트가 아닌 글자 수를 의미함
  • 그에 반해 VARCHAR는 유동적으로 데이터 길이에 따라 공간이 정하짐
    • ex) VARCHAR(8) - 한글자를 넣으면 1바이트만 차지하게 됨
  • CHAR는 공간의 낭비가 있을 수 있지만, 추후 연산이 필요하지 않기 때문에 검색속도 및 읽히는 속도가 VARCHAR에 비해 빠르다는 장점이 있으므로, 글자 수가 고정되는 경우에 사용하면 효율적
  • VARCHAR는 입력받은 데이터의 크기가 작을 경우 메모리 절약 가능
  • 한글은 한 글자당 3바이트, 영문자는 알파벳 하나당 1바이트

TEXT & BLOB

  • Text - 게시판 본문 등, 문자열이 길 때 사용
  • BLOB - 이미지, 동영상 등 큰 데이터 저장에 사용
    • S3를 이용할 때는 파일 경로를 저장

TEXT VS VARCHAR

max size limit길이를 표현하기 위한 공간복잡도 오버헤드
VARCHAR1 ~ 65535길이 ~255 = 1byte (8bit) 256 ~ 65535 = 2byte(16bit)
TEXTonly 65535무조건 2byte

ENUM & SET

  • ENUM & SET 모두 문자열 열거 타입
  • ENUM('x—small', 'small', 'medium', 'large', 'x-large') 형태로 쓰임
  • 단일 선택만 가능하며 열거한 문자열들이 0부터 차례대로 숫자에 매핑되어 메모리를 적게 사용 가능
  • 최대 65535개를 넣을 수 있음
  • SET은 ENUM과 비슷하지만 여러 개의 데이터를 선택할 수 있고 비트 단위의 연산을 할
    수 있으며 최대 64 개의 요소를 집어넣을 수 있다는 점이 다름

예상질문

  • CHAR와 VARCHAR의 차이점에 대해 설명해주세요

출처

profile
hello dev!!

0개의 댓글