(W2D3) 데이터베이스(3)

SELECT 살펴보기

테이블(들)에서 레코드들(혹은 레코드 수)를 읽어오는 데 사용

SELECT 필드이름1, 필드이름2, ...
FROM 테이블이름
WHERE 선택조건
GROUP BY 필드이름1, 필드이름2, ...
ORDER BY 필드이름[ASC|DESC] -- 필드이름 대신 숫자 사용 가능
LIMIT N;
SELECT * -- *는 모든 필드를 지칭하는 표현

SELECT DISTINCT channel_id -- 유일한 채널 ID를 알고 싶은 경우
FROM session;

SELECT channel_id, COUNT(1) -- 채널 ID별 카운트를 하려면 GROUP BY/COUNT 함수
FROM session
GROUP BY 1;
  • CASE WHEN

    • 필드 값의 변환을 위해 사용한다.
    • CASE WHEN 조건 THEN 참일때 값 ELSE 거짓일때 값 END 필드이름
    • 여러 조건을 사용하여 변환하는 것도 가능하다.
    CASE
    	WHEN 조건1 THEN1
    	WHEN 조건2 THEN2
    	ELSE3
    END 필드이름
    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

    • 값이 존재하지 않음을 나타내는 상수. 0 혹은 ""과는 다르다.
    • 필드 지정시 값이 없는 경우 NULL로 지정 가능하다.
    • 테이블 정의 시 디폴트 값으로도 지정 가능하다.
    • 어떤 필드의 값이 NULL인지 아닌지 비교는 특수한 문법을 필요로 한다.
    • 필드1 is NULL / 필드2 is not NULL
    • NULL이 사칙연산에 사용된다면? -> NULL
  • COUNT 함수

    • NULL은 카운트 하지 않는다.
    • COUNT(NULL) -> 0
  • WHERE

    • IN
    • NOT IN
    • LIKE
    • 대소문자 구별 없이 문자열 매칭 기능을 제공해준다.
    • NOT LIKE
    • BETWEEN
    • 날짜 범위에 사용 가능하다.
    • 위 오퍼레이터들을 CASE WHEN 사이에서도 사용 가능하다.
  • STRING Functions

    • LEFT(str, N)
    • REPLACE(str, exp1, exp2)
    • UPPER(str)
    • LOWER(str)
    • LENGTH(str)
    • LPAD, RPAD
    • SUBSTRING
    • CONCAT
  • ORDER BY

    • 디폴트 순서는 오름차순
    • 내림차순 - DESC
    • 여러 개의 필드를 사용해서 정렬하려면 ORDER BY 1 DESC, 2, 3
    • NULL : 오름차순일 경우 처음, 내림차순일 경우 마지막에 위치한다.
  • 타입 변환

    • DATE Conversion
    • NOW
    • 타임존 관련 변환

      • CONVERT_TZ(now(), ‘GMT’, ‘Asia/Seoul’)
    • DATE, WEEK, MONTH, YEAR, HOUR, MINUTE, SECOND, QUARTER, MONTHNAME
    • DATEDIFF
    • DATE_ADD
    • STRTODATE, DATETOFORMAT
  • Type Casting

    • 1/2 결과는?
    • 0이 된다. 정수 간의 연산은 정수가 되어야하기 때문이다.
    • 분자나 분모 중의 하나를 float으로 캐스팅해야 0.5가 나온다.
    • cast 함수를 사용
    • cast(category as float)
    • convert(expression, float)

GROUP BY 살펴보기

SELECT 실행 시 결과를 특정 그룹별로 묶는 방법

GROUP BY & Aggregate 함수

  • 테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산
  • 두 단계

    • 그룹핑 할 필드를 결정 (하나 이상의 필드가 될 수 있음)
    • GROUP BY로 지정 - 필드 이름or필드 일련번호를 사용
    • 그룹별로 계산할 내용을 결정
    • Aggregate 함수 사용
    • COUNT, SUM, AVG, MIN, MAX, GROUP_CONCAT, … -> 보통 필드 이름을 지정(alias)

Written by@Myunghwan
Nothing changes if nothing changes

GitHub