오늘은 SQL 내용 중 강사님께서 중요하고 많이 사용된다고 짚어주셨던 내용들을 정리해보았다.
SELECT 필드명 or 표현식(함수)
FROM 테이블
WHERE 행 필터링
-- SELECT 절에 사용한 별칭(AS) 사용 불가(MySQL, SQLite는 사용 가능)
GROUP BY 필드명, 필드명
-- 행 -> 그룹으로 묶기
HAVING 그룹 필터링
-- 별칭(AS) 사용 불가 / 집계함수 가능
ORDER BY
-- 별칭(AS) 사용 가능
LIMIT n;
ROUND(필드명, 소수점 자리수) : 필드 원소를 반올림 하여 지정한 소수점 자리수까지를 반환POWER(필드명, 거듭제곱) : 거듭제곱한 값 반환SQRT(필드명) : 양의 제곱근을 반환데이터를 요약 → 데이터의 특징을 알 수 있음 (EDA)
COUNT(필드명): 결측이 아닌 개수 반환SUM(필드명): 결측이 아닌 값의 합계 반환AVG(필드명): 결측이 아닌 값의 평균 반환
IFNULL(필드명, 대체값) : 결측이 아니면 원본, 결측이면 대체값 반환CASE WHEN : IIF() 를 확장한 구문SELECT sepal_width
, CASE WHEN sepal_width > 3.5 THEN 'L' ELSE 'S' END AS grade
FROM IRIS;
SELECT sepal_width
, CASE WHEN sepal_width > 3.5 THEN 'L'
WHEN sepal_width > 3.0 THEN 'M'
ELSE 'S' END AS grade
FROM IRIS;
SELECT A.*, B.내선, B.부서
FROM HR_MEMBER AS A
LEFT OUTER JOIN HR_OFFICE AS B
ON A.직원명 = B.직원명;
-- 오른쪽 외부 병합
SELECT A.*, B.내선, B.부서
FROM HR_MEMBER AS A
RIGHT OUTER JOIN HR_OFFICE AS B
ON A.직원명 = B.직원명;
SELECT A.*, B.내선, B.부서
FROM HR_MEMBER AS A
LEFT OUTER JOIN HR_OFFICE AS B
ON A.직원명 = B.직원명
WHERE B.직원명 ISNULL;
SELECT A.*, C.혈액형, C.동아리
FROM HR_MEMBER AS A
LEFT OUTER JOIN HR_PERSON AS C
ON A.직원명 = C.이름 AND A.나이 = C.나이;
SQL에서 가장 어려운 내용은 GROUP BY와 JOIN인 것 같다. 하지만 문제를 계속 풀다 보면 금방 익숙해질 것 같아서 큰 무리는 없을 것 같다. 하루 루틴에 SQL 코딩 테스트 문제 풀기를 추가했는데, 꾸준히 풀어보면서 SQL 자격증을 준비해보려고 한다.