티스토리 뷰

SELECT

  • 테이블들에서 레코드들을 읽어오는데 사용한다.
  • SELECT 필드이름1, 필드이름2, ...
    FROM 테이블이름
    WHERE 선택조건 -- 조건 검색
    GROUP BY 필드이름1, 필드이름2, ... -- 그룹화
    ORDER BY 필드이름 [ASC|DESC] -- 정렬
    LIMIT N; -- 앞에서 N개 로우만 출력
  • *을 통해 모든 필드를 지칭할 수 있다. (SELECT * FROM ....)
  • 옵션
    • DISTINCT - 중복되는 값들을 지울 수 있다.
    • 그룹함수 - GROUP BY를 사용하면 그룹함수를 쓸 수 있다(COUNT, SUM 등)
    • 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

WHERE

  • 조건절이다.
  • 옵션
    • IN : 여러 값 중에 해당 컬럼 값이 있는지를 찾는다.
    • LIKE : 대소문자 구별 없이 문자열 매칭 기능을 제공한다.
      • %는 모든 문자열, _는 모든 문자를 나타낸다.
    • BETWEEN : 범위를 나타낼 때 사용가능하다.
    • 이 옵션들은 CASE WHEN 절에서도 사용 가능하다.
    • NULL 여부를 검사할 때는 IS NULL 키워드를 쓴다.

ORDER BY

  • 기본값은 오름차순이다.
  • 내림차순은 ORDER BY 컬럼명 DESC 이다. (필드 순서 번호로 컬럼명을 대체할 수 있다)
  • NULL 값들은 오름차순인 경우 처음에 위치한다.
  • NULL 값들은 내림차순인 경우 마지막에 위치한다.

STRING Functions

  • LEFT(str, N) : 왼쪽부터 N개의 글자를 반환한다.
  • REPLACE(str, exp1, exp2) : str에서 exp1을 찾아서 exp2로 바꾼다.
  • UPPER(str) / LOWER(str) : 대문자 / 소문자로 바꾼다.
  • LENGTH(str) : str의 길이를 반환한다.
  • LPAD(str, N, ch) / RPAD(str, N, ch) : 왼쪽 / 오른쪽으로 특정 문자로 패딩한다.
  • SUBSTRING : 주어진 문자열에서 특정 위치부터 원하는 길이만큼의 글자를 잘라 반환한다.
  • CONCAT : 문자열을 합쳐서 새로운 문자열로 만든다.

Null 이란?

  • 값이 존재하지 않음을 나타내는 상수이다. 0 또는 ""과는 다르다.
  • 테이블 정의시 디폴트 값으로도 지정할 수 있다.
  • 어떤 필드의 값이 NULL인지 여부를 비교할 때는 is 키워드를 쓴다.
    • field1 is NULL 또는 field1 is not NULL
  • NULL이 사칙연산에 적용하면 다음과 같다.
    • 0 + NULL = NULL
    • 0 - NULL = NULL
    • 0 * NULL = NULL
    • 0 / NULL = NULL

타입 변환

날짜

  • NOW
  • 타임존 관련 변환
    • CONVERT_TZ(now(), 'GMT', 'Asia/Seoul')
      CONVERT_TZ(시간, 현재 타임존, 결과 타임존)
  • DATE, WEEK, MONTH, YEAR, HOUR, MINUTE, SECOND : 타임스탬프값에 사용하면 특정 값을 구한다.
  • DATEDIFF (현재 날짜, 비교할 날짜) : 두 타임스탬프간의 날짜 차를 구한다.
  • DATE_ADD : 한 타임스탬프에서 날짜를 더했을 때의 날짜를 반환한다.
  • STR_TO_DATE : 날짜 형식의 문자열을 날짜로 바꾼다.
  • DATE_FORMAT : DATE형식을 문자열로 바꾼다.

  • 1/2의 결과는 0이 된다. 정수간의 연산은 정수가 되어야 하기 때문이다.
  • cast함수 / convert함수를 사용해 형을 변환한다.
    • cast(필드명 as float) -> cast('100.0' as float)
    • convert(필드명, float) -> convert('100.0', float)

 

value
NULL
1
1
0
0
4
3
  1. SELECT COUNT(1) FROM count_test; -> 7 (COUNT함수의 인자가 NULL이 아니므로 각 행을 1씩 세서 총 행 수를 구한다)
  2. SELECT COUNT(0) FROM count_test; -> 7 (COUNT함수의 인자가 NULL이 아니므로 각 행을 1씩 세서 총 행 수를 구한다)
  3. SELECT COUNT(NULL) FROM count_test; -> 0 (COUNT함수의 인자가 NULL이면 세지 않는다. 즉 0이다)
  4. SELECT COUNT(value) FROM count_test -> 6 (value의 값중 NULL이 아닌 것의 개수를 센다)
  5. SELECT COUNT(DISTINCT value) FROM count_test -> 5 (UNIQUE한 NULL이 아닌 로우 개수를 센다)
728x90
반응형
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함