2022년 3월 30일 TIL

SELECT

SELECT 필드이름1, 필드이름2
FROM 테이블이름
WHERE 선택조건
GROUP BY 필드이름1, 필드이름2
ORDER BY 필드이름 OR 필드번호 [ASC|DESC]
LIMIT N; 

LIMIT

조회할 데이터 개수 지정

DISTINCT

중복된 데이터 제거하여 조회

COUNT

모든 레코드 수 카운트 = COUNT(0) = COUNT(1) = COUNT(*)

CASE WHEN

SELECT channel_id, 
  CASE
	WHEN channel_id in (1, 5, 6) THEN 'Social-Media' 
    WHEN channel_id in (2, 4) THEN 'Search-Engine' 
    ELSE 'Something-Else'
  END channel_type // 필드 이름
FROM session;

NULL

  • 값이 존재하지 않음을 나타낸다.
  • NULL과 함께한 연산의 결과는 항상 NULL이다.

    SELECT 0 + NULL, 0 - NULL, 0 * NULL, 0 / NULL → NULL
    COUNT(null) → 0

  • 오름차순 일 경우(ASC) 처음에 위치한다.
  • 내림차순 일 경우(DESC) 마지막에 위치한다.

NOT IN

  • NOT IN
    where에서 사용되며 포함이 되지 않았는지 확인한다.

NOT LIKE

  • NOT LIKE
    where에서 사용되며 문자열이 매칭되지 않아야 한다.

STRING Functions

LEFT(str, N) & RIGHT(str, N)

  • LEFT(str, N)
    문자열 왼쪽에서부터 N개만 보여준다.

  • RIGHT(str, N)
    문자열 오른쪽에서부터 N개만 보여준다.

LPAD(필드이름, N, '-'), RPAD(필드이름, N, '-')

  • LPAD(필드_이름, N, '-')
    필드에 해당하는 value를 N 길이 만큼만 보여준다. 만약 value의 길이가 N보다 작다면 작은 만큼 '-'을 왼쪽에 채원주다. ('-'은 다른 문자로 교체할 수 있다.)

    select LPAD(channel, 15, 'ㅁ') from channel limit 1; → ㅁㅁㅁㅁㅁㅁInstagram
  • RPAD(필드_이름, N, '-')
    필드에 해당하는 value를 N 길이 만큼만 보여준다. 만약 value의 길이가 N보다 작다면 작은 만큼 '-'을 오른쪽에 채원주다. ('-'은 다른 문자로 교체할 수 있다.)

    select RPAD(channel, 15, 'ㅁ') from channel limit 1; → Instagramㅁㅁㅁㅁㅁㅁ

SUBSTR(str, pos), SUBSTR(str, pos, len)

  • SUBSTR(str, pos)
    str에서 pos 번째 위치에서 모든 문자를 읽어들인다.

  • SUBSTR(str, pos, len)
    str에서 pos 번째 위치에서 len개의 문자를 읽어 들인다.

CONCAT

문자열을 합친다.

select concat(id, '. ', channel) from channel limit 1; → 1. Instagram

타입 변환

DATEDIFF, DATE_ADD

  • DATEDIFF(날짜1, 날짜2)
    날짜1과 날짜2가 몇일 차이가 나는지 알려준다.

  • DATEADD(기준날짜, INTERVAL)

    • 기준 날짜에 입력된 기간만큼 더한다.
    • INTERVAL에서 시간은 원하는 단위를 설정하면 된다.
    SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR);
    SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);
  • DATESUB(기준날짜, INTERVAL)

    • 기준 날짜에 입력된 기간만큼 뺀다.
    • INTERVAL에서 시간은 원하는 단위를 설정하면 된다.
    SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR);
    SELECT DATE_SUB(NOW(), INTERVAL 1 DAY); 

STR_TO_DATE, DATE_FORMAT

  • STR_TO_DATE
    timestamp 문자열을 DATE 타입으로 변경

  • DATE_FORMAT
    timestamp DATE 타입으로 문자열로 변경

cast(exp as type), convert(exp, type)

SELECT cast('100.0' as float), convert('100.0', float);

GROUP BY

테이블의 레코드를 그룹핑하여 다양한 정보를 계산한다.

SELECT channel_id, COUNT(1) 
FROM session 
GROUP BY 1; // 첫번째 필드(channel_id)를 기준으로 그룹화하라!

필드 이름 OR 필드의 일련 번호를 사용하여 그룹화한다.

좋은 웹페이지 즐겨찾기