SQL은 사실 컴퓨터활용능력 1급 취득 하면서 학습한 경험이 있는 친구 입니다.
부분적으로 기억이 나서 준비하는 김에 다시 정리해보자! 하고 작성하는 SQL 기초를 잡아보자!
*일 벌리고 수습하는 성격 상 차차 업데이트 될 예정
SELECT DATE_FORMAT(Column_Name, '%y-%m-%d')
날짜를 지정한 형식으로 출력
SELECT문 뒤에 올 수도 있고, 날짜 포맷의 규격을 유지하기 위해 WHERE문 뒤에 사용될 수도 있다.
코테랑 정처기 기출에서 주로 쓰이는 건 하기와 같다고 감히 예상. (틀릴 가능성 농후)
구분기호 | 출력 결과 |
---|---|
%Y | 4자리 년도 (1999) |
%y | 2자리 년도 (99) |
%M | 영문 긴 월 (July) |
%b | 영문 짧은 월 (Jul) |
%m | 두 자리 숫자 월 (07) |
%c | 한 자리 숫자 월 (7) |
%d | 두 자리 일자 (01) |
%e | 한 자리 일자 (1) |
%W | 영문 긴 요일 (Monday) |
%a | 영문 짧은 요일 (Mon) |
GROUP_BY는 복수로 존재하는 ROW를 합계하여 선별하는데 사용이 됨.
사용을 위해선 하기를 주의할 것!
- NULL 값이 존재하는 ROW 제외
- SELECT에서 사용하는 것과 같은 구문에선 사용 불가
- WHERE 구문 에서 사용 불가능
- WHERE 구문은 GROUP BY보다 먼저 실행 됨.
HAVING은 WHERE에서 사용 할 수 없는 집계 함수의 구문을 적용 (GROUP BY 등 집계함수에 개한 WHERE 구문)
프로그래머스 SQL 코테 중 일부를 예시로 들자면,
-- 문제:
-- 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여,
-- 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요.
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*)>=2
-- HAVING 뒤에는 SELECT가 필수적으로 오지 않아도 됨을 알 수 있움
헷갈리지 말아야 할 부분!
SELECT USER_ID, COUNT(*) AS "COUNT"
FROM ONLINE_SALE
WHERE COUNT(*)>=2
GROUP BY USER_ID, PRODUCT_ID
--라고 되어있다고 치자, USER_ID와 PRODUCT_ID으로 GROUP화 되기 이전에 WHERE COUNT가 먼저 명령되기 때문에 작동이 되지 않음.
-- 다시 깨닫는 HAVING의 필요성과 GROUP BY와의 관계성
SELECT에 나열된 컬럼명의 순서가 두가지 SELECT문이 동일해야 함
-- 만약 다음과 같이 썼으면 실행이 되지 않음
-- 저기 테이블의 SELECT 또한 가,나,다,라 순서로 입력시켜야 함
SELECT 가,
나,
다,
라
FROM 어쩌고
WHERE 저기
UNION ALL
SELECT 가,
라,
다,
나
FROM 저쩌고
WHERE 저기
SELECT IFNULL(어쩌고, '대체문')