2회차
- SELECT에서 '*'을 '아스테리크'라고 함
- MySQL에서는 구문 마지막에 세미콜론(;)으로 끝내줘야 함
- DISTINCT는 SELECT에서만 사용할 수 있음. 중복 없이 데이터를 조회하고 싶을 때 사용
- 조건(내가 만든 기준)에 따라 데이터를 구분하고 싶을 때 CASE WHEN 사용
SELECT CASE WHEN 조건식1 THEN 결과1
WHEN 조건식2 THEN 결과2
ELSE 결과3
END AS 새로운 컬럼명
- SQL 코딩테스트는 타임어택
- SQL 연산자
| 연산자 | 연산의 예 | 의미 |
| >, < | N<10, N>10 | N이 10 미만, N이 10 초과 |
| >=, <= | N<=10, N>=10 | N이 10 이하, N이 10 이상 |
| = | N=10 | N이 10인 값 |
| != | N!=10 | N이 10이 아닌 값 |
| LIKE | LIKE('%과자%') | 문자열이 ~와 같을 때(문자열을 기준으로 앞,뒤 문자열과 상관없이 볼 때 %를 앞뒤에 작성해줍니다.) |
| AND | A AND B | A 그리고 B를 모두 만족하는 값 |
| OR | A OR B | A 또는 B인 값 |
| NOT, ! | NOT A, !A | A가 아닌 값 |
| BETWEEN | A BETWEEN 10 AND 20 | A가 10과 20 사이에 포함된 값 = 10 이상 20 이하 |
| IN | A IN (B) | B에 A가 포함된 값 * () 괄호 필수입니다. |
| NOT IN | A NOT IN B | B에 A가 포함되지 않은 값 |
| IS NULL | A IS NULL | A 가 비어있는 값 |
| IS NOT NULL | A IS NOT NULL | A 가 비어있지 않는 값 |
- SQL은 무조건 안쪽부터 바깥쪽으로 처리되고, 괄호가 있으면 안에 있는 것부터 처리됨 => 먼저 연산할 조건에 괄호 사용하기
- BETWEEN은 조건값 포함함 (이상, 이하)
- IN과 LIKE 구분! IN은 딱 그 text만. LIKE는 해당문자만 포함되어 있기만 하면 됨
- IF 보다 CASE WHEN 많이 씀 (IF가 할 수 있는 건 CASE WHEN이 다 할 수 있음)
- ORDER BY에서 ASC은 오름차순, DESC은 내림차순
- ORDER 기준 번호로도 적을 수 있는데 권장하진 않음
- 연산자가 여러개인 경우 괄호 사용하지 않으면 쿼리가 돌아가긴 하지만 혼선이 생길 수 있어 결과 깨질 수 있음
3회차
- GROUP BY에서 사용한 기준컬럼은 SELECT에 모두 있어야 함. 그렇지 않으면 행 수가 안 맞아서 계산 깨짐
SELECT 기준컬럼, 집계함수
FROM 테이블명
WHERE 조건 #(생략가능)
GROUP BY 기준컬럼
- 집계함수와 GROUP BY는 세트
- SQL 동작순서: FROM - ON - JOIN - WHERE - GROUP BY - HAVING - SELECT - DISTINCT - ORDER BY
- WHERE절은 GROUP BY '전' 결과 필터링, HAVING절은 GROUP BY '후' 결과 필터링
- HAVING 예시 : 국가별 평균 인구수를 보고 싶은데, 그 중에서 오천만 명이 넘는 국가만 필터링해서 보고싶은 경우
- SUB QEURY 특징
- ( ) 안에 SELECT와 FROM 써줘야함
- 쿼리 마지막에 세미콜론(;) 기호 사용할 수 없음 -> 세미콜론은 쿼리를 끝낸다는 의미
- ORDER BY절을 사용할 수 없음 -> 어차피 메인쿼리에서 다른 연산을 진행하기 때문에 의미가 없음
- 서브쿼리 종류
- 중첩(일반) 쿼리
- WHERE절에서 사용 (실무에서 잘 사용하진 않음)
- 스칼라 서브쿼리
- SELECT절에서 사용 (실무에서 잘 사용하진 않음)
- 하나의 컬럼처럼 사용
- 인라인 뷰 서브쿼리 ★ ★ ★
- FROM절에서 사용
- 하나의 테이블처럼 사용
- AS 구문을 사용해서 명칭(alias)을 반드시 기재해야 함
- JOIN, UNION 시 가장 유용하게 사용됨
- 중첩(일반) 쿼리
- HAVING에 쓰인 서브쿼리 ==> 메인 쿼리가 먼저. 조건이기 때문에. 논리흐름 순서 생각하면 됨
- LIMIT 구문 ==> ORDER BY는 정렬이기 떄문에 논리 흐름에 들어가고, LIMIT은 맨 마지막에 결과값을 몇 줄로 볼건지에 대한 내용이기 때문에 논리 흐름 순서 안에 굳이 들어가지 않음
- 날짜포맷 종류

'Data_10기' 카테고리의 다른 글
| SQL 라이브 세션 4회차 - UNION과 JOIN (0) | 2025.10.30 |
|---|---|
| Python 기초 문법 - List, Dictionary, IF문, FOR문 (0) | 2025.10.29 |
| 데이터 리터러시 - 문제정의 (0) | 2025.10.23 |
| 직무 조사 - 데이터 사이언티스트 (0) | 2025.10.22 |
| SQL 데이터 정제와 Pivot Table 실습 (0) | 2025.10.02 |