SQL 쿼리 문법을 활용하여 데이터 분석을 진행하기(3)

2023. 12. 6. 17:16TIL

숫자 

 MySQL은 여러가지 숫자 데이터 타입들이 있다.

  • BIT(M): 0과 1로만 구성 (예)b'111' = 7), 1<= M <=64, 기본값은 M=1
  • TINYINT: 매우 작은 정수, Signed 범위: -127 ~ 127, Unsigned 범위: 0 ~ 255
  • BOOL, BOOLEAN:  True/False, TINYINT(1)과 같음, 0이면 False, 1이면 True
  • SMALLINT: 작은 정수, -32768 ~ 32767, 0 ~ 65535
  • MEDIUMINT: 중간 크기 정수, -2^23 ~ 2^23-1, 0 ~ 2^24-1
  • INT, INTEGER: 정수, -2^31 ~ 2^31-1, 0 ~ 2^32-1
  • BIGINT, SERIAL: INT 타입보다 2배 많은 비트를 사용하는 정수, -2^63 ~ 2^63-1, 0 ~ 2^64-1
  • DECIMAL(M,D), DEC, FIXED: 고정소수점 타입, M<=65, 0<=D<=30
  • FLOAT: 부동소수점 타입, 4 bytes
  • DOUBLE: 부동소수점 타입, 8 bytes

 

문자

 문자 데이터 타입도 여러가지가 있다.

  • CHAR: 고정된 길이의 문자열, 길이 0~255, 선언된 값보다 짧은 문자열이 들어오면, 빈 문자열로 나머지 길이를 채움
  • VARCHAR: 변동 가능한 길이의 문자열, 길이 0~65535
  • TEXT: 변동 가능한 길이의 문자열, 길이 최대 65535(길이 설정 불가), Non-binary strings(=character strings), 기본값 지정 불가
  • TINYTEXT: 작은 TEXT, 길이 최대 255
  • MEDIUMTEXT: 중간 크기 TEXT, 길이 최대 2^24-1
  • LONGTEXT: 큰 크기 TEXT, 길이 최대 2^32-1
  • ENUM: 최초에 지정해 둔 리스트에 포함되는 값만 저장, 효율적인 데이터 저장, 유연성/확장성 낮음
  • SET: 최초에 지정해 둔 리스트에 포함되는 값들을 64개까지 중복으로 저장

 

이진

 이진 데이터 타입은 데이터를 저장하거나 활용하기 위해 0과1 형식으로 인코딩한 타입이다.

  • BLOB: Binary Large Object, 길이 최대 65535(길이 설정 불가), 기본값 지정 불가
  • TINYBLOB: 작은 BLOB, 길이 최대 255
  • MEDIUMBLOB: 중간 크기 BLOB, 길이 최대 2^24-1
  • LONGBLOB: 큰 BLOB, 길이 최대 2^32-1
  • BINARY: Binary strings(고정된 길이), 길이 0~255, 선언된 값보다 짧은 문자열이 들어오면 빈 문자열로 나머지 길이를 채움
  • VARBINARY: Binary strings(변동 가능한 길이), 길이 0~255

 

배열

 Array(배열)은 데이터가 저장된 리스트이며 Element(원소)는 Array에 저장된 각 데이터이다. JSON 타입으로 배열을 저장하며 기본값 설정은 불가하다.

  • JSON_ARRAY: 입력을 JSON 배열로 반환하는 함수
  • JSON_TYPE: JSON 데이터의 타입을 반환하는 함수
  • JSON_EXTRACT: 배열 내부의 데이터에 접근하는 함수
SELECT JSON_EXTRACT(options,'$') as all_elements
FROM products

 options 열의 배열을 모두 불러오는 쿼리이다.

 

SELECT JSON_EXTRACT(options,'$[0]') as first_elements
FROM products

 options 열의 배열 중 첫번째 원소를 불러온다. $[0]이 첫번째이고 $[1]은 두번째이다. 

 

 

구조체

 Key-value는 Key와 Value로 이루어진 데이터로 JSON 타입으로 key-value를 저장한다.

  • JSON_OBJECT: key-value입력값을 JSON객체로 반환하는 함수
  • JSON_EXTRACT: key-value 내의 데이터를 반환할때 사용, $.key를 사용해 value를 얻음
  • JSON_INSERT: key-value값을 삽입할 때 사용하는 함수
UPDATE mangers_v2 set info = JSON_INSERT(info, '$.new', JSON_ARRAY(1,2,3,4));

 info열에 new라는 key와 [1,2,3,4]배열을 value로 삽입하였다. 

  • JSON_REPLACE: 이미 있는 column값을 바꾸는 함수
UPDATE mangers_v2 set info = JSON_REPLACE(info, '$.new', 1);

 new라는 key의 value를 1로 바꾸었다.

 

 

공부하며 어려웠던 내용

 MySQL의 다양한 데이터 타입들을 알아보았다. 앞으로 배운 내용을 통해 적절한 데이터 타입을 쓸 수 있게 연습해야 겠다.