[MySQL] SELECT, GROUP BY문

suebeen·2021년 8월 10일
0

DB

목록 보기
3/5
post-thumbnail

MySQL Workbench 사용해 실습진행 Download

  • MySQL 사이트에서 제공해주는 무료 클라이언트 SQL 에디터

SELECT

  • 테이블에서 레코드들을 읽어오는데 사용
  • DISTINCT : 중복없이
  • GROUP BY [이름이나 SELECT문에서의 몇 번째 필드?]

CASE WHEN

  • WHEN 조건 THEN 값
  • END 필드이름

NULL

  • 값이 존재하지 않음을 나타내는 상수
  • is NULL / is not NULL - 특수한 문법을 필요로 함
  • 사칙연산에 사용된다면? 항상 결과는 NULL

COUNT

  • () 안에 NULL이 들어가면 카운트 X
  • ()안에 value(필드이름)가 들어간다면 NULL제외 카운트
  • ()안에 DISTINCT value(필드이름)이면 중복제거 후 NULL제외

WHERE

  • IN : =의 기능, 여러개면 (a, b, c)같이 사용
  • LIKE : 대소문자 구별 없이 문자열 매칭 기능을 제공해줌, '%'나 '*'사용하면 문자열안에 포함되는지를 나타낼 수 있음
  • BETWEEN : 날짜 범위에 사용 가능

STRING functions

  • LEFT(str, N) : 왼쪽부터 몇개를 빼오기
  • REPLACE(str, exp1, exp2) : 두번째인자를 세번째로 변경
  • UPPER(str) : 모두 대문자
  • LOWER(str) : 모두 소문자
  • LENGTH(str) : 문자의 길이
  • LPAD, RPAD : 몇자리를 나타낼건지, 남은 자리를 채울 문자
  • SUBSTRING : 몇번째부터 몇개의 문자
  • CONCAT : 필드를 붙여서 새로운 필드

ORDER BY

  • Default는 오름차순 (ASC), 내림차순 (DESC)
  • 여러개의 필드를 사용해서 정렬하려면 ORDER BY 1 DESC, 2, 3 ⇒ 우선순위 개념
  • NULL 값 순서는 오름차순 일 경우 처음, 내림차순 일 경우 마지막

타입 변환

  • NOW : 현재 시간
  • 타임존 관련 변환 : CONVERT_TZ(now(), 'GMT', 'Asia/Seoul')
  • DATE, WEEK, MONTH, HOUR ...
  • STR_TO_DATE, DATE_FORMAT : str을 datetime, datetime을 str
  • DATEDIFF : 두 개의 날짜의 GAP, DATE_ADD : 날짜를 더한 후의 날짜
  • cast 함수 : 형 변환 ex) cast('100.0' as float), convert는 as 가 없음

GROUP BY

  • 테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산
    • 먼저 그룹핑을 할 필드를 결정
    • 다음 그룹별로 계산할 내용을 결정 - 여기서 Aggregate함수를 사용 (count, sum, avg ...)

0개의 댓글