타입(data type) - 숫자

테이블 타입 확인

-DESCRIBE 테이블명;

정수

TINYINT

  • -128 ~ 127범위, 1바이트
  • java의 byte와 매핑

INT

  • 4byte
  • java의 int타입과 매핑

BIGINT

  • 8byte
  • java의 lon타입과 매핑

UNSIGNED

  • UNSIGHNED타입을 사용하여 양수만 표현가능
  • 표현값 2배로 증기
  • TINYINT UNSIGNED 이렇게 사용한다면 255까지 사용가능
  • ex) 나이

실수

부동 소수점 타입

  • float, double
  • 오차가 발생할 여지가 있음

고정 소수점 타입

  • DECIMAL(M,D)
  • M은 총자릿수(정수부+소수부)를 의미하고, 65자리까지 표현가능
  • D는 소수부 의미
  • 정확한 숫자 표현을 위해 사용

타입(data type) - 문자타입

char와 varchar

char(255)

  • M은 문자열의 최대 길이를 의미
  • 고정 길이의 문자여 (0 ~ 255까지 설정가능)
  • 정해진 자릿수 문자에 제한을 두기 위해서는 사용

VARCHAR(255)

  • java의 String 사용 시 varchar
  • 0부터 65,535까지 설정가능
  • 가변 길이의 문자열(M을 통해 길이지정)
  • 길이를 지정하더라도 실제 입력된 문자열의 길이만큼만 저장하고 사용
  • 일반적으로 가장많이 사용

TEXT

  • 가변타입
  • TEXT: 최대 65,535바이트까지 저장 가능한 일반적인 문자열을 위한 타입
  • varchar보다 더 큰 범위의 표현이 가능 ex) LONGTXET는 4GB
  • disk에 저장해서 조회속도가 VARCHAR(메모리저장)에 비해 느림
  • index사용의 어려움‼(B-tree인덱싱 불가, FULL-Text 인덱스 가능)

BLOB(longlob)

  • 다양한 크기의 바이너리 데이터를 저장할 수 있는 타입
  • 일반적으로 PNG와 같은 이미지 파일을 저장할 때 지정하는 타입

    ex) insert into table_blob (id, myimg) values (2,'C:\test.jpg');
    SELECT HEX(myimg) FROM table_blob WHERE id = 1;

ENUM

  • 미리 들어갈 수 있는 특정 데이터의 값을 지정
  • 컬럼명 ENUM('데이터값1', '데이터값2',...)
  • NOT NULL DEFAULT 'user' 등의 옵션도 추가 기능

타입(data type) - 날짜와 시간

DATE

  • 날짜를 저장할 수 있는 타입

    YYYY-MM-DD

DATETIME(m)

  • 날짜와 함께 시간까지 저장, m지정시 소수점 micreseconds
    • 가장 많이 사용
    • java의 localdatetime과 sync

      YYYY-MM-DD HH:MM:SS

DATETIME DEFAULT CURRENT_TIMESTAMP

  • 현재시간을 default로 삽입하는 형식

비교연산자

  • =
  • != <>
  • <, <=, >, >=
  • IS NULL, IS NOT NULL
  • BETWEEN min AND max
    • 피연산자의 값이 min 값보다 크거나 max 작으면 참을 반환함. (이상, 이하)
  • IN(), NOT IN()

논리 연산자

AND

  • 모든 조건이 맞아야 참
  • && 도 가능

    ex) SELECT * FROM author WHERE name = "홍길동" AND age = 33;

OR

  • 모든 조건 중 하나만 맞아도 참
  • || (파이프라인)

    ex) SELECT * FROM author WHERE name = '홍길동' OR name = '이춘향'

NOT

  • 부정
  • !

검색 패턴

LIKE

  • 특정 패턴을 포함하는 데이터많을 검색하기 위한 와일드카드(wildcard) 문자
  • 일반적으로 %와 함께 사용됨
  • SELECT*FROM author WHERE name LIKE '홍%';
  • SELECT*FROM author WHERE name LIKE '%길';
  • SELECT*FROM author WHERE name LIKE '%동%';

NOT LIKE

REGEXP

  • 정규표현식을 토대로 패턴 연산 수행

    SELECT FROM author WHERE name REGEXP '[a-z]';
    SELECT
    FROM author WHERE name REGEXP '[가-힣]';

NOT REGEXP


타입 변환

CAST

  • CAST(a AS type)
  • a값을 type으로 변환
  • 보통 정수 값을 DATE 타입으로 변환하는데 사용
  • SELECT CAST(20200101 AS DATE); => 2020-01-01

CONVERT

  • 문자열을 날짜/시간으로 변환하는 데 사용
  • SELECT CONVERT('2020-01-01', DATE); => 2020-01-01

DATE_FORMAT

  • DATE_FORMAT 함수는 날짜/시간 타입의 데이터를 지정된 형식의 문자열로 변환
  • 가장 많이 사용
  • DATE_FORMAT(date, format)

    ex) SELECT DATE_FORMAT('2020-01-01 17:12:00', '%Y-%m-%d')

CAST, CONVERT 사용시 유의사항

  • 최신버전
    • CAST('123' AS INT) 방식으로 int 사용가능
    • CAST('123' AS SINGNED)방식으로 signed(또는 unsigned) 사용 가능
  • 구 버전
    • CAST('123' AS SINGNED)방식으로 signed(또는 unsigned)만 사용가능
    • 여기서 signed는 부호있는 정수. 즉 음수/양수 모두 포함
    • unsigned는 부호 없는 정수로서 0이상 양수를 의미

특정 날짜, 기간 조회

날짜 데이터 조회하는 방식 중 많이 사용하는 방식

  • DATE_FORMAT(date,format)을 활용한 조회

    • Y, mm, dd, H, i, s
  • LIKE를 사용하여 문자열 형식으로 조회

    SELECT * FROM post WHERE created_time LIKE '2023%';

  • BETWEEN 연산자

    • 특정 날짜 범위를 지정하여 데이터를 검색

    WHERE created_time BETWEEN '2021-01-01' AND '2023-11-17'

  • 날짜 비교 연산자

    WHERE created-time >= '2021-01-01' AND created_time <= '2023-11-17';

  • 오늘 날짜 관련함수

    • NOW()

0개의 댓글