SQL 쿼리 문법을 활용하여 데이터 분석을 진행하기(3)
2023. 12. 6. 17:16ㆍTIL
숫자
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의 다양한 데이터 타입들을 알아보았다. 앞으로 배운 내용을 통해 적절한 데이터 타입을 쓸 수 있게 연습해야 겠다.
'TIL' 카테고리의 다른 글
| SQL 쿼리 문법을 활용하여 데이터 분석을 진행하기(5) (2) | 2023.12.08 |
|---|---|
| SQL 쿼리 문법을 활용하여 데이터 분석을 진행하기(4) (2) | 2023.12.07 |
| SQL 쿼리 문법을 활용하여 데이터 분석을 진행하기(2) (2) | 2023.12.05 |
| SQL 쿼리 문법을 활용하여 데이터 분석을 진행하기(1) (1) | 2023.12.04 |
| Excel을 활용한 다양한 데이터 분석 실습(5) (1) | 2023.12.02 |