본문 바로가기
프로그래머스/데이터분석 데브코스

프로그래머스 데이터분석 데브코스 4-3

by 포잉띠 2024. 3. 6.

4-2 에는 SQL의 주력 함수들을 배웠고 4-3에는 SQL에서의 Data type을 배웠다.

 

숫자

C와 같이 bit, tiny int, small int, int ( interger), big int, float, double 등이 있었다.

차지하는 메모리도 거의 유사하다.

SQL에는 숫자 타입에 Bool 타입이 들어가 있었다.

말 그대로 True, False가 레코드에 들어가는 것이 아닌

tinyint(1)을 지정하여 1은 True, 0은 False 이런식으로 해서 사용한다고 한다.

boolean 타입을 지원하는 DB도 있지만 지원하지 않는 DB도 존재하기에 

쿼리 간 호환성을 높이기 위해서  tinyint(1)으로 boolean 타입을 사용한다.

그리고 boolean 타입을 지원하는 mysql 같은 경우에 실제 작동은 tinyint(1) 로 한다고 한다.

문자

비주류, 비선호 타입은 제외한다.

크게 3가지 종류가 있다.

char // 고정된 길이의 문자열

varchar // 변동 가능한 길이의 문자열, 길이의 상한 정할 수 있음

text // 변동 가능한 길이의 문자열, Mb 단위에서 Gb 단위까지 저장이 가능하다. 

 

varchar는 비교적 짧은, 길이의 상한이 정해져 있는 문자열, 형식이 정해져 있는 문자열을 받을 때 용이하다.

예를들어 이메일 주소라던지, 비밀번호, 이름처럼 들어오는 문자열의 길이가 매번 자유분방하지 않고

얼추 형식이 정해져 있으며, 몇개 이상, 이하 사용이 정해져 있는 문자열들에 사용하면 좋겠다.

 

text는 말 그대로 text. 이런 블로그의 글이라던지, 책, 뉴스처럼 입력받는 문자열의 길이가 varchar의 예시들에 비해 엄~~청나게 긴 문자열들을 저장하기 위해 사용한다.

 

이진 

https://arin-nya.tistory.com/25

 

Sql 이진 데이터

이진 데이터. 이진법으로 저장한 데이터. 이게 무슨 소리인가... 어떤 느낌인지 감이 오지않아 여러가지 조사해 보았다. GPT의 도움을 받았는데 단순히 사람이 봤을 때 '문자' 가 아닌 데이터들을

arin-nya.tistory.com

 

Json에 관해 무지했기에 Json 자체에 대한 가벼운 요약이다.

https://arin-nya.tistory.com/24

 

Json 간단 정리

Json 은 단순 확장자명이다. 프로그래밍 언어, 문법이 아님. python의 dict와 매우 유사함. 실제로 json 모듈을 임포트 해서 json 파일을 불러오기도 쉽고 dict 객체를 json 파일로 내보내기도 쉽다. SQL에

arin-nya.tistory.com

 

 

배열

Json_array // 입력을 Json 배열로 반환 // Json_array를 사용하지 않고 ', " 구분으로도 할 수 있는데 번거롭고 헷갈리니 그냥 함수 쓰자.

Json_type // Json data의 type을 반환

 

2차원 배열과 인덱싱 또한 가능하다.

인덱싱 예시 // Json_extract( Json_object , '$[index]')

 

 

Key - Value

python의 dict와 거의 유사하고 python에 json 내장 모듈이 존재한다.

 

Json_object(key1, value1, key2, value2, ...) 

와 같은 방식으로 key -value 형태의 json 타입을 만든다.

 

Json_extract(Json_object , '$.key')

python의 dict를 조작할 때 get을 사용하여 key를 통해 value를 출력하듯이

SQL에서는 Json_extract를 사용한다.

 

Key-value로 이루어진 json object에서 조회, 인덱싱을 하려면 $.key를

단순 배열이라면 '$[index]' 로 사용하면 되겠다.

 

2차원 배열일 땐 '$[out_list_index][inner_list_index]' 로 사용하면 된다.

 

Key-value 쌍의 value가 key-value 쌍이고 이것의 value가 2차원 배열인것도 가능하다.

 

{
  "key1": {
    "key1_1": [
      [0, 1],
      [2, 3]
    ]
  }
}

이런 식으로도 json object가 만들어 질 수 있고

만약 위의 2차원 배열에 접근하는 예시를 들면

 

Josn_extract(A, '$.key 1.key 1-1[0][0]) 

 

으로 2차원 배열의 첫번째 행, 첫번째 열에 접근할 수 있다.