본문 바로가기
Algorithm/SQL

[SQL] DataCamp 수강 (1)

by 호찌민 2021. 3. 8.

SQLD 자격증 취득한지 9개월 정도 되었다. 공모전, 프로젝트 등을 하면서 모두 정형화된 데이터라 SQL을 사용할 일이 많이 없었고 자연스레 기억 속에서 SQL은 잊혀져갔다. 🤣 데이터 분석가라면 필수적으로 사용해야 하기도 하고

코딩테스트도 준비해야 할 겸 무조건 해야겠다는 생각이 들어서 은혁이와 함께 DataCamp 수강을 신청했다. 😁

앞으로 이 공간은 SQL에 관한 모든 지식들을 정리할 예정이다. 주로 함수 사용법에 대해 정리할 듯 하긴 하다. 🙃


쿼리 실행 순서 : FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY

깔끔한 쿼리 작성 법 : FROM, WHERE 등은 대문자로, 컬럼명 등은 소문자로 작성, 다수의 컬럼명을 활용할 때에는

아래 방향으로 작성.

SELECT name
FROM student;

SELECT

지정해준 컬럼들 추출해주는 함수

 

  • TOP(N) : 상위 N개 결과 반환
  • TOP(N) PERCENT : 상위 N% 결과 반환
  • DISTINCT : 고유값 반환
  • AS(ALIAS) : 결과창에 나타날 컬럼명 지정

[집계 함수]

  • SUM(컬럼명) : 컬럼 값들의 합을 반환
  • MIN/MAX/AVG(컬럼명) : 컬럼 값들의 최소값, 최대값, 평균 값 반환 
  • COUNT(컬럼명) : 컬럼의 갯수 반환
  • LEN(컬럼명) : 컬럼의 값이 문자인 경우, 문자열의 길이 반환 (*활용할 컬럼명을 SELECT 구문에서 미리 지정해야 함.)
  • LEFT/RIGHT(컬럼명, 추출할 문자 수) : 컬럼의 값이 문자인 경우, 왼쪽/오른쪽에서 부터 문자열 지정 수만큼 추출
  • CHARINDEX('특정 문자', 컬럼명) : 해당 컬럼에서 특정 문자 시작 위치 추출
  • SUBSTRING(컬럼명, 시작 위치, 끝 위치) : 컬럼의 값이 문자인 경우, 시작 ~ 끝 위치에 존재하는 문자열 추출
  • REPLACE(컬럼명, 대체할 문자, 대체될 문자) : 컬럼의 문자 대체

*AS로 해당 결과 컬럼명을 지정해야 함. 그렇지 않으면, '(열 이름 없음)'으로 반환됨.


WHERE

특정 조건을 만족하는 행을 추출 (행 수준에서 필터링 하는 역할)

FROM 아래에 사용하며 숫자/날짜/문자 모두 기준으로 사용 가능하다. 단, 문자, 날짜는 '' 따옴표 활용해야 함.

 

  • BETWEEN 값 and 값 : 해당 범위 내에 포함되는 값 추출
  • IS NULL/IS NOT NULL : 누락 값 반환/반환하지 않음
  • AND/OR : OR이 AND보다 먼저 실행이 되므로 주의 ! 괄호를 활용하여 알맞은 조건을 지정해야 함.
  • IN (값) : 해당 값에 포함되는 값들 찾기
  • LIKE '값%'/'%값'/'%값%' : 값으로 시작하는/끝나는/포함되는 값들 찾기

GROUP BY

그룹으로 분할하는 함수, 그룹 별로 집계하는데 용이하다.

 

HAVING

GROUP BY 이후의 필터링 또는 집계함수를 하는데 사용된다. WHERE과 다르므로 주의 !

*WHERE는 행을 필터링, HAVING은 그룹 별 집계된 값들을 필터링


ORDER BY

최종 추출된 값들을 정렬하는데 사용되는 함수, 다수의 컬럼을 동시에 사용 가능하며, 먼저 오는 컬럼 기준으로

결과 값이 정렬된다.

  • DESC : 내림 차순 정렬

*기본 값이 오름 차순 정렬이므로, 내림 차순 하고 싶을 경우에 DESC 함수 사용해주면 된다.