[DevCourse] Day 13 - SQL 기초(3)

한상우·2023년 12월 6일
0

Data Science Devcourse

목록 보기
12/25

SQL의 숫자

  • BIT(M) : 이진법 숫자를 표현, M을 사용하여 몇 비트를 사용할지 결정
    • M의 범위는 1~64
  • TINYINT : 매우 작은 정수를 표현, 8bit(1byte) 사용
  • BOOL, BOOLEAN : TRUE, FALSE
  • SMALLINT : 작은 정수를 표현, 16bit 사용
  • MEDIUMINT : 중간 크기의 정수, 3byte 사용
  • INT, INTEGER : 정수, 4byte 사용
  • BIGINT, SERIAL : 큰 정수, 8byte 사용
  • DECIMAL(M, D), DEC, FIXED : 고정소수점 타입
  • FLOAT : 부동소수점 타입, 4byte 사용
  • DOUBLE : 큰 부동소수점 타입, 8byte 사용

SQL의 문자

  • CHAR : 고정된 길이의 문자열, maxlen = 255

  • VARCHAR : 변동 가능한 길이의 문자열, maxlen = 65535, 길이 설정 가능

  • TEXT : 변동 가능한 길이의 문자열, maxlen = 65535, 길이 설정 불가

  • TINYTEXT : 작은 TEXT, maxlen = 255

  • MEDIUMTEXT : 중간 크기 TEXT, maxlen = 16777215

  • LONGTEXT : 큰 크기 TEXT, maxlen = 4294967295

  • ENUM : enumerate type (최초에 지정해 둔 리스트에 포함되는 값만 저장)

  • SET : 최초에 지정해 둔 리스트에 포함되는 값들을 중복으로 저장

    • ENUM이나 SET의 경우 데이터 저장에 효율적이지만, 유연성 및 확장성이 낮다
  • 주의사항

    • 한글은 한 글자에 3byte 씩 사용한다!
    • CHAR(5)와 같이 사용 가능 -> 5 character를 사용한다는 뜻

SQL의 Binary Type

  • BLOB : Binary Large Object, 어떤 데이터도 다 넣을 수 있는 타입 maxlen = 65535 bytes

  • TINYBLOB : 작은 BLOB, maxlen = 255 bytes

  • MEDIUMBLOB : 중간 크기 BLOB, maxlen = 16777215 bytes

  • LONGBLOB : 큰 BLOB, maxlen = 4294967295 bytes

  • BINARY : Binary strings (고정 길이), maxlen = 255 bytes -> 선언된 값보다 짧은 문자열이 들어오는 경우 빈 문자열로 나머지 길이를 채운다

  • VARBINARY : Binary strings (가변 길이), maxlen = 255 bytes

  • 주의사항

    • Binary 타입을 사용하는 경우에는 binary format으로 처리되기 때문에 사람이 이해하기 위해서는 CAST()와 같은 함수로 디코딩 해줘야한다
  • 위 모든 데이터 타입들 중 특수한 경우를 제외하면 볼드 처리된 경우만 알아도 상관 없음

SQL의 Array

  • 데이터가 저장된 리스트, 저장된 각 데이터를 element라고 한다.
  • SQL의 Array는 서로 다른 타입의 element를 혼용하여 사용 가능하다 -> Nested Array도 가능함
  • SQL에서는 Array를 JSON 타입으로 저장한다 (JSON_ARRAY)
    • JSON_ARRAY() : 입력을 JSON 배열로 반환하는 함수. ex) JSON_ARRAY('빨강', '파랑')
    • '["빨강", "파랑"]' -> 이런 형식으로도 Array를 선언 할 수 있다
  • SQL의 ARRAY index 역시 0부터 시작한다
  • Array의 element에 접근할때는 JSON_EXTRACT()를 사용한다
    • ex) JSON_EXTRACT(Array, '$[index]')의 형태로 사용

SQL의 Key-value

  • python dictionary와 같이 key와 value를 mapping 하여 저장하는 자료구조
  • 이 경우도 JSON 타입으로 key-value를 저장한다 (JSON_OBJECT)
    • JSON_OBJECT('key1', value1, 'key2', value2, ...)
  • JSON_EXTRACT(dictionary, '$.key')의 형태로 접근 가능하다
  • JSON_INSERT(dictionary, '$.key', value) : 새로운 key-value를 만들어 dictionary에 추가
  • JSON_REPLACE(dictionary, '$.key', value) : 기존에 있는 key에 value를 대채함
profile
개인 공부용 블로그입니다

0개의 댓글

관련 채용 정보