1 분 소요

이것이 MySQL이다 강의를 참고하여 정리한 글임을 밝힙니다.

숫자형 데이터

숫자형 데이터 중 일부를 정리한 것입니다.

데이터 형식 바이트 수 숫자 범위 설명
SMALLINT 2 -32768~32767 정수
INT 4 -약 21억~ 약 21억 정수
BIGINT 8 -약900경~900경 정수
FLOAT 4 -3.4E+38~1.17E+38 소수점 아래 7자리
DECIMAL (5,17) -10E+38 + 1 ~ +10e+38 -1 전체 자리수(m)과 소숫점 이하 자릿수(d)를 가지는 숫자형

특히 INT UNSIGNED로 사용할 경우 음수는 사라지고 대신 양수의 표현 범위가 증가하게 됩니다.

문자형 데이터

데이터 형식 바이트 수 설명
CHAR 1~255 고정길이 문자형으로 n을 1부터 255까지 지정가능하며 n의 기본값은 1
VARCHAR 1~65535 가변길이 문자형으로 n은 65535까지 지정가능
LONGTEXT 1~4294967295 최대 4GB의 TEXT 데이터 값
LONGBLOB 1~4294967295 최대 4GB의 BLOB 데이터 값

CHAR와 VARCHAR의 차이는 다음과 같습니다.

  • CHAR의 경우 데이터를 기록하고 남은 공간도 차지합니다. 그렇지만 INSERT, UPDATE에는 더 유연합니다.
  • VARCHAR의 경우 남은 공간을 차지하지 않습니다.

특히 문자 디코딩 방식을 설정하는 것은 다음과 같습니다.

  1. my.ini 혹은 my.cnf파일에 들어갑니다
  2. 클라이언트의 문자세트는 default-character-set에서 확인가능합니다.
  3. 서버의 문자 세트는 character-set-server에서 확인가능합니다.

TEXT의 경우 대용량의 글자를 저장하기 위한 형식이며 그 크기에 따라서 다양한 TEXT 타입의 데이터형식이 있습니다.

BLOB의 경우 사진, 동영상, 문서 파일 등의 바이트 단위의 이진 데이터를 저장하는데 사용가능하며 동일하게 크기에 따라서 다양한 데이터 형식이 있습니다.

  • 예시 1
    INSERT INTO movietbl VALUES (1, '쉰들러 리스트', '스필버그', '리암 니슨', 
      load_file('__path1__'),
        load_file('__path2__') );
    

    이렇게 하면 파일이 업로드 안되며 그 이유는 2가지 존재합니다.

    1. 업로드 용량 제한하는 시스템 변수
    2. 해당 폴더가 보안상 문제 없다는 증명 선행

    이를 해결한 다음 진행되어야 합니다.

    아래의 코드를 통해 앞선 조건들의 상태를 볼 수 있습니다.

    SHOW variables LIKE 'max_allowed_packet';
    SHOW variables LIKE 'secure_file_priv';
    

날짜와 시간 데이터

데이터 형식 바이트 수 설명
DATE 3 YYYY-MM-DD
DATETIME 8 YYYY-MM-HH:MM:SS

Type casting

명시적 형 변환(explicit conversion)

CAST (expr AS dtype)
CONVERT (expr,dtype)

특히 SELECT 문 안에서 서브 쿼리 형식으로 작동하여 특정 열을 처리(합이나 평균)하고 이름을 바꿀 때에도 사용가능하다.

SELECT CAST(AVG(amount) AS SIGNED INTEGER) AS '평균 구매 개수' ~

암시적 형 변환(implicit conversion)

예시 설명
‘100’ + ‘100’ 정수로 변환되어 연산
CONCAT(‘100’,’100’) 문자와 문자를 연결
CONCAT(100,’100’) 정수가 문자로 변환되어 처리
1>’3ASDF’ 정수인 3으로 변환되어서 비교
0=’ASDFAS 문자는 0으로 처리

태그:

카테고리:

업데이트:

댓글남기기