SELECT 컬럼 FROM 테이블 WHERE 컬럼='값'
= : 동등 연산자<> : 부등 연산자WHERE 문에 AND 연산자 / OR 연산자로 조건 집합 추가IN 사용 ex) WHERE 컬럼 IN ('1', '2');WHERE 컬럼=NULL (X) : 아무것도 검색되지 않는다.WHERE 컬럼 IS NULL, WHERE 컬럼 IS NOT NULL (O)합계 또는 평균 등 집계 연산. 테이블을 홀케이크처럼 자른다고 이해할 수 있다.
SELECT 컬럼 FROM 테이블 GROUP BY 컬럼
GROUP BY 결과 집합에 또 한번 조건을 건다. (WHERE 구와 비슷하게 사용)
SELECT ~ FROM ~ GROUP BY ~ HAVING 조건
WHERE 구 : 레코드에 조건 지정HAVING 구 : 집합에 조건 지정SELECT 구문의 결과 순서를 보장하려면 반드시 명시
SELECT ~ FROM ~ ORDER BY 컬럼 ASC/DESC
DESC : 내림차순ASC : 오름차순 (default)자주 사용하는 SELECT 구문을 데이터베이스에 저장하는 것
CREATE VIEW 뷰이름 (필드1, 필드2, ...) AS SELECT ~
사용 시
SELECT ~ FROM 뷰이름
FROM 구에 직접 지정하는 SELECT 구문, 뷰는 결국 저장해둔 SELECT 를 서브쿼리 하는 것
SELECT ~ FROM A WHERE ~ IN (SELECT ~ FROM B)
SELECT 서브쿼리도 가능CASE 식 : switch 문과 비슷하다.CASE WHEN 평가식 THEN 식
WHEN 평가식 THEN 식
WHEN 평가식 THEN 식
.
.
.
ELSE 식 END
SELECT ~
CASE WHEN 컬럼='값' THEN '값'
WHEN 컬럼='값' THEN '값'
ELSE NULL END AS ~
FROM ~
CASE 식의 강력한 점은 '식' 이라는 점SELECT, WHERE, GROUP BY, HAVING, ORDER BY 와 같은 곳 어디에나 사용 가능SELECT ~ FROM a UNION SELECT ~ FROM b
UNION은 중복 데이터를 제거한다. 만약 중복 제거를 원하지 않는다면 UNION ALL 사용
SELECT ~ FROM a INTERSECT SELECT ~ FROM b
SELECT ~ FROM a EXCEPT SELECT ~ FROM b
집약 기능이 없는 GROUP BY 구
집약 구문 뒤에 OVER 구 작성, 내부에 PARTITION BY 또는 ORDER BY 작성
SELECT ~ COUNT(*) OVER(PARTITION BY ~) FROM ~
카운트 결과는 GROUP BY 와 같으나 레코드 수가 실제와 같이 나온다.
예를 들어 RANK() 함수를 사용할 때,
SELECT ~ COUNT(*) OVER(ORDER BY ~ DESC) AS rnk FROM ~
같은 조건값인 경우 순위가 같고, 갯수만큼 건너뜀 (3위가 2명일 시, 4위는 없고 5위부터 랭킹)
→ 건너뛰지 않으려면 DENSE_RANK() 사용