데이터분석 study/SQL

TIL_24.08.02_MySQL 자료형

justdata 2024. 8. 2. 20:39

<알고리즘 문제에서 중요한 3단계 중 하나>

1. 자료형 선언

2. 논리 구조화(with Pesudo 코드)

3. 코드 구현

 

숫자 자료형

    컴퓨터는 이진(1,2)으로 데이터를 저장

        - Boolean 자료형 (True, False)가 존재하는 이유

          ○ 비트(binary digit, bit)

              - 0과 1, 두 가지 값만 가질 수 있는 측정 단위

 

          ○ 바이트 (Byte)

               - 여덟개의 비트로 구성된 데이터의 양을 나타내는 단위

 

    ● 정수형

         - 정수형 자료형은 기본적으로 SIGNED(기본)과 UNSIGNED

            옵션을 가질 수 있음.

         - 전자는 양수/음수를 후자는 양수를 저장함

         - 또한 정수형 자료형은 AUTO_INCREMENT 제약조건을

           이용하여 ID를 생성하는 유용

자료형 범위 저장크기 특징
TINYINT signed : -128 ~127
unsigned : 0 ~ 255
1byte 매우 작은 정수 값을 저장하며
메모리 사용 최소화
SMALLINT signed : -32,768 ~ 32,767
unsigned : 0 ~ 65,535
2bytes 작은 정수값
MEDIUMINT signed : -800만 ~ 800만
unsigned : 0~ 1600만
3bytes 중간크기 정수 값
INT signed: 약 - 20억 ~ 20억
unsigned:  0~ 40억
4bytes 일반적으로 사용되는 정수 자료형
BIGINT signed : 약 -900경 ~ 900경
unsigned : 0 ~ 1800경
8bytes 매우 큰 데이터 셋 혹은 식별자를 다룰 때 사용

 

 

● 실수형

    ○ 부동 소수점 이슈

         - 이진법으로 데이터를 저장하는 컴퓨터 특성상 소수점의 정확한 저장이 어려움

           이를 부동소수점(floating point)이라 함.

          - 정수는 2진법으로 모두 나타낼 수 있음

           - 소수는 2진법의 역수의 합으로 나타내지만 정확하게 표현 불가

 

    ○ 저장 효율적이지만 어느 정도 정확도를 제한하겠다. -> 부동소수점

    저장 부효율적이지만 정확도를 추구하겠다 -> 고정소수점

 

자료형 범위 저장크기 특징
FLOAT 약 -3.4E+38 ~ 3.4E + 38 4byte 일반적인 자료형
소수점 7자리까지 정확
DOUBLE 약 -1.7E +308
~ 1.7E + 308
8byte 소수점 15자리까지 정확
DECIMAL 사용자 정의   고정 소수점 숫자
정확한 소수점을 요구하는 금융데이터 혹은 계산에 적합
ex. DECIMAL(M,D) : M(소수 포함한 총 자릿수), D(소수 자릿수)

 

** 일반적으로 MySQL에서는 부동소수점 이슈를 해결하기 위한

     자동처리가 되어 있다.

** 숫자 표현을 엄밀해야 하는 이슈의 경우 정수형 혹은 소수점을

    표현해야 하는 경우 DECIMAL으로 정리하는 것이 좋다.

 

● 문자 자료형

자료형 최대 길이 저장 크기 특징
CHAR 255 Char 1~255bytes 지정된 길이보다 짧은 문자열은 공백으로 채움
고정된 길이로 속도가 빠름
ex. 국가코드, 우편번호
자주 수정되지 않는 자료형에 유용
VARCHAR 65,535 Char 문자열 길이 + 1~2bytes 가변길이 데이터 저장할때 사용
ex. 이름, 이메일 주소
자주 수정되는 자료형에 유효하며 CHAR보다 저장공간 절약
TEXT 65,535 Char 문자열 길이 + bytes 긴 문장을 저장할 때 
ex. 기사, 설명
BLOB(Binary Large Object) - - 이진 데이터 저장용
ex. 이미지, 동영상

 

  

● 정규표현식

    - 문자열에서 특정 패턴을 찾기 위한 강력한 도구

    - REGEXP_LIKE() : 주어진 문자열이 정규표현식과 일치하는지 여부를 반환

    - REGEXP : 문자열이 정규표현식과 일치하는지 확인

SELECT 'hello world' REGEXP '^hello'; 

-- 결과: 1 (참)

 

메타문자 표현
. 임의의 한문자
^ 문자열시작
$ 문자열 끝
* 0개 이상의 반복
+ 1개 이상의 반복
? 0개 또는 1개의 반복
| OR 연산자
[] 문자 클래스 중 하나

 

 

● 자료형 변환

    - CAST 함수 : 데이터를 지정된 자료로 변환, 표준 SQL문법

# 문법
CAST(expression as target_type)

#예시
CAST(123 AS CHAR)

 

   - CONVERT 함수 : 데이터를 다른 자료형으로 변환하거나 인코딩을 변경, CAST와 유사

#문법
CONVERT(expression, target_type)

#예시
CONVERT(123 CHAR)

 

● JSON 자료

     - 외부파일을 로드하다 보면 통신에 적합한 자료형인 JSON형식들도 있다.

     - RDB에서는 JSON파일 형식도 지원

 

    ○ JSON 문자형

         - 키-쌍 구조를 이루는 자료형. Python의 Dictionary와 유사

         - 빠른 조회보다 데이터 저장에 중심을 둠

         - 어플리케이션을 통한 데이터 처리. DB에는 단순 저장

 

** 외부 파일 import 할 때     - preview로 데이터 불러오는 것 확인     - 적절한 자료형인지 확인. 특히 숫자형이 문자형으로 되어 있지 않은지     - 인코딩 확인하기 

 

    ○ 인코딩이란         - 데이터를 특정 형식으로 변환하는 과정을 말한다.

 

    ○ 데이터베이스 인코딩 설정

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

              ○ 테이블 생성시 인코딩 설정

CREATE TABLE mytable (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;