SQL 데이터 타입 및 데이터 정의문

조창훈·2023년 10월 16일

데이터베이스-SQL,DB

목록 보기
10/10

표준 SQL의 데이터 타입

  • 숫자형
    • 정수형
      • INTEGER, SMALLINT...
    • 실수형
      • FLOAT, DECIMAL, REAL, DOUBLE
  • 문자형
    • 고정길이 : CHAR
    • 가변길이 : VARCHAR
  • 날짜형
    • DATE
    • TIME
    • TIMESTAMP : DATE+TIME
    • INTERVAL

MySQL의 데이터 타입

  1. 숫자형
  2. 문자형
  3. 이진문자형
  4. 날짜형

숫자형

  • 정수형
    • TINYINT : 1byte 0 ~ 28-1 이다. (-128 ~ +127)
    • SMALLINT : 2byte 0 ~ 216-1 이다. (-32768 ~ +32767)
    • MEDIUMINT : 3byte 0 ~ 224-1 이다. (-8388608 ~ +8388607)
    • INT : 4byte 0 ~ 232-1 이다. (-2147483648 ~ +2147483647)
    • BIGINT : 8byte 0 ~ 28-1 이다.
  • 실수형
    • DEMICAL(p,s)
      • p = 전체자리수, s 소수점 자리수
      • ex) DEMICAL(5,2)는 -999.99 ~ 999.99의 범위를 가지는 타입이다.

기본적으로 컬럼의 디폴트 부호특성(-를 포함하는가 안하는가)는 포함하는것(SIGNED)로 되어있다.

문자형

  • 고정길이 : CHAR(n)
    • 항상 n 개의 문자열을 저장함(같은 데이터타입이라면 n길이의 문자열밖에 저장못함)
  • 가변길이 : VARCHAR(n)
    • 최대 n 개의 문자열을 저장할 수 있음.
    • 이 경우, 문자열의 길이가 데이터마다 다를 수 있으므로, 데이터의 길이를 저장
    • 실제로 저장되는 데이터 형태 = 데이터의 길이 + 데이터
    • 최대 길이는 65535까지 저장가능
  • TEXT문자열
    • 위 가변길이 타입과 같지만, 데이터의 길이가 미리 정해져 있음
    • 타입에 따라 정해져 있는 길이가 달라짐
  • ENUM(a,b,c...) 나열형
    • 나열된 문자열 중 단 하나의 값만 가지는 타입
    • 즉 a,b,c중 하나의 값만 가질 수 있다.
  • SET(a,b,c...) : 나열형 다중값
    • 나열된 문자열 중 NULL을 포함해서 1개이상의 문자열을 갖는 타입
    • 값들은 ,로 구분함

고정길이와 가변길이의 차이점

  • 고정길이는 유저가 입력한 문자열을 그대로 저장하지 않고, 길이에 맞춰서 공백문자를 넣어서 저장하게 된다.
  • 검색할 경우, MySQL의 경우에는 공백문자를 제거하고 보여주고, 다른 대부분의 DBMS의 경우에는 그대로 보여준다.

문자열의 비교 방법

  • CHAR
    • 두 개의 데이터가 있을 때, 짧은쪽의 데이터에 차이나는 길이만큼 공백 문자를 더하여, 같은 길이를 만든 뒤 비교하게 된다.
    • "name" 이라는 값과 "name "이라는 값이 있을때 첫 번째 값에 공백을 하나 추가하고, 비교하게 된다. 결과값은 참으로 나오게 된다.
  • VARCHAR
    • 맨 처음부터 한 문자씩 비교
장단점
  • VARCHAR - CHAR에 비해서 작은 공간을 사용
  • VARCHAR는 CHAR에 비해서 접근 속도가 느려질 수 있음

    표의 5번째 줄 두 번째 열을 보면 길이를 넘어서 저장하는 값이 사라지는 것을 알 수 있다.

이진문자형

  • 고정길이
  • 가변길이
  • BLOB

날짜형

  • YEAR
  • DATE
  • TIME, TIME(fsp)
  • DATETIME
  • TIMESTAMP

DATETIME과 TIMESTAMP의 차이

  • TIMESTAMP는 사실 1970-01-01 00:00:01.000000 UTC 부터의 초의 개수이고, 카운터로 계산이 된다.
  • 즉 데이터가 4byte만 차지하게 된다.
  • 하지만 보여줄 때 계산과정이 들어가게됨 알아서 잘 판단하고 사용
profile
초전도-개발자의 길

0개의 댓글